]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
✅ Simplify tests for `validate_response_recursive` (#13507)
authorValentyn <valentin.druzhinin@gmail.com>
Tue, 17 Jun 2025 10:24:10 +0000 (06:24 -0400)
committerGitHub <noreply@github.com>
Tue, 17 Jun 2025 10:24:10 +0000 (12:24 +0200)
Co-authored-by: Valentyn Druzhynin <v.druzhynin@zakaz.global>
tests/test_validate_response_recursive/app.py [moved from tests/test_validate_response_recursive/app_pv1.py with 79% similarity]
tests/test_validate_response_recursive/app_pv2.py [deleted file]
tests/test_validate_response_recursive/test_validate_response_recursive.py [moved from tests/test_validate_response_recursive/test_validate_response_recursive_pv1.py with 90% similarity]
tests/test_validate_response_recursive/test_validate_response_recursive_pv2.py [deleted file]

similarity index 79%
rename from tests/test_validate_response_recursive/app_pv1.py
rename to tests/test_validate_response_recursive/app.py
index 4cfc4b3eef1fcfd59c6e8942d2125a10ea017e42..d23d279808d7fee784ba4c57ab9038e1850cb49f 100644 (file)
@@ -1,6 +1,7 @@
 from typing import List
 
 from fastapi import FastAPI
+from fastapi._compat import PYDANTIC_V2
 from pydantic import BaseModel
 
 app = FastAPI()
@@ -11,9 +12,6 @@ class RecursiveItem(BaseModel):
     name: str
 
 
-RecursiveItem.update_forward_refs()
-
-
 class RecursiveSubitemInSubmodel(BaseModel):
     sub_items2: List["RecursiveItemViaSubmodel"] = []
     name: str
@@ -24,7 +22,13 @@ class RecursiveItemViaSubmodel(BaseModel):
     name: str
 
 
-RecursiveSubitemInSubmodel.update_forward_refs()
+if PYDANTIC_V2:
+    RecursiveItem.model_rebuild()
+    RecursiveSubitemInSubmodel.model_rebuild()
+    RecursiveItemViaSubmodel.model_rebuild()
+else:
+    RecursiveItem.update_forward_refs()
+    RecursiveSubitemInSubmodel.update_forward_refs()
 
 
 @app.get("/items/recursive", response_model=RecursiveItem)
diff --git a/tests/test_validate_response_recursive/app_pv2.py b/tests/test_validate_response_recursive/app_pv2.py
deleted file mode 100644 (file)
index 8c93a83..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-from typing import List
-
-from fastapi import FastAPI
-from pydantic import BaseModel
-
-app = FastAPI()
-
-
-class RecursiveItem(BaseModel):
-    sub_items: List["RecursiveItem"] = []
-    name: str
-
-
-RecursiveItem.model_rebuild()
-
-
-class RecursiveSubitemInSubmodel(BaseModel):
-    sub_items2: List["RecursiveItemViaSubmodel"] = []
-    name: str
-
-
-class RecursiveItemViaSubmodel(BaseModel):
-    sub_items1: List[RecursiveSubitemInSubmodel] = []
-    name: str
-
-
-RecursiveSubitemInSubmodel.model_rebuild()
-RecursiveItemViaSubmodel.model_rebuild()
-
-
-@app.get("/items/recursive", response_model=RecursiveItem)
-def get_recursive():
-    return {"name": "item", "sub_items": [{"name": "subitem", "sub_items": []}]}
-
-
-@app.get("/items/recursive-submodel", response_model=RecursiveItemViaSubmodel)
-def get_recursive_submodel():
-    return {
-        "name": "item",
-        "sub_items1": [
-            {
-                "name": "subitem",
-                "sub_items2": [
-                    {
-                        "name": "subsubitem",
-                        "sub_items1": [{"name": "subsubsubitem", "sub_items2": []}],
-                    }
-                ],
-            }
-        ],
-    }
similarity index 90%
rename from tests/test_validate_response_recursive/test_validate_response_recursive_pv1.py
rename to tests/test_validate_response_recursive/test_validate_response_recursive.py
index de578ae03120c648656ca04b09dca6902fdeb5ab..21a299ab8b92a5734ee3987dca514352fb56c796 100644 (file)
@@ -1,12 +1,9 @@
 from fastapi.testclient import TestClient
 
-from ..utils import needs_pydanticv1
+from .app import app
 
 
-@needs_pydanticv1
 def test_recursive():
-    from .app_pv1 import app
-
     client = TestClient(app)
     response = client.get("/items/recursive")
     assert response.status_code == 200, response.text
diff --git a/tests/test_validate_response_recursive/test_validate_response_recursive_pv2.py b/tests/test_validate_response_recursive/test_validate_response_recursive_pv2.py
deleted file mode 100644 (file)
index 7d45e7f..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-from fastapi.testclient import TestClient
-
-from ..utils import needs_pydanticv2
-
-
-@needs_pydanticv2
-def test_recursive():
-    from .app_pv2 import app
-
-    client = TestClient(app)
-    response = client.get("/items/recursive")
-    assert response.status_code == 200, response.text
-    assert response.json() == {
-        "sub_items": [{"name": "subitem", "sub_items": []}],
-        "name": "item",
-    }
-
-    response = client.get("/items/recursive-submodel")
-    assert response.status_code == 200, response.text
-    assert response.json() == {
-        "name": "item",
-        "sub_items1": [
-            {
-                "name": "subitem",
-                "sub_items2": [
-                    {
-                        "name": "subsubitem",
-                        "sub_items1": [{"name": "subsubsubitem", "sub_items2": []}],
-                    }
-                ],
-            }
-        ],
-    }