Coverage for tests/test_filter_pydantic_sub_model/app_pv1.py: 100%

22 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2025-05-05 00:03 +0000

1from typing import Optional 1abcdef

2 

3from fastapi import Depends, FastAPI 1abcdef

4from pydantic import BaseModel, validator 1abcdef

5 

6app = FastAPI() 1abcdef

7 

8 

9class ModelB(BaseModel): 1abcdef

10 username: str 1abcdef

11 

12 

13class ModelC(ModelB): 1abcdef

14 password: str 1abcdef

15 

16 

17class ModelA(BaseModel): 1abcdef

18 name: str 1abcdef

19 description: Optional[str] = None 1abcdef

20 model_b: ModelB 1abcdef

21 

22 @validator("name") 1abcdef

23 def lower_username(cls, name: str, values): 1abcdef

24 if not name.endswith("A"): 1ghijklmnopqr

25 raise ValueError("name must end in A") 1hjlnpr

26 return name 1gikmoq

27 

28 

29async def get_model_c() -> ModelC: 1abcdef

30 return ModelC(username="test-user", password="test-password") 1ghijklmnopqr

31 

32 

33@app.get("/model/{name}", response_model=ModelA) 1abcdef

34async def get_model_a(name: str, model_c=Depends(get_model_c)): 1abcdef

35 return {"name": name, "description": "model-a-desc", "model_b": model_c} 1ghijklmnopqr