Skip to content

Commit dce4372

Browse files
committed
Added more test
1 parent f6dc329 commit dce4372

File tree

6 files changed

+101
-21
lines changed

6 files changed

+101
-21
lines changed

tests/test_application/test_testclient_factory.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ def test_test_client_factory_create_test_module(tmpdir):
7676
def test_client_factory_create_test_module_from_module():
7777
reflect.metadata(
7878
metadata_key=MODULE_METADATA.PROVIDERS,
79-
metadata_value=ProviderConfig(base_type=IFoo, use_class=Foo),
79+
metadata_value=[ProviderConfig(base_type=IFoo, use_class=Foo)],
8080
)(
8181
ApplicationModule
8282
) # dynamically add IFoo to ApplicationModule Providers

tests/test_controller/test_controller_inheritance.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def endpoint_once(self):
4444

4545
reflect.define_metadata(
4646
CONTROLLER_CLASS_KEY,
47-
type("slme", (), {}),
47+
None,
4848
AnotherSampleController.endpoint_once,
4949
)
5050

tests/test_modules/test_module_ref.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ def test_module_template_ref_get_all_routers_fails_for_invalid_controller():
234234
some_invalid_controller = type("SomeInvalidController", (), {})
235235
with reflect.context():
236236
reflect.define_metadata(
237-
MODULE_METADATA.CONTROLLERS, some_invalid_controller, ModuleBaseExample
237+
MODULE_METADATA.CONTROLLERS, [some_invalid_controller], ModuleBaseExample
238238
)
239239
config = Config()
240240
container = EllarInjector(auto_bind=False).container

tests/test_reflect.py

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,18 @@ def test_define_metadata_creates_attribute_dict(random_type):
1515
def test_define_metadata_without_default(random_type):
1616
key = "FrameworkName"
1717

18-
reflect.define_metadata(key, "Ellar", random_type, default_value=None)
18+
reflect.define_metadata(key, "Ellar", random_type)
1919
assert reflect.get_metadata(key, random_type) == "Ellar"
20-
reflect.define_metadata(key, "Starlette", random_type, default_value=None)
21-
assert reflect.get_metadata(key, random_type) == ["Ellar", "Starlette"]
20+
reflect.define_metadata(key, "Starlette", random_type)
21+
assert reflect.get_metadata(key, random_type) == "Starlette"
2222

2323

2424
def test_define_metadata_with_existing_tuple(random_type):
25-
reflect.define_metadata("B", "EllarB", random_type, default_value=tuple())
25+
reflect.define_metadata("B", ("EllarB",), random_type)
2626
assert reflect.get_metadata("B", random_type) == ("EllarB",)
2727

28-
reflect.define_metadata("B", "AnotherEllar", random_type)
29-
reflect.define_metadata("B", "AnotherEllarC", random_type)
28+
reflect.define_metadata("B", ("AnotherEllar",), random_type)
29+
reflect.define_metadata("B", ("AnotherEllarC",), random_type)
3030
assert reflect.get_metadata("B", random_type) == (
3131
"EllarB",
3232
"AnotherEllar",
@@ -35,11 +35,11 @@ def test_define_metadata_with_existing_tuple(random_type):
3535

3636

3737
def test_define_metadata_with_existing_list(random_type):
38-
reflect.define_metadata("B", "Ellar", random_type, default_value=[])
38+
reflect.define_metadata("B", ["Ellar"], random_type)
3939
assert reflect.get_metadata("B", random_type) == ["Ellar"]
4040

41-
reflect.define_metadata("B", "AnotherEllar", random_type)
42-
reflect.define_metadata("B", "AnotherEllarD", random_type)
41+
reflect.define_metadata("B", ["AnotherEllar"], random_type)
42+
reflect.define_metadata("B", ["AnotherEllarD"], random_type)
4343
assert reflect.get_metadata("B", random_type) == [
4444
"Ellar",
4545
"AnotherEllar",
@@ -48,7 +48,7 @@ def test_define_metadata_with_existing_list(random_type):
4848

4949

5050
def test_define_metadata_with_existing_dict(random_type):
51-
reflect.define_metadata("C", dict(C="EllarC"), random_type, default_value=dict())
51+
reflect.define_metadata("C", dict(C="EllarC"), random_type)
5252
assert reflect.get_metadata("C", random_type) == dict(C="EllarC")
5353

5454
reflect.define_metadata("C", dict(D="EllarD"), random_type)
@@ -59,8 +59,8 @@ def test_define_metadata_with_existing_dict(random_type):
5959

6060

6161
def test_define_metadata_with_existing_set(random_type):
62-
reflect.define_metadata("A", "EllarA", random_type, default_value=set())
63-
reflect.define_metadata("A", "AnotherEllar", random_type)
62+
reflect.define_metadata("A", {"EllarA"}, random_type)
63+
reflect.define_metadata("A", {"AnotherEllar"}, random_type)
6464
assert reflect.get_metadata("A", random_type) == {"AnotherEllar", "EllarA"}
6565

6666

@@ -152,3 +152,10 @@ def function_new():
152152
def test_define_metadata_raise_exception():
153153
with pytest.raises(Exception, match="`target` is not a valid type"):
154154
reflect.define_metadata("defined_key_c", "Eadwin", "defined_key_c")
155+
156+
with pytest.raises(Exception, match="`target` is not a valid type"):
157+
reflect.define_metadata("defined_key_c", "Eadwin", None)
158+
159+
160+
def test_define_metadata_overrides_existing_collection_of_different_type():
161+
pass

tests/test_reflector.py

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
from ellar.reflect import reflect
2+
from ellar.services.reflector import Reflector
3+
4+
reflector = Reflector()
5+
6+
7+
class SampleTarget:
8+
pass
9+
10+
11+
def test_should_reflect_metadata():
12+
key = "key"
13+
value = "value"
14+
reflect.define_metadata(key, value, SampleTarget)
15+
assert reflector.get(key, SampleTarget) == value
16+
17+
18+
def test_should_reflect_metadata_of_all_targets():
19+
key = "key"
20+
value = "value"
21+
reflect.define_metadata(key, value, SampleTarget)
22+
assert reflector.get_all(key, *[SampleTarget]) == [value]
23+
24+
25+
def test_should_return_an_empty_array_when_there_are_no_targets():
26+
key = "key"
27+
assert reflector.get_all_and_merge(key, *[]) == []
28+
29+
30+
def test_should_reflect_metadata_of_all_targets_and_concat_arrays():
31+
key = "key"
32+
value = "value"
33+
reflect.define_metadata(key, [value], SampleTarget)
34+
assert reflector.get_all_and_merge(key, *[SampleTarget, SampleTarget]) == [
35+
value,
36+
value,
37+
]
38+
39+
40+
def test_should_reflect_metadata_of_all_targets_in_an_arrays():
41+
key = "key"
42+
value = "value"
43+
reflect.define_metadata(key, value, SampleTarget)
44+
assert reflector.get_all_and_merge(
45+
key, *[SampleTarget, SampleTarget, SampleTarget]
46+
) == [value, value, value]
47+
48+
49+
def test_should_reflect_metadata_of_all_targets_and_merge_an_object(random_type):
50+
key = "key"
51+
value = dict(test="test")
52+
reflect.define_metadata(key, value, SampleTarget)
53+
assert reflector.get_all_and_merge(key, *[SampleTarget, SampleTarget]) == value
54+
55+
56+
def test_should_reflect_metadata_of_all_targets_and_merge_different_objects(
57+
random_type,
58+
):
59+
key = "key"
60+
value = dict(test="test")
61+
reflect.define_metadata(key, value, SampleTarget)
62+
reflect.define_metadata(key, dict(test_2="test_2"), SampleTarget)
63+
assert reflector.get_all_and_merge(key, *[SampleTarget, SampleTarget]) == dict(
64+
test="test", test_2="test_2"
65+
)
66+
67+
68+
def test_should_reflect_metadata_of_all_targets_and_return_a_first_not_undefined_value():
69+
key = "key"
70+
value = "value"
71+
reflect.define_metadata(key, value, SampleTarget)
72+
assert reflector.get_all_and_override(key, *[SampleTarget, SampleTarget]) == value

tests/test_routing/test_extra_args.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
from starlette.responses import Response
44

5-
from ellar.common import Context, Query, Res, get, set_metadata
6-
from ellar.constants import EXTRA_ROUTE_ARGS_KEY
5+
from ellar.common import Context, Query, Res, extra_args, get
76
from ellar.core import TestClientFactory
87
from ellar.core.connection import Request
98
from ellar.core.context import IExecutionContext
@@ -22,12 +21,14 @@ def add_additional_signature_to_endpoint(func):
2221
query2 = ExtraEndpointArg(
2322
name="query2", annotation=str
2423
) # will default to Query during computation
25-
extra_args = [query1, query2]
26-
set_metadata(EXTRA_ROUTE_ARGS_KEY, extra_args)(func)
24+
25+
extra_args(query1, query2)(func)
2726

2827
@wraps(func)
2928
def _wrapper(*args, **kwargs):
3029
# RESOLVING EXTRA ARGS
30+
# All extra args must be resolved before calling route function
31+
# else extra argument will be pushed to the route function
3132
resolved_query1 = query1.resolve(kwargs)
3233
resolved_query2 = query2.resolve(kwargs)
3334

@@ -47,8 +48,8 @@ def add_extra_non_field_extra_args(func):
4748
name="response", annotation=Response, default_value=Res()
4849
)
4950

50-
set_metadata(EXTRA_ROUTE_ARGS_KEY, response)(func)
51-
set_metadata(EXTRA_ROUTE_ARGS_KEY, context)(func)
51+
extra_args(response)(func)
52+
extra_args(context)(func)
5253

5354
@wraps(func)
5455
def _wrapper(*args, **kwargs):

0 commit comments

Comments
 (0)