Browse Source

Tweak tests for compatibility with Pydantic v1 and v2

pull/14168/head
Sebastián Ramírez 9 months ago
parent
commit
f863d90de3
  1. 430
      tests/test_pydantic_v1_v2_multifile/test_multifile.py

430
tests/test_pydantic_v1_v2_multifile/test_multifile.py

@ -1,3 +1,4 @@
from dirty_equals import IsPartialDict
from fastapi.testclient import TestClient from fastapi.testclient import TestClient
from inline_snapshot import snapshot from inline_snapshot import snapshot
@ -761,236 +762,231 @@ def test_openapi_schema():
} }
}, },
}, },
"components": { "components": IsPartialDict(
"schemas": { # Pydantic v2 creates a couple of extra models separated for input and output
"Body_handle_v2_items_in_list_to_v1_item_in_list_v2_to_v1_list_of_items_to_list_of_items_post": { {
"properties": { "schemas": {
"data1": { "Body_handle_v2_items_in_list_to_v1_item_in_list_v2_to_v1_list_of_items_to_list_of_items_post": {
"items": { "properties": {
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__ItemInList" "data1": {
"items": {
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__ItemInList"
},
"type": "array",
"title": "Data1",
}, },
"type": "array", "data2": {
"title": "Data1", "items": {
}, "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2b__ItemInList"
"data2": { },
"items": { "type": "array",
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2b__ItemInList" "title": "Data2",
}, },
"type": "array", },
"title": "Data2", "type": "object",
}, "required": ["data1", "data2"],
}, "title": "Body_handle_v2_items_in_list_to_v1_item_in_list_v2_to_v1_list_of_items_to_list_of_items_post",
"type": "object", },
"required": ["data1", "data2"], "Body_handle_v2_same_name_to_v1_v2_to_v1_same_name_post": {
"title": "Body_handle_v2_items_in_list_to_v1_item_in_list_v2_to_v1_list_of_items_to_list_of_items_post", "properties": {
}, "item1": pydantic_snapshot(
"Body_handle_v2_same_name_to_v1_v2_to_v1_same_name_post": { v2=snapshot(
"properties": { {
"item1": pydantic_snapshot( "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__Item-Input"
v2=snapshot( }
{ ),
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__Item-Input" v1=snapshot(
} {
), "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__Item"
v1=snapshot( }
{ ),
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__Item"
}
), ),
), "item2": {
"item2": { "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2b__Item"
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2b__Item"
},
},
"type": "object",
"required": ["item1", "item2"],
"title": "Body_handle_v2_same_name_to_v1_v2_to_v1_same_name_post",
},
"HTTPValidationError": {
"properties": {
"detail": {
"items": {
"$ref": "#/components/schemas/ValidationError"
}, },
"type": "array", },
"title": "Detail", "type": "object",
} "required": ["item1", "item2"],
}, "title": "Body_handle_v2_same_name_to_v1_v2_to_v1_same_name_post",
"type": "object", },
"title": "HTTPValidationError", "HTTPValidationError": {
}, "properties": {
"SubItem-Output": { "detail": {
"properties": { "items": {
"new_sub_name": {"type": "string", "title": "New Sub Name"} "$ref": "#/components/schemas/ValidationError"
}, },
"type": "object", "type": "array",
"required": ["new_sub_name"], "title": "Detail",
"title": "SubItem", }
}, },
"ValidationError": { "type": "object",
"properties": { "title": "HTTPValidationError",
"loc": { },
"items": { "ValidationError": {
"anyOf": [{"type": "string"}, {"type": "integer"}] "properties": {
"loc": {
"items": {
"anyOf": [
{"type": "string"},
{"type": "integer"},
]
},
"type": "array",
"title": "Location",
},
"msg": {"type": "string", "title": "Message"},
"type": {"type": "string", "title": "Error Type"},
},
"type": "object",
"required": ["loc", "msg", "type"],
"title": "ValidationError",
},
"tests__test_pydantic_v1_v2_multifile__modelsv1__SubItem": {
"properties": {"name": {"type": "string", "title": "Name"}},
"type": "object",
"required": ["name"],
"title": "SubItem",
},
"tests__test_pydantic_v1_v2_multifile__modelsv1__ItemInList": {
"properties": {
"name1": {"type": "string", "title": "Name1"}
},
"type": "object",
"required": ["name1"],
"title": "ItemInList",
},
"tests__test_pydantic_v1_v2_multifile__modelsv1__Item": {
"properties": {
"title": {"type": "string", "title": "Title"},
"size": {"type": "integer", "title": "Size"},
"description": {
"type": "string",
"title": "Description",
}, },
"type": "array", "sub": {
"title": "Location",
},
"msg": {"type": "string", "title": "Message"},
"type": {"type": "string", "title": "Error Type"},
},
"type": "object",
"required": ["loc", "msg", "type"],
"title": "ValidationError",
},
"tests__test_pydantic_v1_v2_multifile__modelsv1__SubItem": {
"properties": {"name": {"type": "string", "title": "Name"}},
"type": "object",
"required": ["name"],
"title": "SubItem",
},
"tests__test_pydantic_v1_v2_multifile__modelsv1__ItemInList": {
"properties": {"name1": {"type": "string", "title": "Name1"}},
"type": "object",
"required": ["name1"],
"title": "ItemInList",
},
"tests__test_pydantic_v1_v2_multifile__modelsv1__Item": {
"properties": {
"title": {"type": "string", "title": "Title"},
"size": {"type": "integer", "title": "Size"},
"description": {"type": "string", "title": "Description"},
"sub": {
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv1__SubItem"
},
"multi": {
"items": {
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv1__SubItem" "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv1__SubItem"
}, },
"type": "array", "multi": {
"title": "Multi", "items": {
"default": [], "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv1__SubItem"
}, },
}, "type": "array",
"type": "object", "title": "Multi",
"required": ["title", "size", "sub"], "default": [],
"title": "Item",
},
"tests__test_pydantic_v1_v2_multifile__modelsv2__Item": {
"properties": {
"new_title": {"type": "string", "title": "New Title"},
"new_size": {"type": "integer", "title": "New Size"},
"new_description": pydantic_snapshot(
v2=snapshot(
{
"anyOf": [{"type": "string"}, {"type": "null"}],
"title": "New Description",
}
),
v1=snapshot(
{"type": "string", "title": "New Description"}
),
),
"new_sub": {"$ref": "#/components/schemas/SubItem-Output"},
"new_multi": {
"items": {
"$ref": "#/components/schemas/SubItem-Output"
}, },
"type": "array", },
"title": "New Multi", "type": "object",
"default": [], "required": ["title", "size", "sub"],
}, "title": "Item",
}, },
"type": "object", "tests__test_pydantic_v1_v2_multifile__modelsv2__Item": {
"required": ["new_title", "new_size", "new_sub"], "properties": {
"title": "Item", "new_title": {"type": "string", "title": "New Title"},
}, "new_size": {"type": "integer", "title": "New Size"},
"tests__test_pydantic_v1_v2_multifile__modelsv2__Item-Input": { "new_description": pydantic_snapshot(
"properties": { v2=snapshot(
"new_title": {"type": "string", "title": "New Title"}, {
"new_size": {"type": "integer", "title": "New Size"}, "anyOf": [
"new_description": { {"type": "string"},
"anyOf": [{"type": "string"}, {"type": "null"}], {"type": "null"},
"title": "New Description", ],
}, "title": "New Description",
"new_sub": { }
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__SubItem" ),
}, v1=snapshot(
"new_multi": { {"type": "string", "title": "New Description"}
"items": { ),
),
"new_sub": {
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__SubItem" "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__SubItem"
}, },
"type": "array", "new_multi": {
"title": "New Multi", "items": {
"default": [], "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2__SubItem"
}, },
}, "type": "array",
"type": "object", "title": "New Multi",
"required": ["new_title", "new_size", "new_sub"], "default": [],
"title": "Item", },
}, },
"tests__test_pydantic_v1_v2_multifile__modelsv2__ItemInList": { "type": "object",
"properties": {"name2": {"type": "string", "title": "Name2"}}, "required": ["new_title", "new_size", "new_sub"],
"type": "object", "title": "Item",
"required": ["name2"], },
"title": "ItemInList", "tests__test_pydantic_v1_v2_multifile__modelsv2__ItemInList": {
}, "properties": {
"tests__test_pydantic_v1_v2_multifile__modelsv2__SubItem": { "name2": {"type": "string", "title": "Name2"}
"properties": {
"new_sub_name": {"type": "string", "title": "New Sub Name"}
},
"type": "object",
"required": ["new_sub_name"],
"title": "SubItem",
},
"tests__test_pydantic_v1_v2_multifile__modelsv2b__Item": {
"properties": {
"dup_title": {"type": "string", "title": "Dup Title"},
"dup_size": {"type": "integer", "title": "Dup Size"},
"dup_description": pydantic_snapshot(
v2=snapshot(
{
"anyOf": [{"type": "string"}, {"type": "null"}],
"title": "Dup Description",
}
),
v1=snapshot(
{"type": "string", "title": "Dup Description"}
),
),
"dup_sub": {
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2b__SubItem"
}, },
"dup_multi": { "type": "object",
"items": { "required": ["name2"],
"title": "ItemInList",
},
"tests__test_pydantic_v1_v2_multifile__modelsv2__SubItem": {
"properties": {
"new_sub_name": {
"type": "string",
"title": "New Sub Name",
}
},
"type": "object",
"required": ["new_sub_name"],
"title": "SubItem",
},
"tests__test_pydantic_v1_v2_multifile__modelsv2b__Item": {
"properties": {
"dup_title": {"type": "string", "title": "Dup Title"},
"dup_size": {"type": "integer", "title": "Dup Size"},
"dup_description": pydantic_snapshot(
v2=snapshot(
{
"anyOf": [
{"type": "string"},
{"type": "null"},
],
"title": "Dup Description",
}
),
v1=snapshot(
{"type": "string", "title": "Dup Description"}
),
),
"dup_sub": {
"$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2b__SubItem" "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2b__SubItem"
}, },
"type": "array", "dup_multi": {
"title": "Dup Multi", "items": {
"default": [], "$ref": "#/components/schemas/tests__test_pydantic_v1_v2_multifile__modelsv2b__SubItem"
}, },
}, "type": "array",
"type": "object", "title": "Dup Multi",
"required": ["dup_title", "dup_size", "dup_sub"], "default": [],
"title": "Item", },
}, },
"tests__test_pydantic_v1_v2_multifile__modelsv2b__ItemInList": { "type": "object",
"properties": { "required": ["dup_title", "dup_size", "dup_sub"],
"dup_name2": {"type": "string", "title": "Dup Name2"} "title": "Item",
}, },
"type": "object", "tests__test_pydantic_v1_v2_multifile__modelsv2b__ItemInList": {
"required": ["dup_name2"], "properties": {
"title": "ItemInList", "dup_name2": {"type": "string", "title": "Dup Name2"}
}, },
"tests__test_pydantic_v1_v2_multifile__modelsv2b__SubItem": { "type": "object",
"properties": { "required": ["dup_name2"],
"dup_sub_name": {"type": "string", "title": "Dup Sub Name"} "title": "ItemInList",
}, },
"type": "object", "tests__test_pydantic_v1_v2_multifile__modelsv2b__SubItem": {
"required": ["dup_sub_name"], "properties": {
"title": "SubItem", "dup_sub_name": {
}, "type": "string",
"title": "Dup Sub Name",
}
},
"type": "object",
"required": ["dup_sub_name"],
"title": "SubItem",
},
}
} }
}, ),
} }
) )

Loading…
Cancel
Save