def test_bind_with_mixed_flag_true( self, mock_bind_attrs, mock_bind_content, mock_bind_objects ): mock_bind_attrs.side_effect = add_attr mock_bind_content.side_effect = add_text mock_bind_objects.side_effect = add_child node = ElementNode( position=0, meta=self.context.build(Foo), context=self.context, config=ParserConfig(), attrs={"a": "b"}, ns_map={"ns0": "xsdata"}, mixed=True, ) objects = [] self.assertTrue(node.bind("foo", "text", " ", objects)) self.assertEqual(1, len(objects)) objects = [] self.assertTrue(node.bind("foo", "text", " tail ", objects)) self.assertEqual(2, len(objects)) self.assertEqual(None, objects[-1][0]) self.assertEqual(" tail ", objects[-1][1])
def test_bind( self, mock_bind_attrs, mock_bind_content, mock_bind_wild_content, mock_bind_objects, ): mock_bind_attrs.side_effect = add_attr mock_bind_content.side_effect = add_text mock_bind_objects.side_effect = add_child node = ElementNode( position=0, meta=self.context.build(Foo), context=self.context, config=ParserConfig(), attrs={"a": "b"}, ns_map={"ns0": "xsdata"}, ) objects = [1, 2, 3] self.assertTrue(node.bind("foo", "text", "tail", objects)) self.assertEqual("foo", objects[-1][0]) self.assertEqual(Foo(1, 2, 3), objects[-1][1]) mock_bind_attrs.assert_called_once_with( mock.ANY, node.meta, node.attrs, node.ns_map ) mock_bind_content.assert_called_once_with( mock.ANY, node.meta, "text", node.ns_map ) mock_bind_objects.assert_called_once_with(mock.ANY, node.meta, 0, objects) self.assertEqual(0, mock_bind_wild_content.call_count)
def test_bind_with_derived_element(self): a = make_dataclass("A", fields=[]) node = ElementNode( position=0, meta=self.context.build(a), context=self.context, config=ParserConfig(), attrs={}, ns_map={}, derived=True, ) objects = [] self.assertTrue(node.bind("foo", None, None, objects)) self.assertEqual("foo", objects[-1][0]) self.assertEqual(DerivedElement("foo", a()), objects[-1][1])
def test_bind_with_wildcard_var( self, mock_bind_attrs, mock_bind_content, mock_bind_wild_content, mock_bind_objects, mock_find_var, ): mock_bind_attrs.side_effect = add_attr mock_bind_content.return_value = False mock_bind_wild_content.side_effect = add_text mock_bind_objects.side_effect = add_child mock_find_var.return_value = XmlVar(wildcard=True, qname="b", name="b") node = ElementNode( position=0, meta=self.context.build(Foo), context=self.context, config=ParserConfig(), attrs={"a": "b"}, ns_map={"ns0": "xsdata"}, ) objects = [1, 2, 3] self.assertTrue(node.bind("foo", "text", "tail", objects)) self.assertEqual("foo", objects[-1][0]) self.assertEqual(Foo(1, 2, 3), objects[-1][1]) mock_bind_attrs.assert_called_once_with( mock.ANY, node.meta, node.attrs, node.ns_map ) mock_bind_content.assert_called_once_with( mock.ANY, node.meta, "text", node.ns_map ) mock_bind_objects.assert_called_once_with(mock.ANY, node.meta, 0, objects)