def test_move_both_new_and_existing_after(self): el_list = [ self.new_list[1], self.new_list[0], self.existing_list[0], self.existing_list[1], ] lib.add_obj_ref( self.tag_el, el_list, self.existing_list[2], put_after_adjacent=True, ) assert_xml_equal( """ <tag> <obj_ref id="e3"/> <obj_ref id="b"/> <obj_ref id="a"/> <obj_ref id="e1"/> <obj_ref id="e2"/> </tag> """, etree_to_str(self.tag_el), )
def test_move_existing_ids_before(self): lib.add_obj_ref( self.tag_el, self.existing_list[2:0:-1], self.existing_list[0], ) assert_xml_equal( """ <tag> <obj_ref id="e3"/> <obj_ref id="e2"/> <obj_ref id="e1"/> </tag> """, etree_to_str(self.tag_el), )
def test_add_new_ids_before_adjacent(self): lib.add_obj_ref( self.tag_el, self.new_list, self.existing_list[0], ) assert_xml_equal( """ <tag> <obj_ref id="a"/> <obj_ref id="b"/> <obj_ref id="e1"/> <obj_ref id="e2"/> <obj_ref id="e3"/> </tag> """, etree_to_str(self.tag_el), )
def test_add_new_ids(self): lib.add_obj_ref( self.tag_el, self.new_list, None, ) assert_xml_equal( """ <tag> <obj_ref id="e1"/> <obj_ref id="e2"/> <obj_ref id="e3"/> <obj_ref id="a"/> <obj_ref id="b"/> </tag> """, etree_to_str(self.tag_el), )
def test_move_existing_ids_after(self): lib.add_obj_ref( self.tag_el, self.existing_list[2::-2], self.existing_list[1], put_after_adjacent=True, ) assert_xml_equal( """ <tag> <obj_ref id="e2"/> <obj_ref id="e3"/> <obj_ref id="e1"/> </tag> """, etree_to_str(self.tag_el), )
def update( env: LibraryEnvironment, tag_id: str, idref_add: Sequence[str], idref_remove: Sequence[str], adjacent_idref: Optional[str] = None, put_after_adjacent: bool = False, ) -> None: """ Update specified tag by given id references. env -- provides all for communication with externals tag_id -- id of an existing tag to be updated idref_add -- reference ids to be added idref_remove -- reference ids to be removed adjacent_idref -- id of the element next to which the added elements will be put put_after_adjacent -- put elements after (True) or before (False) the adjacent element """ with cib_tags_section(env) as tags_section: validator = tag.ValidateTagUpdateByIds( tag_id, idref_add, idref_remove, adjacent_idref, ) if env.report_processor.report_list( validator.validate( get_resources(get_root(tags_section)), tags_section, )).has_errors: raise LibraryError() # check for mypy tag_element = validator.tag_element() if tag_element is not None: tag.add_obj_ref( tag_element, validator.add_obj_ref_element_list(), validator.adjacent_obj_ref_element(), put_after_adjacent, ) tag.remove_obj_ref(validator.remove_obj_ref_element_list())