curds: Create a GenrePlaylist class

This should make the UI side easier, since we can check against the
playlist type when searching for the playlist.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-01 20:26:39 -04:00
parent fe3863a977
commit a3fa8f1526
6 changed files with 33 additions and 11 deletions

View File

@ -7,6 +7,7 @@ from . import threadqueue
Album = tags.Album
DataFile = data.DataFile
GenrePlaylist = playlist.genre.GenrePlaylist
LibraryPlaylist = playlist.library.LibraryPlaylist
Playlist = playlist.playlist.Playlist
ThreadQueue = threadqueue.ThreadQueue

6
curds/playlist/genre.py Normal file
View File

@ -0,0 +1,6 @@
# Copyright 2019 (c) Anna Schumaker.
from . import playlist
class GenrePlaylist(playlist.Playlist):
def __init__(self, name):
playlist.Playlist.__init__(self, name.title(), "audio-x-generic-symbolic")

View File

@ -1,5 +1,6 @@
# Copyright 2019 (c) Anna Schumaker.
from . import collection
from . import genre
from . import library
from . import playlist
from . import previous
@ -36,7 +37,7 @@ class GenreManager(PlaylistAllocator):
def add_track(self, track):
plist = self.lookup(track["genre"].title())
if plist == None:
plist = playlist.Playlist(track["genre"].title(), "audio-x-generic-symbolic")
plist = genre.GenrePlaylist(track["genre"])
self.add_playlist(plist)
plist.add(track)

View File

@ -0,0 +1,12 @@
# Copyright 2019 (c) Anna Schumaker.
from . import genre
from . import playlist
import unittest
class TestGenrePlaylist(unittest.TestCase):
def test_genre_plist(self):
plist = genre.GenrePlaylist("genre")
self.assertIsInstance(plist, genre.GenrePlaylist)
self.assertIsInstance(plist, playlist.Playlist)
self.assertEqual(plist.name, "Genre")
self.assertEqual(plist.icon, "audio-x-generic-symbolic")

View File

@ -1,5 +1,6 @@
# Copyright 2019 (c) Anna Schumaker.
from . import collection
from . import genre
from . import library
from . import manager
from . import playlist
@ -78,24 +79,24 @@ class TestPlaylistManager(unittest.TestCase):
self.assertEqual(len(self.playman["Library"]), 0)
def test_manager_genre(self):
genre = self.playman["Genre"]
self.assertEqual(str(genre), "<big>Genre</big>")
self.assertEqual(genre.name, "Genre")
self.assertEqual(genre.icon, "audio-x-generic-symbolic")
genreman = self.playman["Genre"]
self.assertEqual(str(genreman), "<big>Genre</big>")
self.assertEqual(genreman.name, "Genre")
self.assertEqual(genreman.icon, "audio-x-generic-symbolic")
self.playman["Library"].add(test_library)
library.join()
plist = genre.lookup("Test Genre 1")
self.assertIsInstance(plist, playlist.Playlist)
plist = genreman.lookup("Test Genre 1")
self.assertIsInstance(plist, genre.GenrePlaylist)
self.assertEqual(plist.name, "Test Genre 1")
self.assertEqual(plist.icon, "audio-x-generic-symbolic")
self.assertEqual(len(genre), 5)
self.assertEqual(len(genreman), 5)
notify.cancel("new-track", genre.add_track)
notify.cancel("new-track", genreman.add_track)
self.playman.reset()
self.assertEqual(len(genre), 0)
self.assertIn((genre.add_track, False), notify.registered["new-track"])
self.assertEqual(len(genreman), 0)
self.assertIn((genreman.add_track, False), notify.registered["new-track"])
def test_manager_on_scan(self):
plist = self.playman["Library"].add(test_library)

View File

@ -8,6 +8,7 @@ class TestEmmental(unittest.TestCase):
def test_import_curds(self):
self.assertEqual(curds.Album, curds.tags.Album)
self.assertEqual(curds.DataFile, curds.data.DataFile)
self.assertEqual(curds.GenrePlaylist, curds.playlist.genre.GenrePlaylist)
self.assertEqual(curds.LibraryPlaylist, curds.playlist.library.LibraryPlaylist)
self.assertEqual(curds.Playlist, curds.playlist.playlist.Playlist)
self.assertEqual(curds.ThreadQueue, curds.threadqueue.ThreadQueue)