Skip to content

Commit b395a9f

Browse files
author
¨eadwinCode¨
committed
Added test for provider injector
1 parent 9c262da commit b395a9f

File tree

3 files changed

+41
-2
lines changed

3 files changed

+41
-2
lines changed

ellar/common/params/resolvers/system_parameters/provider.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import inspect
22
import typing as t
33

4+
from ellar.common.exceptions import ImproperConfiguration
45
from ellar.common.interfaces import IExecutionContext
56
from ellar.common.types import T
67

@@ -18,14 +19,14 @@ def __call__(
1819
self.parameter_name = parameter_name
1920
self.type_annotation = parameter_annotation
2021
if not self.data and isinstance(self.type_annotation, inspect.Parameter.empty):
21-
raise Exception("Inject Type must have a valid type")
22+
raise ImproperConfiguration("Inject Type must have a valid type")
2223

2324
if (
2425
self.data
2526
and parameter_annotation is not inspect.Parameter.empty
2627
and parameter_annotation is not self.data
2728
):
28-
raise Exception(
29+
raise ImproperConfiguration(
2930
f"Annotation({self.type_annotation}) is not the same as service({self.data})"
3031
)
3132

tests/test_system_parameter_resolvers/__init__.py

Whitespace-only changes.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import inspect
2+
from unittest.mock import Mock
3+
4+
import pytest
5+
from ellar.common.exceptions import ImproperConfiguration
6+
from ellar.common.params.resolvers.system_parameters import ProviderParameterInjector
7+
from ellar.core import ExecutionContext
8+
9+
10+
class InjectableType1:
11+
name: str = "Ellar"
12+
13+
14+
class InjectableType2:
15+
name: str = "Ellar"
16+
17+
18+
def test_provider_setup_fails_for_no_service_defined():
19+
provider_resolver = ProviderParameterInjector()
20+
21+
with pytest.raises(ImproperConfiguration):
22+
provider_resolver("parameter_name", inspect.Parameter.empty)
23+
24+
25+
def test_provider_setup_fails_for_service_mismatch():
26+
#
27+
provider_resolver = ProviderParameterInjector()
28+
provider_resolver.data = InjectableType2
29+
30+
with pytest.raises(ImproperConfiguration):
31+
provider_resolver("parameter_name", InjectableType1)
32+
33+
34+
async def test_provider_setup_fails_when_it_has_not_service(anyio_backend):
35+
provider_resolver = ProviderParameterInjector()
36+
37+
with pytest.raises(RuntimeError):
38+
await provider_resolver.resolve(Mock(spec=ExecutionContext))

0 commit comments

Comments
 (0)