curds: Send a notification when a node has been inserted

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-04-16 17:23:19 -04:00
parent f777a86da9
commit 4fc44832ec
2 changed files with 24 additions and 0 deletions

View File

@ -1,4 +1,5 @@
# Copyright 2019 (c) Anna Schumaker.
from .. import notify
class PlaylistNode:
def __init__(self, name="", icon=""):
@ -33,6 +34,7 @@ class PlaylistNode:
self.children.append(child)
child.parent = self
self.__link_children__(prev, child)
notify.notify("node-inserted", child, child.node_index())
return self.children.index(child)
def get_node(self, path):
@ -67,6 +69,7 @@ class PlaylistNode:
self.children.insert(i, child)
child.parent = self
self.__link_children__(child, n)
notify.notify("node-inserted", child, child.node_index())
return self.children.index(child)
return self.append_child(child)

View File

@ -1,8 +1,12 @@
# Copyright 2019 (c) Anna Schumaker.
from . import node
from .. import notify
import unittest
class TestPlaylistNode(unittest.TestCase):
def on_insert_node(self, node, index):
self.cb_insert = (node, index)
def test_node_init(self):
n = node.PlaylistNode()
self.assertEqual( n.children, [ ])
@ -25,6 +29,9 @@ class TestPlaylistNode(unittest.TestCase):
self.assertFalse(a < a)
def test_node_append_child(self):
notify.register("node-inserted", self.on_insert_node)
self.cb_insert = None
root = node.PlaylistNode()
a = node.PlaylistNode("a")
b = node.PlaylistNode("b")
@ -34,18 +41,23 @@ class TestPlaylistNode(unittest.TestCase):
self.assertEqual(root.append_child(b), 0)
self.assertEqual(root.n_children(), 1)
self.assertEqual(root.children, [ b ])
self.assertEqual(self.cb_insert, (b, 0))
self.assertEqual(root.append_child(a), 1)
self.assertEqual(root.n_children(), 2)
self.assertEqual(root.children, [ b, a ])
self.assertEqual(b.next_child, a)
self.assertEqual(a.prev_child, b)
self.assertEqual(self.cb_insert, (a, 1))
self.assertEqual(root.append_child(c), 2)
self.assertEqual(root.n_children(), 3)
self.assertEqual(root.children, [ b, a, c ])
self.assertEqual(a.next_child, c)
self.assertEqual(c.prev_child, a)
self.assertEqual(self.cb_insert, (c, 2))
notify.cancel("node-inserted", self.on_insert_node)
def test_node_index(self):
root = node.PlaylistNode()
@ -63,6 +75,9 @@ class TestPlaylistNode(unittest.TestCase):
self.assertEqual(c.node_index(), 0)
def test_node_insert_child(self):
notify.register("node-inserted", self.on_insert_node)
self.cb_insert = None
root = node.PlaylistNode()
a = node.PlaylistNode("a")
b = node.PlaylistNode("b")
@ -73,12 +88,14 @@ class TestPlaylistNode(unittest.TestCase):
self.assertEqual(root.insert_child(b), 0)
self.assertEqual(root.n_children(), 1)
self.assertEqual(root.children, [ b ])
self.assertEqual(self.cb_insert, (b, 0))
self.assertEqual(root.insert_child(d), 1)
self.assertEqual(root.n_children(), 2)
self.assertEqual(root.children, [ b, d ])
self.assertEqual(b.next_child, d)
self.assertEqual(d.prev_child, b)
self.assertEqual(self.cb_insert, (d, 1))
self.assertEqual(root.insert_child(c), 1)
self.assertEqual(root.n_children(), 3)
@ -87,12 +104,16 @@ class TestPlaylistNode(unittest.TestCase):
self.assertEqual(c.prev_child, b)
self.assertEqual(c.next_child, d)
self.assertEqual(d.prev_child, c)
self.assertEqual(self.cb_insert, (c, 1))
self.assertEqual(root.insert_child(a), 0)
self.assertEqual(root.n_children(), 4)
self.assertEqual(root.children, [ a, b, c, d ])
self.assertEqual(a.next_child, b)
self.assertEqual(b.prev_child, a)
self.assertEqual(self.cb_insert, (a, 0))
notify.cancel("node-inserted", self.on_insert_node)
def test_node_lookup(self):
root = node.PlaylistNode()