def test_dirty_node_removing_itself_updates_parent_flag(self): node = BaseNode('node') child1 = BaseNode('child 1') child2 = BaseNode('child 2') node.add_child(child1) node.add_child(child2) node.sync = True child1.sync = True child2.sync = False assert node.dirty child2.remove_itself() assert not node.dirty
def test_rm_dirty_child_updates_parent_flag(self): node = BaseNode('node') child1 = BaseNode('child 1') child2 = BaseNode('child 2') node.add_child(child1) node.add_child(child2) node.sync = True child1.sync = True child2.sync = False assert node.dirty node.rm_child(child2) assert not node.dirty
def test_set_node_not_sync(self): node = BaseNode('node') node._dirty = False node._sync = True node.sync = False assert node.dirty assert not node.sync
def test_set_node_with_clean_children_sync(self): node = BaseNode('node') node.add_child(BaseNode('child 1')) node.add_child(BaseNode('child 2')) for child in node.children.values(): child._dirty = False child._sync = True node.sync = True assert not node.dirty assert node.sync
def set_node_with_dirty_children_sync(self): node = BaseNode('node') node.add_child(BaseNode('child 1')) node.add_child(BaseNode('child 2')) node.children['child 1']._dirty = True node.children['child 1']._sync = True assert node.dirty assert not node.sync node.sync = True assert node.dirty assert node.sync
def test_set_node_with_parent_as_not_sync(self): root = BaseNode('root') node = BaseNode('node') root.add_child(node) for n in (root, node): n._dirty = False n._sync = True node.sync = False assert not node.sync assert node.dirty assert root.sync assert root.dirty
def _make_tree(node_def, default_sync=False): """Quick helper to generate a BaseNode hierarchy. Args: Tuple[str, List[Tuple], bool]: node definition, of the form: ('node name', [children definitions], sync). Both part 2 and 3 of the tuple are optional. default_sync (bool, optional): default value to set the 'sync' flag Returns: BaseNode: node built from the definition. """ name = node_def[0] children = node_def[1] if len(node_def) > 1 else [] sync_flag = node_def[2] if len(node_def) > 2 else default_sync node = BaseNode(name) node.sync = sync_flag for child_def in children: node.add_child(_make_tree(child_def, default_sync)) return node
def test_set_empty_node_sync(self): node = BaseNode('node') node.sync = True assert not node.dirty assert node.sync