11from unittest .mock import MagicMock
22
33import pytest
4- from pydantic import BaseModel
4+ from pydantic import BaseModel , computed_field
55
66# Import the class under test
77from fastopenapi .base_router import REDOC_URL , SWAGGER_URL , BaseRouter
@@ -13,6 +13,10 @@ class TestModel(BaseModel):
1313 age : int
1414 is_active : bool = True
1515
16+ @computed_field (alias = "$active" )
17+ def aliased_is_active (self ) -> bool :
18+ return self .is_active
19+
1620
1721class ResponseModel (BaseModel ):
1822 id : int
@@ -30,7 +34,6 @@ class NestedListModel(BaseModel):
3034
3135
3236class TestBaseRouter :
33-
3437 def setup_method (self ):
3538 self .app_mock = MagicMock ()
3639
@@ -465,6 +468,7 @@ def test_get_model_schema(self):
465468 assert "TestModel" in definitions
466469 assert definitions ["TestModel" ]["properties" ]["name" ]["type" ] == "string"
467470 assert definitions ["TestModel" ]["properties" ]["age" ]["type" ] == "integer"
471+ assert definitions ["TestModel" ]["properties" ]["$active" ]["type" ] == "boolean"
468472
469473 def test_get_model_schema_with_nested_models (self ):
470474 # Test getting schema for models with nested models
@@ -517,6 +521,7 @@ def endpoint(user: TestModel):
517521 assert result ["user" ].name == "John"
518522 assert result ["user" ].age == 30
519523 assert result ["user" ].is_active is True # Default value
524+ assert result ["user" ].aliased_is_active is True
520525
521526 def test_resolve_endpoint_params_missing_required (self ):
522527 # Test error when required parameter is missing
@@ -566,15 +571,17 @@ def endpoint(query: TestModel):
566571 )
567572
568573 # Should convert model to query parameters
569- assert len (params ) == 3
574+ assert len (params ) == 4
570575 assert params [0 ]["in" ] == "query"
571576 assert params [1 ]["in" ] == "query"
572577 assert params [2 ]["in" ] == "query"
578+ assert params [3 ]["in" ] == "query"
573579
574580 names = [p ["name" ] for p in params ]
575581 assert "name" in names
576582 assert "age" in names
577583 assert "is_active" in names
584+ assert "$active" in names # alias
578585
579586 # No request body for GET
580587 assert body is None
0 commit comments