def test_copy_extensions(self): target = ClassFactory.create(extensions=ExtensionFactory.list(1)) source = ClassFactory.create(extensions=ExtensionFactory.list(2)) link_extension = ExtensionFactory.create() link_extension.restrictions.max_occurs = 2 ClassUtils.copy_extensions(source, target, link_extension) self.assertEqual(3, len(target.extensions)) self.assertEqual(2, target.extensions[1].restrictions.max_occurs) self.assertEqual(2, target.extensions[2].restrictions.max_occurs)
def test_dependencies(self): obj = ClassFactory.create( attrs=[ AttrFactory.create(types=[AttrTypeFactory.xs_decimal()]), AttrFactory.create( types=[ AttrTypeFactory.create(name="xs:annotated", forward_ref=True) ] ), AttrFactory.create( types=[ AttrTypeFactory.create(name="xs:openAttrs"), AttrTypeFactory.create(name="xs:localAttribute"), ] ), ], extensions=ExtensionFactory.list( 1, type=AttrTypeFactory.create(name="xs:localElement") ), inner=[ ClassFactory.create( attrs=AttrFactory.list(2, types=AttrTypeFactory.list(1, name="foo")) ) ], ) expected = { QName("{http://www.w3.org/2001/XMLSchema}localAttribute"), QName("{http://www.w3.org/2001/XMLSchema}localElement"), QName("{http://www.w3.org/2001/XMLSchema}openAttrs"), QName("{xsdata}foo"), } self.assertEqual(expected, obj.dependencies())
def test_flatten_class( self, mock_flatten_enumeration_unions, mock_expand_attribute_group, mock_flatten_extension, mock_flatten_attribute_types, mock_add_substitution_attrs, mock_create_mixed_attribute, mock_merge_duplicate_attributes, ): inner = ClassFactory.list(2) extensions = ExtensionFactory.list(2) target = ClassFactory.elements(2, inner=inner, extensions=extensions) self.analyzer.flatten_class(target) mock_flatten_enumeration_unions.assert_has_calls( [mock.call(target), mock.call(inner[0]), mock.call(inner[1])] ) mock_expand_attribute_group.assert_has_calls( [mock.call(target, target.attrs[0]), mock.call(target, target.attrs[1])] ) mock_flatten_extension.assert_has_calls( [ mock.call(target, target.extensions[1]), mock.call(target, target.extensions[0]), ] ) mock_flatten_attribute_types.assert_has_calls( [mock.call(target, target.attrs[0]), mock.call(target, target.attrs[1])] ) mock_add_substitution_attrs.assert_has_calls( [mock.call(target, target.attrs[0]), mock.call(target, target.attrs[1])] ) mock_create_mixed_attribute.assert_has_calls( [mock.call(target), mock.call(inner[0]), mock.call(inner[1])] ) mock_merge_duplicate_attributes.assert_has_calls( [mock.call(target), mock.call(inner[0]), mock.call(inner[1])] )
def test_class_references(self): target = ClassFactory.elements( 2, inner=ClassFactory.list(2, attrs=AttrFactory.list(1)), extensions=ExtensionFactory.list(1), ) actual = ClassAnalyzer.class_references(target) # +1 target # +2 attrs # +2 attr types # +1 extension # +1 extension type # +2 inner classes # +2 inner classes attrs # +2 inner classes attr types self.assertEqual(13, len(actual)) self.assertEqual(id(target), actual[0])