curds: User node cleanups

- Use constants for the starred playlist icon and sort fields list
- Don't keep a reference to the new and starred playlists, and allocate
  new instances after a reset()

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-12-17 09:47:01 -05:00
parent 1291adb48b
commit 65af043778
2 changed files with 19 additions and 45 deletions

View File

@ -1,7 +1,6 @@
# Copyright 2019 (c) Anna Schumaker.
from . import new
from . import user
from .. import notify
from .. import trak
from .. import tree
import unittest
@ -15,50 +14,32 @@ class TestUserPlaylists(unittest.TestCase):
self.assertEqual(unode.icon, "audio-x-generic")
self.assertEqual(unode.n_children(), 2)
self.assertEqual(unode.new, unode.nth_child(0))
self.assertEqual(unode.starred, unode.nth_child(1))
self.assertEqual(unode.nth_child(0).name, "New Tracks")
self.assertEqual(unode.nth_child(1).name, "Starred")
self.assertEqual(unode.nth_child(1).icon, user.STAR_ICON)
self.assertIsInstance(unode.new, new.NewPlaylist)
self.assertIsInstance(unode.lookup("New Tracks"), new.NewPlaylist)
def test_user_reset(self):
unode = user.UserNode()
new = unode.new
star = unode.starred
new = unode.lookup("New Tracks")
star = unode.lookup("Starred")
new.list.append(42)
star.list.append(42)
unode.reset()
self.assertEqual(unode.n_children(), 2)
self.assertEqual(unode.nth_child(0), new)
self.assertEqual(len(new), 0)
self.assertIn(id(new), unode.child_ids)
self.assertNotEqual(unode.nth_child(0), new)
self.assertEqual(unode.nth_child(0).name, "New Tracks")
self.assertEqual(unode.nth_child(1), star)
self.assertEqual(len(star), 0)
self.assertIn(id(star), unode.child_ids)
self.assertNotEqual(unode.nth_child(1), star)
self.assertEqual(unode.nth_child(1).name, "Starred")
self.assertEqual(unode.nth_child(1).icon, user.STAR_ICON)
def test_user_starred(self):
unode = user.UserNode()
star = unode.starred
star = unode.lookup("Starred")
self.assertEqual(star.name, "Starred")
self.assertEqual(star.icon, "starred")
self.assertEqual(star.sort_order,
[ "artist", "date", "album", "discnumber", "tracknumber" ])
def test_user_setstate(self):
unode = user.UserNode()
new = unode.new
star = unode.starred
state = { "name" : "Test", "icon" : "test", "children" : [ ],
"sibling" : None, "parent" : None,
"new" : new, "starred" : star }
unode.new = None
unode.starred = None
unode.__setstate__(state)
self.assertEqual(unode.name, "Test")
self.assertEqual(unode.icon, "test")
self.assertEqual(unode.new, new)
self.assertEqual(unode.starred, star)

View File

@ -3,23 +3,16 @@ from . import new
from . import playlist
from .. import tree
STAR_ICON = "starred"
STAR_SORT = [ "artist", "date", "album", "discnumber", "tracknumber" ]
class UserNode(tree.ETree):
def __init__(self):
sort = [ "artist", "date", "album", "discnumber", "tracknumber" ]
self.starred = playlist.Playlist("Starred", "starred", sort)
self.new = new.NewPlaylist()
tree.ETree.__init__(self, "Playlists", "audio-x-generic")
self.insert_child(self.new)
self.insert_child(self.starred)
def __setstate__(self, state):
self.new = state["new"]
self.starred = state["starred"]
tree.ETree.__setstate__(self, state)
self.insert_child(new.NewPlaylist())
self.insert_child(playlist.Playlist("Starred", STAR_ICON, STAR_SORT))
def reset(self):
tree.ETree.reset(self)
self.new.reset()
self.starred.reset()
self.insert_child(self.new)
self.insert_child(self.starred)
self.insert_child(new.NewPlaylist())
self.insert_child(playlist.Playlist("Starred", STAR_ICON, STAR_SORT))