1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
from functools import wraps
from typing import List
from ninja import NinjaAPI
from ninja.decorators import decorate_view
from ninja.pagination import paginate
from ninja.testing import TestClient
def some_decorator(view_func):
@wraps(view_func)
def wrapper(request, *args, **kwargs):
response = view_func(request, *args)
response["X-Decorator"] = "some_decorator"
return response
return wrapper
def test_decorator_before():
api = NinjaAPI()
@decorate_view(some_decorator)
@api.get("/before")
def dec_before(request):
return 1
client = TestClient(api)
response = client.get("/before")
assert response.status_code == 200
assert response["X-Decorator"] == "some_decorator"
def test_decorator_after():
api = NinjaAPI()
@api.get("/after")
@decorate_view(some_decorator)
def dec_after(request):
return 1
client = TestClient(api)
response = client.get("/after")
assert response.status_code == 200
assert response["X-Decorator"] == "some_decorator"
def test_decorator_multiple():
api = NinjaAPI()
@api.get("/multi", response=List[int])
@decorate_view(some_decorator)
@paginate
def dec_multi(request):
return [1, 2, 3, 4]
client = TestClient(api)
response = client.get("/multi")
assert response.status_code == 200
assert response.json() == {"count": 4, "items": [1, 2, 3, 4]}
assert response["X-Decorator"] == "some_decorator"
|