Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

Commit 8fad9e5

Browse files
committed
Adds test_discriminator_works
1 parent 20e3221 commit 8fad9e5

File tree

6 files changed

+58
-4
lines changed

6 files changed

+58
-4
lines changed

modules/openapi-json-schema-generator/src/main/resources/python/schemas.handlebars

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1981,7 +1981,9 @@ class ComposedBase(Discriminable):
19811981
)
19821982

19831983
# process composed schema
1984-
discriminator = getattr(cls, 'discriminator', None)
1984+
discriminator = None
1985+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'discriminator'):
1986+
discriminator = cls.MetaOapg.discriminator()
19851987
discriminated_cls = None
19861988
if discriminator and arg and isinstance(arg, frozendict.frozendict):
19871989
disc_property_name = list(discriminator.keys())[0]

samples/openapi3/client/3_0_3_unit_test/python/unit_test_api/schemas.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1948,7 +1948,9 @@ def _validate_oapg(
19481948
)
19491949

19501950
# process composed schema
1951-
discriminator = getattr(cls, 'discriminator', None)
1951+
discriminator = None
1952+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'discriminator'):
1953+
discriminator = cls.MetaOapg.discriminator()
19521954
discriminated_cls = None
19531955
if discriminator and arg and isinstance(arg, frozendict.frozendict):
19541956
disc_property_name = list(discriminator.keys())[0]

samples/openapi3/client/features/nonCompliantUseDiscriminatorIfCompositionFails/python/test_manual/__init__.py

Whitespace-only changes.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# coding: utf-8
2+
3+
"""
4+
discriminator-test
5+
6+
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
7+
8+
The version of the OpenAPI document: 1.0
9+
Generated by: https://openapi-generator.tech
10+
"""
11+
12+
import unittest
13+
14+
from this_package.model.operator import Operator
15+
from this_package.model.addition_operator import AdditionOperator
16+
from this_package.model.subtraction_operator import SubtractionOperator
17+
from this_package import configuration
18+
19+
20+
class TestOperator(unittest.TestCase):
21+
"""Operator unit test stubs"""
22+
_configuration = configuration.Configuration()
23+
24+
def test_discriminator_works(self):
25+
op = Operator(
26+
operator_id='ADD',
27+
a=3.14,
28+
b=3.14
29+
)
30+
assert op == dict(
31+
operator_id='ADD',
32+
a=3.14,
33+
b=3.14
34+
)
35+
"""
36+
even though the payload validates with AdditionOperator + SubtractionOperator
37+
only AdditionOperator is used because nonCompliantUseDiscriminatorIfCompositionFails=true
38+
and discriminator validation was used when composed schema validation failed
39+
"""
40+
assert isinstance(op, Operator)
41+
assert isinstance(op, AdditionOperator)
42+
assert not isinstance(op, SubtractionOperator)
43+
44+
45+
if __name__ == '__main__':
46+
unittest.main()

samples/openapi3/client/features/nonCompliantUseDiscriminatorIfCompositionFails/python/this_package/schemas.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1974,7 +1974,9 @@ def _validate_oapg(
19741974
)
19751975

19761976
# process composed schema
1977-
discriminator = getattr(cls, 'discriminator', None)
1977+
discriminator = None
1978+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'discriminator'):
1979+
discriminator = cls.MetaOapg.discriminator()
19781980
discriminated_cls = None
19791981
if discriminator and arg and isinstance(arg, frozendict.frozendict):
19801982
disc_property_name = list(discriminator.keys())[0]

samples/openapi3/client/petstore/python/petstore_api/schemas.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1948,7 +1948,9 @@ def _validate_oapg(
19481948
)
19491949

19501950
# process composed schema
1951-
discriminator = getattr(cls, 'discriminator', None)
1951+
discriminator = None
1952+
if hasattr(cls, 'MetaOapg') and hasattr(cls.MetaOapg, 'discriminator'):
1953+
discriminator = cls.MetaOapg.discriminator()
19521954
discriminated_cls = None
19531955
if discriminator and arg and isinstance(arg, frozendict.frozendict):
19541956
disc_property_name = list(discriminator.keys())[0]

0 commit comments

Comments
 (0)