def test_bind_element_wild_text_when_find_var_returns_none(self): meta = mock.Mock(XmlMeta) meta.find_var = MagicMock(return_value=None) elem = Element("foo") params = {} ParserUtils.bind_element_wild_text(params, meta, elem) self.assertEqual(0, len(params))
def test_bind_element_wild_text_when_element_has_no_text_and_tail(self): var = XmlVar(name="a", qname=QName("a")) meta = mock.Mock(XmlMeta) meta.find_var = MagicMock(return_value=var) elem = Element("foo") params = {} ParserUtils.bind_element_wild_text(params, meta, elem) self.assertEqual(0, len(params))
def parse_element(self, element: Element, objects: List[Any]) -> Tuple: params: Dict = dict() ParserUtils.bind_element_attrs(params, self.meta, element) ParserUtils.bind_element_text(params, self.meta, element) ParserUtils.bind_element_children(params, self.meta, self.position, objects) ParserUtils.bind_element_wild_text(params, self.meta, element) qname = QName(element.tag) obj = self.meta.clazz(**params) return qname, obj
def parse_element(self, element: Element, objects: List[Any]) -> Tuple: """ Parse the given element attributes/text, find all child objects and mixed content and initialize a new dataclass instance. :return: A tuple of the object's qualified name and the new object. """ params: Dict = {} ParserUtils.bind_element_attrs(params, self.meta, element) ParserUtils.bind_element_text(params, self.meta, element) ParserUtils.bind_element_children(params, self.meta, self.position, objects) ParserUtils.bind_element_wild_text(params, self.meta, element) qname = QName(element.tag) obj = self.meta.clazz(**params) return qname, obj
def test_bind_element_wild_text(self): var = XmlVar(name="a", qname=QName("a")) meta = mock.Mock(XmlMeta) meta.find_var = MagicMock(return_value=var) elem = Element("foo") elem.text = "txt" elem.tail = "tail" params = {} ParserUtils.bind_element_wild_text(params, meta, elem) expected = AnyElement(text="txt", tail="tail") self.assertEqual(dict(a=expected), params) elem.text = "a" elem.tail = "b" expected = AnyElement(text="a", tail="b") ParserUtils.bind_element_wild_text(params, meta, elem) self.assertEqual(dict(a=expected), params)
def test_bind_element_wild_text_when_var_is_list(self): var = XmlVar(name="a", qname=QName("a"), default=list) meta = mock.Mock(XmlMeta) meta.find_var = MagicMock(return_value=var) elem = Element("foo") elem.text = "txt" elem.tail = "tail" params = {} ParserUtils.bind_element_wild_text(params, meta, elem) self.assertEqual(dict(a=["txt", "tail"]), params) elem.text = None ParserUtils.bind_element_wild_text(params, meta, elem) self.assertEqual(dict(a=["txt", "tail", "tail"]), params) elem.tail = None elem.text = "first" ParserUtils.bind_element_wild_text(params, meta, elem) self.assertEqual(dict(a=["first", "txt", "tail", "tail"]), params)