Skip to content

Commit 15a82e1

Browse files
committed
Make NinjaClientBase abstract and define _call method
1 parent 55203e4 commit 15a82e1

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

ninja/testing/client.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from abc import ABC, abstractmethod
12
from json import dumps as json_dumps
23
from json import loads as json_loads
34
from typing import (
@@ -12,6 +13,7 @@
1213
TypeVar,
1314
Union,
1415
cast,
16+
override,
1517
)
1618
from unittest.mock import Mock
1719
from urllib.parse import urljoin
@@ -37,7 +39,7 @@ def build_absolute_uri(location: Optional[str] = None) -> str:
3739

3840
# TODO: this should be changed
3941
# maybe add here urlconf object and add urls from here
40-
class NinjaClientBase(Generic[ResponseT]):
42+
class NinjaClientBase(Generic[ResponseT], ABC):
4143
__test__ = False # <- skip pytest
4244

4345
def __init__(
@@ -114,7 +116,10 @@ def request(
114116
**request_params.get("COOKIES", {}),
115117
}
116118
func, request, kwargs = self._resolve(method, path, data, request_params)
117-
return self._call(func, request, kwargs) # type: ignore
119+
return self._call(func, request, kwargs)
120+
121+
@abstractmethod
122+
def _call(self, func: Callable, request: Mock, kwargs: Dict) -> ResponseT: ...
118123

119124
@property
120125
def urls(self) -> List:
@@ -201,11 +206,13 @@ def _build_request(
201206

202207

203208
class TestClient(NinjaClientBase["NinjaResponse"]):
209+
@override
204210
def _call(self, func: Callable, request: Mock, kwargs: Dict) -> "NinjaResponse":
205211
return NinjaResponse(func(request, **kwargs))
206212

207213

208214
class TestAsyncClient(NinjaClientBase[Awaitable["NinjaResponse"]]):
215+
@override
209216
async def _call(
210217
self, func: Callable, request: Mock, kwargs: Dict
211218
) -> "NinjaResponse":

0 commit comments

Comments
 (0)