Exemplo n.º 1
0
 def test_attribute_type_with_forwarderence(self):
     attr = AttrFactory.create(
         types=AttrTypeFactory.list(1, name="foo_bar", forward=True)
     )
     self.assertEqual(
         'Optional["Parent.Inner.FooBar"]', attribute_type(attr, ["Parent", "Inner"])
     )
Exemplo n.º 2
0
    def test_dependencies(self):
        obj = ClassFactory.create(
            attrs=[
                AttrFactory.create(types=[AttrTypeFactory.xs_decimal()]),
                AttrFactory.create(types=[
                    AttrTypeFactory.create(qname=QName(Namespace.XS.uri,
                                                       "annotated"),
                                           forward=True)
                ]),
                AttrFactory.create(types=[
                    AttrTypeFactory.create(
                        qname=QName(Namespace.XS.uri, "openAttrs")),
                    AttrTypeFactory.create(
                        qname=QName(Namespace.XS.uri, "localAttribute")),
                ]),
            ],
            extensions=[
                ExtensionFactory.create(type=AttrTypeFactory.create(
                    qname=QName(Namespace.XS.uri, "foobar"))),
                ExtensionFactory.create(type=AttrTypeFactory.create(
                    qname=QName(Namespace.XS.uri, "foobar"))),
            ],
            inner=[
                ClassFactory.create(attrs=AttrFactory.list(
                    2, types=AttrTypeFactory.list(1, qname="foo")))
            ],
        )

        expected = [
            QName("{http://www.w3.org/2001/XMLSchema}openAttrs"),
            QName("{http://www.w3.org/2001/XMLSchema}localAttribute"),
            QName("{http://www.w3.org/2001/XMLSchema}foobar"),
            QName("{xsdata}foo"),
        ]
        self.assertEqual(expected, list(obj.dependencies()))
Exemplo n.º 3
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())
Exemplo n.º 4
0
 def test_field_type_with_forward_reference(self):
     attr = AttrFactory.create(
         types=AttrTypeFactory.list(1, qname="foo_bar", forward=True)
     )
     self.assertEqual(
         'Optional["Parent.Inner.FooBar"]',
         self.filters.field_type(attr, ["Parent", "Inner"]),
     )
Exemplo n.º 5
0
    def test_attribute_default_with_type_enum(self):
        attr = AttrFactory.create(
            types=AttrTypeFactory.list(1, name="foo"), default="@enum@foo::bar"
        )
        self.assertEqual("Foo.BAR", attribute_default(attr))

        attr.types[0].alias = "foo_bar"
        self.assertEqual("FooBar.BAR", attribute_default(attr))
Exemplo n.º 6
0
 def test_attribute_type_with_list_type(self):
     attr = AttrFactory.create(
         types=AttrTypeFactory.list(1, name="foo_bar", forward=True)
     )
     attr.restrictions.max_occurs = 2
     self.assertEqual(
         'List["A.Parent.FooBar"]', attribute_type(attr, ["A", "Parent"])
     )
Exemplo n.º 7
0
    def test_field_type_with_circular_reference(self):
        attr = AttrFactory.create(
            types=AttrTypeFactory.list(1, qname="foo_bar", circular=True)
        )

        self.assertEqual(
            'Optional["FooBar"]', self.filters.field_type(attr, ["Parent"])
        )
Exemplo n.º 8
0
    def test_field_type_with_token_attr(self):
        attr = AttrFactory.create(
            types=AttrTypeFactory.list(1, qname="foo_bar"),
            restrictions=Restrictions(tokens=True),
        )
        self.assertEqual("List[FooBar]", self.filters.field_type(attr, []))

        attr.restrictions.max_occurs = 2
        self.assertEqual("List[List[FooBar]]", self.filters.field_type(attr, []))
Exemplo n.º 9
0
    def test_dependencies(self):
        obj = ClassFactory.create(
            attrs=[
                AttrFactory.create(types=[AttrTypeFactory.xs_decimal()]),
                AttrFactory.create(
                    types=[
                        AttrTypeFactory.create(
                            qname=build_qname(Namespace.XS.uri, "annotated"),
                            forward=True,
                        )
                    ],
                    choices=[
                        AttrFactory.create(
                            name="x",
                            types=[
                                AttrTypeFactory.create(qname="choiceAttr"),
                                AttrTypeFactory.xs_string(),
                            ],
                        ),
                        AttrFactory.create(
                            name="x",
                            types=[
                                AttrTypeFactory.create(qname="choiceAttrTwo"),
                                AttrTypeFactory.create(qname="choiceAttrEnum"),
                            ],
                        ),
                    ],
                ),
                AttrFactory.create(types=[
                    AttrTypeFactory.create(
                        qname=build_qname(Namespace.XS.uri, "openAttrs")),
                    AttrTypeFactory.create(
                        qname=build_qname(Namespace.XS.uri, "localAttribute")),
                ]),
            ],
            extensions=[
                ExtensionFactory.create(type=AttrTypeFactory.create(
                    qname=build_qname(Namespace.XS.uri, "foobar"))),
                ExtensionFactory.create(type=AttrTypeFactory.create(
                    qname=build_qname(Namespace.XS.uri, "foobar"))),
            ],
            inner=[
                ClassFactory.create(attrs=AttrFactory.list(
                    2, types=AttrTypeFactory.list(1, qname="{xsdata}foo")))
            ],
        )

        expected = [
            "choiceAttr",
            "choiceAttrTwo",
            "choiceAttrEnum",
            "{http://www.w3.org/2001/XMLSchema}openAttrs",
            "{http://www.w3.org/2001/XMLSchema}localAttribute",
            "{http://www.w3.org/2001/XMLSchema}foobar",
            "{xsdata}foo",
        ]
        self.assertCountEqual(expected, list(obj.dependencies()))
Exemplo n.º 10
0
 def test_field_type_with_alias(self):
     attr = AttrFactory.create(
         types=AttrTypeFactory.list(
             1, qname="foo_bar", forward=True, alias="Boss:Life"
         )
     )
     attr.restrictions.max_occurs = 2
     self.assertEqual(
         'List["A.Parent.BossLife"]',
         self.filters.field_type(attr, ["A", "Parent"]),
     )
Exemplo n.º 11
0
    def test_field_default_value_with_type_enum(self):
        attr = AttrFactory.create(
            types=AttrTypeFactory.list(1, qname="foo"), default="@enum@foo::bar"
        )
        self.assertEqual("Foo.BAR", self.filters.field_default_value(attr))

        attr.types[0].alias = "foo_bar"
        self.assertEqual("FooBar.BAR", self.filters.field_default_value(attr))

        attr.types[0].qname = "nomatch"  # impossible
        with self.assertRaises(Exception):
            self.filters.field_default_value(attr)
Exemplo n.º 12
0
    def test_build_class_attribute(
        self,
        mock_real_name,
        mock_display_help,
        mock_prefix,
        mock_default_value,
        mock_is_fixed,
        mock_is_wildcard,
        mock_get_restrictions,
        mock_element_namespace,
        mock_build_class_attribute_types,
    ):
        item = ClassFactory.create(ns_map={"bar": "foo"})

        mock_build_class_attribute_types.return_value = AttrTypeFactory.list(
            1, name="xs:int")
        mock_real_name.return_value = item.name
        mock_display_help.return_value = "sos"
        mock_prefix.return_value = "com"
        mock_default_value.return_value = "default"
        mock_is_fixed.return_value = True
        mock_is_wildcard.return_value = True
        mock_element_namespace.return_value = "http://something/common"
        mock_get_restrictions.return_value = {"required": True}

        attribute = Attribute.create(default="false",
                                     index=66,
                                     ns_map={"foo": "bar"})

        self.builder.build_class_attribute(item, attribute, Restrictions())
        expected = AttrFactory.create(
            name=mock_real_name.return_value,
            types=mock_build_class_attribute_types.return_value,
            local_type=Attribute.__name__,
            namespace=mock_element_namespace.return_value,
            help=mock_display_help.return_value,
            default=mock_default_value.return_value,
            fixed=mock_is_fixed.return_value,
            wildcard=mock_is_wildcard.return_value,
            index=66,
            restrictions=Restrictions(required=True),
        )
        self.assertEqual(expected, item.attrs[0])
        self.assertEqual({"bar": "foo", "foo": "bar"}, item.ns_map)
        mock_build_class_attribute_types.assert_called_once_with(
            item, attribute)
        mock_element_namespace.assert_called_once_with(attribute)
Exemplo n.º 13
0
    def test_attribute_type_with_optional_value(self):
        attr = AttrFactory.create(types=AttrTypeFactory.list(1, name="foo_bar"))

        self.assertEqual("Optional[FooBar]", attribute_type(attr, []))
Exemplo n.º 14
0
    def test_attribute_type_with_default_value(self):
        attr = AttrFactory.create(
            default="foo", types=AttrTypeFactory.list(1, name="foo_bar")
        )

        self.assertEqual("FooBar", attribute_type(attr, []))
Exemplo n.º 15
0
    def test_field_type_with_optional_value(self):
        attr = AttrFactory.create(types=AttrTypeFactory.list(1, qname="foo_bar"))

        self.assertEqual("Optional[FooBar]", self.filters.field_type(attr, []))
Exemplo n.º 16
0
    def test_field_type_with_default_value(self):
        attr = AttrFactory.create(
            default="foo", types=AttrTypeFactory.list(1, qname="foo_bar")
        )

        self.assertEqual("FooBar", self.filters.field_type(attr, []))
Exemplo n.º 17
0
    def test_attribute_type_with_circularerence(self):
        attr = AttrFactory.create(
            types=AttrTypeFactory.list(1, name="foo_bar", circular=True)
        )

        self.assertEqual('Optional["FooBar"]', attribute_type(attr, ["Parent"]))