diff --git a/tests/test_union_body_discriminator.py b/tests/test_union_body_discriminator.py index 15ab9f342..a0eca544a 100644 --- a/tests/test_union_body_discriminator.py +++ b/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", } }