curds: Create a playlist manager class
This replaces the code in playlist/__init__.py and turns it into a class. This should make things easier to handle during testing, since we can easily tear down the old instance and create a new one. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
464631c0d6
commit
7b1fac0bfb
|
@ -1,12 +1,2 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import library
|
||||
import os
|
||||
|
||||
plist_map = {"Library" : dict()}
|
||||
|
||||
def lookup_library(path):
|
||||
path = os.path.abspath(path)
|
||||
plist = plist_map["Library"].get(path, None)
|
||||
if plist != None:
|
||||
return plist
|
||||
return plist_map["Library"].setdefault(path, library.LibraryPlaylist(path))
|
||||
from . import playlist
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import library
|
||||
import os
|
||||
|
||||
class LibraryManager(dict):
|
||||
def __getitem__(self, key):
|
||||
key = os.path.abspath(key)
|
||||
if not key in self.keys():
|
||||
self[key] = library.LibraryPlaylist(key)
|
||||
return self.get(key)
|
||||
|
||||
|
||||
class PlaylistManager(dict):
|
||||
def __init__(self):
|
||||
self["Library"] = LibraryManager()
|
|
@ -0,0 +1,36 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import library
|
||||
from . import manager
|
||||
from .. import threadqueue
|
||||
import os
|
||||
import unittest
|
||||
|
||||
test_album = os.path.abspath("./trier/Test Album")
|
||||
test_library = os.path.abspath("./trier/Test Library")
|
||||
|
||||
class TestPlaylistManager(unittest.TestCase):
|
||||
def setUp(self):
|
||||
if not library.library_thread.is_alive():
|
||||
library.library_thread = threadqueue.ThreadQueue()
|
||||
|
||||
def test_manager_init(self):
|
||||
playman = manager.PlaylistManager()
|
||||
self.assertIsInstance(playman, manager.PlaylistManager)
|
||||
self.assertIsInstance(playman, dict)
|
||||
self.assertIsInstance(playman["Library"], manager.LibraryManager)
|
||||
self.assertIsInstance(playman["Library"], dict)
|
||||
|
||||
def test_manager_library(self):
|
||||
playman = manager.PlaylistManager()
|
||||
plist = playman["Library"][test_library + "/"]
|
||||
self.assertEqual(plist.name, test_library)
|
||||
self.assertIsInstance(plist, library.LibraryPlaylist)
|
||||
self.assertEqual(id(plist), id(playman["Library"][test_library]))
|
||||
|
||||
alist = playman["Library"][test_album]
|
||||
self.assertIsInstance(alist, library.LibraryPlaylist)
|
||||
self.assertNotEqual(id(plist), id(alist))
|
||||
self.assertIn(alist, playman["Library"].values())
|
||||
self.assertIn(plist, playman["Library"].values())
|
||||
|
||||
library.library_thread.stop()
|
|
@ -1,34 +0,0 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import playlist
|
||||
from . import threadqueue
|
||||
import os
|
||||
import unittest
|
||||
|
||||
test_album = os.path.abspath("./trier/Test Album")
|
||||
test_library = os.path.abspath("./trier/Test Library")
|
||||
|
||||
class TestPlaylistManager(unittest.TestCase):
|
||||
def setUpClass():
|
||||
if not playlist.library.library_thread.is_alive():
|
||||
playlist.library.library_thread = threadqueue.ThreadQueue()
|
||||
|
||||
def tearDownClass():
|
||||
playlist.library.library_thread.stop()
|
||||
|
||||
def test_playman_init(self):
|
||||
self.assertIsInstance(playlist.plist_map, dict)
|
||||
self.assertEqual(playlist.plist_map["Library"], {})
|
||||
self.assertTrue(playlist.library.library_thread.is_alive())
|
||||
|
||||
def test_playman_lookup_library(self):
|
||||
plist = playlist.lookup_library(test_library + "/")
|
||||
self.assertIsInstance(plist, playlist.library.LibraryPlaylist)
|
||||
self.assertEqual(plist.name, test_library)
|
||||
self.assertEqual(plist, playlist.plist_map["Library"][test_library])
|
||||
self.assertEqual(playlist.lookup_library(test_library), plist)
|
||||
self.assertEqual(len(playlist.plist_map["Library"].values()), 1)
|
||||
|
||||
alist = playlist.lookup_library(test_album)
|
||||
self.assertIsInstance(alist, playlist.library.LibraryPlaylist)
|
||||
self.assertIn(alist, playlist.plist_map["Library"].values())
|
||||
self.assertIn(plist, playlist.plist_map["Library"].values())
|
Loading…
Reference in New Issue