Browse Source

Fix test, use discriminator on field

pull/12942/head
Patrick Arminio 10 months ago
parent
commit
f95dd6cd05
Failed to extract signature
  1. 21
      tests/test_union_body_discriminator.py

21
tests/test_union_body_discriminator.py

@ -3,32 +3,28 @@ from typing import Any, Dict, Union
from fastapi import FastAPI
from fastapi.testclient import TestClient
from inline_snapshot import snapshot
from pydantic import BaseModel, Discriminator, Tag
from typing_extensions import Annotated
from pydantic import BaseModel, Field, Tag
from typing_extensions import Annotated, Literal
app = FastAPI()
class FirstItem(BaseModel):
value: str
value: Literal["first"]
price: int
class OtherItem(BaseModel):
value: str
value: Literal["second"]
price: float
def get_discriminator_value(v: Any) -> str:
return v.get("value")
Item = Annotated[
Union[
Annotated[FirstItem, Tag("first")],
Annotated[OtherItem, Tag("other")],
],
Discriminator(get_discriminator_value),
Field(discriminator="value"),
]
@ -55,6 +51,13 @@ def test_openapi_schema() -> None:
{"$ref": "#/components/schemas/FirstItem"},
{"$ref": "#/components/schemas/OtherItem"},
],
"discriminator": {
"propertyName": "value",
"mapping": {
"first": "#/components/schemas/FirstItem",
"second": "#/components/schemas/OtherItem",
},
},
"title": "Item",
}
}

Loading…
Cancel
Save