From 96ea582522ad76c1e077eb40575ef0a8e6976458 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Mon, 11 Mar 2019 11:22:37 -0400 Subject: [PATCH] curds: Add a Collection playlist This playlist collects all tracks that the user has added, across all libraries. Signed-off-by: Anna Schumaker --- curds/playlist/manager.py | 9 ++++++++- curds/playlist/test_manager.py | 21 ++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/curds/playlist/manager.py b/curds/playlist/manager.py index 8422c9f..7d7329d 100644 --- a/curds/playlist/manager.py +++ b/curds/playlist/manager.py @@ -1,5 +1,6 @@ # Copyright 2019 (c) Anna Schumaker. from . import library +from . import playlist import os class LibraryManager(dict): @@ -12,4 +13,10 @@ class LibraryManager(dict): class PlaylistManager(dict): def __init__(self): - self["Library"] = LibraryManager() + self["Collection"] = playlist.Playlist("collection") + self["Library"] = LibraryManager() + + playlist.Playlist.notify_me("on-scan", self.on_scan) + + def on_scan(self, plist, track): + self["Collection"].add(track) diff --git a/curds/playlist/test_manager.py b/curds/playlist/test_manager.py index 92ad7d4..af2844d 100644 --- a/curds/playlist/test_manager.py +++ b/curds/playlist/test_manager.py @@ -1,6 +1,8 @@ # Copyright 2019 (c) Anna Schumaker. from . import library from . import manager +from . import playlist +from .. import tags from .. import threadqueue import os import unittest @@ -10,15 +12,20 @@ test_library = os.path.abspath("./trier/Test Library") class TestPlaylistManager(unittest.TestCase): def setUp(self): + tags.tag_map.clear() if not library.library_thread.is_alive(): library.library_thread = threadqueue.ThreadQueue() + def tearDown(self): + library.library_thread.stop() + 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) + self.assertIsInstance(playman["Collection"], playlist.Playlist) + self.assertIsInstance(playman["Library"], manager.LibraryManager) + self.assertIsInstance(playman["Library"], dict) def test_manager_library(self): playman = manager.PlaylistManager() @@ -33,4 +40,12 @@ class TestPlaylistManager(unittest.TestCase): self.assertIn(alist, playman["Library"].values()) self.assertIn(plist, playman["Library"].values()) - library.library_thread.stop() + def test_manager_on_scan(self): + playman = manager.PlaylistManager() + alist = playman["Library"][test_album] + plist = playman["Library"][test_library] + + library.library_thread.join() + self.assertEqual(len(plist), 1250) + self.assertEqual(len(alist), 11) + self.assertEqual(len(playman["Collection"]), len(alist) + len(plist))