]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
✅ Add test for Pydantic v2, dataclasses, UUID, and `__annotations__` (#14477)
authorSebastián Ramírez <tiangolo@gmail.com>
Tue, 9 Dec 2025 11:12:24 +0000 (03:12 -0800)
committerGitHub <noreply@github.com>
Tue, 9 Dec 2025 11:12:24 +0000 (12:12 +0100)
tests/test_pydanticv2_dataclasses_uuid_stringified_annotations.py [new file with mode: 0644]

diff --git a/tests/test_pydanticv2_dataclasses_uuid_stringified_annotations.py b/tests/test_pydanticv2_dataclasses_uuid_stringified_annotations.py
new file mode 100644 (file)
index 0000000..c9f9456
--- /dev/null
@@ -0,0 +1,52 @@
+from __future__ import annotations
+
+import uuid
+from dataclasses import dataclass, field
+from typing import List, Union
+
+from dirty_equals import IsUUID
+from fastapi import FastAPI
+from fastapi.testclient import TestClient
+from inline_snapshot import snapshot
+
+
+@dataclass
+class Item:
+    id: uuid.UUID
+    name: str
+    price: float
+    tags: List[str] = field(default_factory=list)
+    description: Union[str, None] = None
+    tax: Union[float, None] = None
+
+
+app = FastAPI()
+
+
+@app.get("/item", response_model=Item)
+async def read_item():
+    return {
+        "id": uuid.uuid4(),
+        "name": "Island In The Moon",
+        "price": 12.99,
+        "description": "A place to be be playin' and havin' fun",
+        "tags": ["breater"],
+    }
+
+
+client = TestClient(app)
+
+
+def test_annotations():
+    response = client.get("/item")
+    assert response.status_code == 200, response.text
+    assert response.json() == snapshot(
+        {
+            "id": IsUUID(),
+            "name": "Island In The Moon",
+            "price": 12.99,
+            "tags": ["breater"],
+            "description": "A place to be be playin' and havin' fun",
+            "tax": None,
+        }
+    )