curds: Send a notification when a node has been inserted
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
f777a86da9
commit
4fc44832ec
|
@ -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)
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue