Beispiel #1
0
    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)
Beispiel #2
0
    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())
Beispiel #3
0
    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])]
        )
Beispiel #4
0
    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])