Skip to content

Commit 35da29b

Browse files
fix: improve picking response handler
Now it will raise an error if it's impossible to pick handler
1 parent ef3c8b5 commit 35da29b

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

openapi_tester/response_handler_factory.py

+18-7
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@
33
Module that contains the factory to create response handlers.
44
"""
55

6-
from typing import TYPE_CHECKING, Union
7-
8-
from rest_framework.response import Response
6+
import contextlib
7+
from typing import TYPE_CHECKING
98

109
from openapi_tester.response_handler import (
1110
DjangoNinjaResponseHandler,
@@ -26,8 +25,20 @@ class ResponseHandlerFactory:
2625

2726
@staticmethod
2827
def create(
29-
*request_args, response: Union[Response, "HttpResponse"], **kwargs
28+
*request_args,
29+
response: "HttpResponse",
30+
**kwargs,
3031
) -> "ResponseHandler":
31-
if isinstance(response, Response):
32-
return DRFResponseHandler(response=response)
33-
return DjangoNinjaResponseHandler(*request_args, response=response, **kwargs)
32+
with contextlib.suppress(ImportError):
33+
from rest_framework.response import Response as DRFResponse
34+
35+
if isinstance(response, DRFResponse):
36+
return DRFResponseHandler(response=response)
37+
with contextlib.suppress(ImportError):
38+
from ninja.testing.client import NinjaResponse
39+
40+
if isinstance(response, NinjaResponse):
41+
return DjangoNinjaResponseHandler(
42+
*request_args, response=response, **kwargs
43+
)
44+
raise ValueError(f"Can't pick response handler for {response}!")

0 commit comments

Comments
 (0)