Skip to content

Commit edf3d99

Browse files
committed
fixed failing tests proper
1 parent 3b0188d commit edf3d99

File tree

4 files changed

+49
-34
lines changed

4 files changed

+49
-34
lines changed

ellar/common/models/controller.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ def add_router(
3333
router: t.Union["ControllerBase", "ModuleRouter"],
3434
prefix: t.Optional[str] = None,
3535
) -> None:
36+
if prefix:
37+
assert prefix.startswith("/"), "'prefix' must start with '/'"
38+
3639
reflect.define_metadata(
3740
NESTED_ROUTERS_KEY, [NestedRouterInfo(prefix=prefix, router=router)], cls
3841
)

ellar/common/operations/router.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ def add_router(
5454
router: t.Union["ModuleRouter", "ControllerBase"],
5555
prefix: t.Optional[str] = None,
5656
) -> None:
57+
if prefix:
58+
assert prefix.startswith("/"), "'prefix' must start with '/'"
5759
reflect.define_metadata(
5860
NESTED_ROUTERS_KEY,
5961
[NestedRouterInfo(prefix=prefix, router=router)],

tests/test_controller/test_nested_controllers.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import pytest
12
from ellar.common import Controller, get
3+
from ellar.common.exceptions import ImproperConfiguration
4+
from ellar.reflect import reflect
25
from ellar.testing import Test
36

47

@@ -24,28 +27,30 @@ async def create_cat(self):
2427

2528

2629
def test_can_reach_controllers():
27-
Cat2Controller.add_router(Cat1Controller)
28-
Cat3Controller.add_router(Cat2Controller)
30+
with reflect.context():
31+
Cat2Controller.add_router(Cat1Controller, prefix="/sr")
32+
Cat3Controller.add_router(Cat2Controller)
2933

30-
tm = Test.create_test_module(controllers=[Cat3Controller])
34+
tm = Test.create_test_module(controllers=[Cat3Controller])
3135

32-
client = tm.get_test_client()
33-
res = client.get("cat3/cat2/create")
34-
assert res.status_code == 200
35-
assert res.json() == {"message": "created from Cat2Controller"}
36+
client = tm.get_test_client()
37+
res = client.get("cat3/cat2/create")
38+
assert res.status_code == 200
39+
assert res.json() == {"message": "created from Cat2Controller"}
3640

37-
res = client.get("cat3/cat2/cat1/create")
38-
assert res.status_code == 200
39-
assert res.json() == {"message": "created from Cat1Controller"}
41+
res = client.get("cat3/cat2/sr/cat1/create")
42+
assert res.status_code == 200
43+
assert res.json() == {"message": "created from Cat1Controller"}
4044

41-
res = client.get("cat3/create")
42-
assert res.status_code == 200
43-
assert res.json() == {"message": "created from Cat3Controller"}
45+
res = client.get("cat3/create")
46+
assert res.status_code == 200
47+
assert res.json() == {"message": "created from Cat3Controller"}
4448

4549

4650
def test_circular_exception_works():
47-
Cat2Controller.add_router(Cat1Controller)
48-
Cat1Controller.add_router(Cat2Controller)
51+
with reflect.context():
52+
Cat2Controller.add_router(Cat1Controller)
53+
Cat1Controller.add_router(Cat2Controller)
4954

50-
# with pytest.raises(ImproperConfiguration, match="Circular Nested router"):
51-
Test.create_test_module(controllers=[Cat2Controller]).create_application()
55+
with pytest.raises(ImproperConfiguration, match="Circular Nested router"):
56+
Test.create_test_module(controllers=[Cat2Controller]).create_application()

tests/test_routing/test_nested_router.py

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import pytest
12
from ellar.common import ModuleRouter
3+
from ellar.common.exceptions import ImproperConfiguration
4+
from ellar.reflect import reflect
25
from ellar.testing import Test
36

47
router1 = ModuleRouter("/cat1")
@@ -26,28 +29,30 @@ async def create_cat_3():
2629

2730

2831
def test_can_reach_routers():
29-
router2.add_router(router1)
30-
router3.add_router(router2)
32+
with reflect.context():
33+
router2.add_router(router1, prefix="/sr")
34+
router3.add_router(router2)
3135

32-
tm = Test.create_test_module(routers=[router3])
36+
tm = Test.create_test_module(routers=[router3])
3337

34-
client = tm.get_test_client()
35-
res = client.get("cat3/cat2/create")
36-
assert res.status_code == 200
37-
assert res.json() == {"message": "created from ModuleRouter2"}
38+
client = tm.get_test_client()
39+
res = client.get("cat3/cat2/create")
40+
assert res.status_code == 200
41+
assert res.json() == {"message": "created from ModuleRouter2"}
3842

39-
res = client.get("cat3/cat2/cat1/create")
40-
assert res.status_code == 200
41-
assert res.json() == {"message": "created from ModuleRouter1"}
43+
res = client.get("cat3/cat2/sr/cat1/create")
44+
assert res.status_code == 200
45+
assert res.json() == {"message": "created from ModuleRouter1"}
4246

43-
res = client.get("cat3/create")
44-
assert res.status_code == 200
45-
assert res.json() == {"message": "created from ModuleRouter3"}
47+
res = client.get("cat3/create")
48+
assert res.status_code == 200
49+
assert res.json() == {"message": "created from ModuleRouter3"}
4650

4751

4852
def test_circular_exception_works_router_reference():
49-
router2.add_router(router1)
50-
router1.add_router(router2)
53+
with reflect.context():
54+
router2.add_router(router1)
55+
router1.add_router(router2)
5156

52-
# with pytest.raises(ImproperConfiguration, match="Circular Nested router"):
53-
Test.create_test_module(routers=[router2]).create_application()
57+
with pytest.raises(ImproperConfiguration, match="Circular Nested router"):
58+
Test.create_test_module(routers=[router2]).create_application()

0 commit comments

Comments
 (0)