Justin Black d8c422398e
[python-experimental] Quicken package loading (#6437)
* apis and models contains all apis and models, omits loading them in the package namespace

* Runs git add -a and commits it

* Fixes test_outer_enum.py

* Fixes test_fruit.py

* Updates test_fruit and test_mammal

* Fixes test_parent_pet

* Updates test_discard_unknown_properties.py

* Updates test_deserialization.py

* Updates v2 docs md files for apis + the readme

* Fixes v2 tests

* v2 doc updates

* Updates v3 docs

* Reverts python_doc_auth_partial.mustache

* Adds sys to v3 tests

* Adds FILES update

Co-authored-by: Justin Black <justinblack@justins-air.lan>
2020-06-01 00:25:37 -07:00

152 lines
4.9 KiB
Python

# 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 __future__ import absolute_import
import sys
import unittest
import petstore_api
try:
from petstore_api.model import animal
except ImportError:
animal = sys.modules[
'petstore_api.model.animal']
try:
from petstore_api.model import dog_all_of
except ImportError:
dog_all_of = sys.modules[
'petstore_api.model.dog_all_of']
from petstore_api.model.dog import Dog
class TestDog(unittest.TestCase):
"""Dog unit test stubs"""
def setUp(self):
pass
def tearDown(self):
pass
def testDog(self):
"""Test Dog"""
# make an instance of dog, a composed schema model
class_name = 'Dog'
color = 'white'
breed = 'Jack Russel Terrier'
dog = Dog(
class_name=class_name,
color=color,
breed=breed
)
# check its properties
self.assertEqual(dog.class_name, class_name)
self.assertEqual(dog.color, color)
self.assertEqual(dog.breed, breed)
# access them with keys
self.assertEqual(dog['class_name'], class_name)
self.assertEqual(dog['color'], color)
self.assertEqual(dog['breed'], breed)
# access them with getattr
self.assertEqual(getattr(dog, 'class_name'), class_name)
self.assertEqual(getattr(dog, 'color'), color)
self.assertEqual(getattr(dog, 'breed'), breed)
# check the model's to_dict result
self.assertEqual(
dog.to_dict(),
{
'class_name': class_name,
'color': color,
'breed': breed,
}
)
# setting a value that doesn't exist raises an exception
# with a key
with self.assertRaises(AttributeError):
dog['invalid_variable'] = 'some value'
# with setattr
with self.assertRaises(AttributeError):
setattr(dog, 'invalid_variable', 'some value')
# getting a value that doesn't exist raises an exception
# with a key
with self.assertRaises(AttributeError):
invalid_variable = dog['invalid_variable']
# with getattr
self.assertEquals(getattr(dog, 'invalid_variable', 'some value'), 'some value')
with self.assertRaises(AttributeError):
invalid_variable = getattr(dog, 'invalid_variable')
# make sure that the ModelComposed class properties are correct
# model.composed_schemas() stores the anyOf/allOf/oneOf info
self.assertEqual(
dog._composed_schemas,
{
'anyOf': [],
'allOf': [
animal.Animal,
dog_all_of.DogAllOf,
],
'oneOf': [],
}
)
# model._composed_instances is a list of the instances that were
# made from the anyOf/allOf/OneOf classes in model._composed_schemas()
for composed_instance in dog._composed_instances:
if composed_instance.__class__ == animal.Animal:
animal_instance = composed_instance
elif composed_instance.__class__ == dog_all_of.DogAllOf:
dog_allof_instance = composed_instance
self.assertEqual(
dog._composed_instances,
[animal_instance, dog_allof_instance]
)
# model._var_name_to_model_instances maps the variable name to the
# model instances which store that variable
self.assertEqual(
dog._var_name_to_model_instances,
{
'breed': [dog, dog_allof_instance],
'class_name': [dog, animal_instance],
'color': [dog, animal_instance]
}
)
# model._additional_properties_model_instances stores a list of
# models which have the property additional_properties_type != None
self.assertEqual(
dog._additional_properties_model_instances, []
)
# if we modify one of the properties owned by multiple
# model_instances we get an exception when we try to access that
# property because the retrieved values are not all the same
dog_allof_instance.breed = 'Golden Retriever'
with self.assertRaises(petstore_api.ApiValueError):
breed = dog.breed
# including extra parameters raises an exception
with self.assertRaises(petstore_api.ApiValueError):
dog = Dog(
class_name=class_name,
color=color,
breed=breed,
unknown_property='some value'
)
if __name__ == '__main__':
unittest.main()