[python-experimental] adds test verifying inheriting from multiple AnyType classes (#13358)

* Adds test_additional_properties_validator

* Updates test

* Reverts file
This commit is contained in:
Justin Black 2022-09-05 17:18:51 -07:00 committed by GitHub
parent 2c5eb54f11
commit c4d56afcae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 483 additions and 1 deletions

View File

@ -2905,4 +2905,15 @@ components:
type: string
enum:
- move
- copy
- copy
AdditionalPropertiesValidator:
type: object
allOf:
- type: object
additionalProperties: true
- type: object
additionalProperties:
minLength: 3
- type: object
additionalProperties:
maxLength: 5

View File

@ -10,6 +10,7 @@ docs/apis/tags/PetApi.md
docs/apis/tags/StoreApi.md
docs/apis/tags/UserApi.md
docs/models/AdditionalPropertiesClass.md
docs/models/AdditionalPropertiesValidator.md
docs/models/AdditionalPropertiesWithArrayOfEnums.md
docs/models/Address.md
docs/models/Animal.md
@ -140,6 +141,8 @@ petstore_api/exceptions.py
petstore_api/model/__init__.py
petstore_api/model/additional_properties_class.py
petstore_api/model/additional_properties_class.pyi
petstore_api/model/additional_properties_validator.py
petstore_api/model/additional_properties_validator.pyi
petstore_api/model/additional_properties_with_array_of_enums.py
petstore_api/model/additional_properties_with_array_of_enums.pyi
petstore_api/model/address.py

View File

@ -223,6 +223,7 @@ Class | Method | HTTP request | Description
## Documentation For Models
- [AdditionalPropertiesClass](docs/models/AdditionalPropertiesClass.md)
- [AdditionalPropertiesValidator](docs/models/AdditionalPropertiesValidator.md)
- [AdditionalPropertiesWithArrayOfEnums](docs/models/AdditionalPropertiesWithArrayOfEnums.md)
- [Address](docs/models/Address.md)
- [Animal](docs/models/Animal.md)

View File

@ -0,0 +1,8 @@
# petstore_api.model.additional_properties_validator.AdditionalPropertiesValidator
Type | Description | Notes
------------- | ------------- | -------------
**object** | |
[[Back to Model list]](../../README.md#documentation-for-models) [[Back to API list]](../../README.md#documentation-for-api-endpoints) [[Back to README]](../../README.md)

View File

@ -0,0 +1,198 @@
# coding: utf-8
"""
OpenAPI Petstore
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501
The version of the OpenAPI document: 1.0.0
Generated by: https://openapi-generator.tech
"""
from datetime import date, datetime # noqa: F401
import decimal # noqa: F401
import functools # noqa: F401
import io # noqa: F401
import re # noqa: F401
import typing # noqa: F401
import uuid # noqa: F401
import frozendict # noqa: F401
from petstore_api import schemas # noqa: F401
class AdditionalPropertiesValidator(
schemas.ComposedBase,
schemas.DictSchema
):
"""NOTE: This class is auto generated by OpenAPI Generator.
Ref: https://openapi-generator.tech
Do not edit the class manually.
"""
class MetaOapg:
class all_of_0(
schemas.DictSchema
):
class MetaOapg:
additional_properties = schemas.AnyTypeSchema
def __getitem__(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
# dict_instance[name] accessor
return super().__getitem__(name)
def get_item_oapg(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
return super().get_item_oapg(name)
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[MetaOapg.additional_properties, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
) -> 'all_of_0':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
class all_of_1(
schemas.DictSchema
):
class MetaOapg:
class additional_properties(
schemas.AnyTypeSchema,
):
class MetaOapg:
min_length = 3
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
) -> 'additional_properties':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
def __getitem__(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
# dict_instance[name] accessor
return super().__getitem__(name)
def get_item_oapg(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
return super().get_item_oapg(name)
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[MetaOapg.additional_properties, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
) -> 'all_of_1':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
class all_of_2(
schemas.DictSchema
):
class MetaOapg:
class additional_properties(
schemas.AnyTypeSchema,
):
class MetaOapg:
max_length = 5
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
) -> 'additional_properties':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
def __getitem__(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
# dict_instance[name] accessor
return super().__getitem__(name)
def get_item_oapg(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
return super().get_item_oapg(name)
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[MetaOapg.additional_properties, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
) -> 'all_of_2':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
@classmethod
@property
@functools.cache
def all_of(cls):
# we need this here to make our import statements work
# we must store _composed_schemas in here so the code is only run
# when we invoke this method. If we kept this at the class
# level we would get an error because the class level
# code would be run when this module is imported, and these composed
# classes don't exist yet because their module has not finished
# loading
return [
cls.all_of_0,
cls.all_of_1,
cls.all_of_2,
]
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
) -> 'AdditionalPropertiesValidator':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)

View File

@ -0,0 +1,196 @@
# coding: utf-8
"""
OpenAPI Petstore
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501
The version of the OpenAPI document: 1.0.0
Generated by: https://openapi-generator.tech
"""
from datetime import date, datetime # noqa: F401
import decimal # noqa: F401
import functools # noqa: F401
import io # noqa: F401
import re # noqa: F401
import typing # noqa: F401
import uuid # noqa: F401
import frozendict # noqa: F401
from petstore_api import schemas # noqa: F401
class AdditionalPropertiesValidator(
schemas.ComposedBase,
schemas.DictSchema
):
"""NOTE: This class is auto generated by OpenAPI Generator.
Ref: https://openapi-generator.tech
Do not edit the class manually.
"""
class MetaOapg:
class all_of_0(
schemas.DictSchema
):
class MetaOapg:
additional_properties = schemas.AnyTypeSchema
def __getitem__(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
# dict_instance[name] accessor
return super().__getitem__(name)
def get_item_oapg(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
return super().get_item_oapg(name)
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[MetaOapg.additional_properties, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
) -> 'all_of_0':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
class all_of_1(
schemas.DictSchema
):
class MetaOapg:
class additional_properties(
schemas.AnyTypeSchema,
):
class MetaOapg:
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
) -> 'additional_properties':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
def __getitem__(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
# dict_instance[name] accessor
return super().__getitem__(name)
def get_item_oapg(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
return super().get_item_oapg(name)
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[MetaOapg.additional_properties, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
) -> 'all_of_1':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
class all_of_2(
schemas.DictSchema
):
class MetaOapg:
class additional_properties(
schemas.AnyTypeSchema,
):
class MetaOapg:
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
) -> 'additional_properties':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
def __getitem__(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
# dict_instance[name] accessor
return super().__getitem__(name)
def get_item_oapg(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
return super().get_item_oapg(name)
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[MetaOapg.additional_properties, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes, ],
) -> 'all_of_2':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)
@classmethod
@property
@functools.cache
def all_of(cls):
# we need this here to make our import statements work
# we must store _composed_schemas in here so the code is only run
# when we invoke this method. If we kept this at the class
# level we would get an error because the class level
# code would be run when this module is imported, and these composed
# classes don't exist yet because their module has not finished
# loading
return [
cls.all_of_0,
cls.all_of_1,
cls.all_of_2,
]
def __new__(
cls,
*args: typing.Union[dict, frozendict.frozendict, ],
_configuration: typing.Optional[schemas.Configuration] = None,
**kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
) -> 'AdditionalPropertiesValidator':
return super().__new__(
cls,
*args,
_configuration=_configuration,
**kwargs,
)

View File

@ -12,6 +12,7 @@
# sys.setrecursionlimit(n)
from petstore_api.model.additional_properties_class import AdditionalPropertiesClass
from petstore_api.model.additional_properties_validator import AdditionalPropertiesValidator
from petstore_api.model.additional_properties_with_array_of_enums import AdditionalPropertiesWithArrayOfEnums
from petstore_api.model.address import Address
from petstore_api.model.animal import Animal

View File

@ -0,0 +1,25 @@
# coding: utf-8
"""
OpenAPI Petstore
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501
The version of the OpenAPI document: 1.0.0
Generated by: https://openapi-generator.tech
"""
import unittest
import petstore_api
from petstore_api.model.additional_properties_validator import AdditionalPropertiesValidator
from petstore_api import configuration
class TestAdditionalPropertiesValidator(unittest.TestCase):
"""AdditionalPropertiesValidator unit test stubs"""
_configuration = configuration.Configuration()
if __name__ == '__main__':
unittest.main()

View File

@ -0,0 +1,39 @@
# coding: utf-8
"""
OpenAPI Petstore
This spec is mainly for testing Petstore server and contains fake endpoints, models. Please do not use this for any other purpose. Special characters: \" \\ # noqa: E501
The version of the OpenAPI document: 1.0.0
Generated by: https://openapi-generator.tech
"""
import unittest
from petstore_api.model.additional_properties_validator import AdditionalPropertiesValidator
from petstore_api import schemas, exceptions
class TestAdditionalPropertiesValidator(unittest.TestCase):
"""AdditionalPropertiesValidator unit test stubs"""
def test_additional_properties_validator(self):
with self.assertRaises(exceptions.ApiValueError):
AdditionalPropertiesValidator(tooShort='ab')
with self.assertRaises(exceptions.ApiValueError):
AdditionalPropertiesValidator(tooLong='abcdef')
inst = AdditionalPropertiesValidator(addProp='abc')
add_prop = inst['addProp']
assert add_prop == 'abc'
assert isinstance(add_prop, str)
assert isinstance(add_prop, schemas.AnyTypeSchema)
assert isinstance(add_prop, AdditionalPropertiesValidator.MetaOapg.all_of[1].MetaOapg.additional_properties)
assert isinstance(add_prop, AdditionalPropertiesValidator.MetaOapg.all_of[2].MetaOapg.additional_properties)
assert not isinstance(add_prop, schemas.UnsetAnyTypeSchema)
if __name__ == '__main__':
unittest.main()