committed by
GitHub
1 changed files with 52 additions and 0 deletions
@ -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, |
||||
|
} |
||||
|
) |
||||
Loading…
Reference in new issue