forked from rc/aircox
!111 Co-authored-by: bkfox <thomas bkfox net> Reviewed-on: rc/aircox#114
This commit is contained in:
64
aircox/tests/controllers/test_playlist_import.py
Normal file
64
aircox/tests/controllers/test_playlist_import.py
Normal file
@ -0,0 +1,64 @@
|
||||
import os
|
||||
import pytest
|
||||
|
||||
from aircox.test import Interface
|
||||
from aircox.controllers import playlist_import
|
||||
|
||||
|
||||
csv_data = [
|
||||
{
|
||||
"artist": "Artist 1",
|
||||
"title": "Title 1",
|
||||
"minutes": "1",
|
||||
"seconds": "0",
|
||||
"tags": "tag1,tag12",
|
||||
"info": "info1",
|
||||
},
|
||||
{
|
||||
"artist": "Artist 2",
|
||||
"title": "Title 2",
|
||||
"minutes": "2",
|
||||
"seconds": "1",
|
||||
"tags": "tag2,tag12",
|
||||
"info": "info2",
|
||||
},
|
||||
{
|
||||
"artist": "Artist 3",
|
||||
"title": "Title 3",
|
||||
"minutes": "3",
|
||||
"seconds": "2",
|
||||
"tags": "",
|
||||
"info": "",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def importer(sound):
|
||||
path = os.path.join(os.path.dirname(__file__), "playlist.csv")
|
||||
return playlist_import.PlaylistImport(path, sound=sound)
|
||||
|
||||
|
||||
class TestPlaylistImport:
|
||||
@pytest.mark.django_db
|
||||
def test_run(self, importer):
|
||||
iface = Interface(None, {"read": None, "make_playlist": None})
|
||||
importer.read = iface.read
|
||||
importer.make_playlist = iface.make_playlist
|
||||
importer.run()
|
||||
assert iface._trace("read")
|
||||
assert iface._trace("make_playlist")
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_read(self, importer):
|
||||
importer.read()
|
||||
assert importer.data == csv_data
|
||||
|
||||
@pytest.mark.django_db
|
||||
def test_make_playlist(self, importer, sound):
|
||||
importer.data = csv_data
|
||||
importer.make_playlist()
|
||||
track_artists = sound.track_set.all().values_list("artist", flat=True)
|
||||
csv_artists = {r["artist"] for r in csv_data}
|
||||
assert set(track_artists) == csv_artists
|
||||
# TODO: check other values
|
Reference in New Issue
Block a user