def test_ordered_node_remove_without_reorder(db, version_relation, version_pids, build_pid, recids): """Test PIDNode.remove_child.""" parent_pid = build_pid(version_pids[0]['parent']) ordered_parent_node = PIDNodeOrdered(parent_pid, version_relation) # c-c-c-c-c-x # remove the last child ordered_parent_node.remove_child(version_pids[0]['children'][-1], reorder=False) del version_pids[0]['children'][-1] assert_children_indices(ordered_parent_node, version_pids[0]['children']) # x-c-c-c-c # remove the first child ordered_parent_node.remove_child(version_pids[0]['children'][0], reorder=False) del version_pids[0]['children'][0] assert len(ordered_parent_node.children.all()) == \ len(version_pids[0]['children']) for idx, child_pid in enumerate(version_pids[0]['children']): assert ordered_parent_node.index(child_pid) == idx + 1 # c-x-c-c # remove the middle child ordered_parent_node.remove_child(version_pids[0]['children'][1], reorder=False) del version_pids[0]['children'][1] assert len(ordered_parent_node.children.all()) == \ len(version_pids[0]['children']) expected = [1, 3, 4] for idx, child_pid in enumerate(version_pids[0]['children']): assert ordered_parent_node.index(child_pid) == expected[idx]
def test_ordered_node_remove_with_reorder(db, version_relation, version_pids, build_pid, recids): """Test PIDNode.remove_child.""" parent_pid = build_pid(version_pids[0]['parent']) ordered_parent_node = PIDNodeOrdered(parent_pid, version_relation) # x-c-c-c-c-c # remove the first child ordered_parent_node.remove_child(version_pids[0]['children'][0], reorder=True) del version_pids[0]['children'][0] assert_children_indices(ordered_parent_node, version_pids[0]['children']) # c-c-c-c-x # remove the last child ordered_parent_node.remove_child(version_pids[0]['children'][-1], reorder=True) del version_pids[0]['children'][-1] assert_children_indices(ordered_parent_node, version_pids[0]['children']) # c-x-c-c # remove the middle child ordered_parent_node.remove_child(version_pids[0]['children'][1], reorder=True) del version_pids[0]['children'][1] assert_children_indices(ordered_parent_node, version_pids[0]['children'])
def test_ordered_node_index(db, version_relation, version_pids, build_pid, recids): """Test the PIDNodeOrdered index method.""" parent_pid = build_pid(version_pids[0]['parent']) ordered_parent_node = PIDNodeOrdered(parent_pid, version_relation) for idx, child_pid in enumerate(version_pids[0]['children']): assert ordered_parent_node.index(child_pid) == idx child_pid = build_pid(recids[str(PIDStatus.REGISTERED)]) ordered_parent_node.insert_child(child_pid) assert ordered_parent_node.index(child_pid) == \ len(version_pids[0]['children'])
def test_ordered_node_previous_child(db, version_relation, version_pids, build_pid, recids): """Test the PIDNodeOrdered previous_child method.""" parent_pid = build_pid(version_pids[0]['parent']) ordered_parent_node = PIDNodeOrdered(parent_pid, version_relation) assert ordered_parent_node.previous_child( version_pids[0]['children'][-1]) == version_pids[0]['children'][-2] # Check that the previous child can be retrieved if there is a "hole" in # the sequence of indices. ordered_parent_node.remove_child(version_pids[0]['children'][-2], reorder=False) del version_pids[0]['children'][-2] assert ordered_parent_node.previous_child( version_pids[0]['children'][-1]) == version_pids[0]['children'][-2] # Check that previous_child returns None if there is no previous child. assert ordered_parent_node.previous_child(version_pids[0]['children'][0]) \ is None
def test_ordered_node_next_child(db, version_relation, version_pids, build_pid, recids): """Test the PIDNodeOrdered next_child method.""" parent_pid = build_pid(version_pids[0]['parent']) ordered_parent_node = PIDNodeOrdered(parent_pid, version_relation) assert ordered_parent_node.next_child(version_pids[0]['children'][0]) == \ version_pids[0]['children'][1] # Check that the next child can be retrieved if there is a "hole" in the # sequence of indices. ordered_parent_node.remove_child(version_pids[0]['children'][1], reorder=False) del version_pids[0]['children'][1] assert ordered_parent_node.next_child(version_pids[0]['children'][0]) == \ version_pids[0]['children'][1] # Check that next_child returns None if there is no next child. assert ordered_parent_node.next_child(version_pids[0]['children'][-1]) \ is None
def test_ordered_node_insert(db, version_relation, version_pids, build_pid, recids): """Test the PIDNodeOrdered insert method.""" parent_pid = build_pid(version_pids[0]['parent']) ordered_parent_node = PIDNodeOrdered(parent_pid, version_relation) child_pids = create_pids(3) # c-c-c-c-c-x # inserting in the end ordered_parent_node.insert_child(child_pids[0], -1) version_pids[0]['children'].append(child_pids[0]) assert_children_indices(ordered_parent_node, version_pids[0]['children']) # x-c-c-c-c-c-c # inserting in the beginning ordered_parent_node.insert_child(child_pids[1], 0) version_pids[0]['children'].insert(0, child_pids[1]) assert_children_indices(ordered_parent_node, version_pids[0]['children']) # c-c-c-x-c-c-c-c # inserting in the middle ordered_parent_node.insert_child(child_pids[2], 3) version_pids[0]['children'].insert(3, child_pids[2]) assert_children_indices(ordered_parent_node, version_pids[0]['children'])
def test_ordered_node_is_last_child(db, version_relation, version_pids, build_pid, recids): """Test the PIDNodeOrdered is_last_child method.""" parent_pid = build_pid(version_pids[0]['parent']) ordered_parent_node = PIDNodeOrdered(parent_pid, version_relation) assert ordered_parent_node.is_last_child(version_pids[0]['children'][-1])