Skip to content

Commit 6163281

Browse files
committed
Fixed some failing tests
1 parent 5b8cfa7 commit 6163281

File tree

5 files changed

+71
-51
lines changed

5 files changed

+71
-51
lines changed

ellar/common/decorators/modules.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def Module(
6060
template_folder: t.Optional[str] = "templates",
6161
base_directory: t.Optional[t.Union[Path, str]] = None,
6262
static_folder: str = "static",
63-
modules: t.Sequence[t.Type] = tuple(),
63+
modules: t.Sequence[t.Union[t.Type, t.Any]] = tuple(),
6464
commands: t.Sequence[t.Union[t.Callable, "EllarTyper"]] = tuple(),
6565
) -> t.Callable:
6666
"""
@@ -82,11 +82,11 @@ def Module(
8282
8383
:param static_folder: Module static folder name
8484
85-
:param modules: List of Module Types - t.Type[MODULEBASE]
85+
:param modules: List of Module Types - t.Type[ModuleBase]
8686
8787
:param commands: List of Command Decorated functions and EllarTyper
8888
89-
:return: t.TYPE[MODULEBASE]
89+
:return: t.TYPE[ModuleBase]
9090
"""
9191
kwargs = AttributeDict(
9292
name=name,

tests/test_application/test_application_factory.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from starlette.routing import Host, Mount
22

33
from ellar.common import Module
4-
from ellar.core import AppFactory, Config, ModuleBase, TestClient
4+
from ellar.core import AppFactory, Config, ModuleBase, ModuleConfigure, TestClient
55
from ellar.di import EllarInjector
66

77
from .sample import (
@@ -26,17 +26,17 @@ class BModule:
2626

2727

2828
def test_factory__read_all_module():
29-
modules_dict = AppFactory.read_all_module(module=BModule)
29+
modules_dict = AppFactory.read_all_module(ModuleConfigure(BModule))
3030
assert len(modules_dict) == 2
31-
assert list(modules_dict.values())[0] is AModule
32-
assert list(modules_dict.values())[1] is ApplicationModule
31+
assert list(modules_dict.values())[0].module is AModule
32+
assert list(modules_dict.values())[1].module is ApplicationModule
3333

34-
modules_list = AppFactory.get_all_modules(module=AModule)
34+
modules_list = AppFactory.get_all_modules(ModuleConfigure(AModule))
3535
assert len(modules_list) == 2
36-
assert modules_list[0] is AModule
37-
assert modules_list[1] is ApplicationModule
36+
assert modules_list[0].module is AModule
37+
assert modules_list[1].module is ApplicationModule
3838

39-
modules_dict = AppFactory.read_all_module(module=ApplicationModule)
39+
modules_dict = AppFactory.read_all_module(ModuleConfigure(ApplicationModule))
4040
assert len(modules_dict) == 0
4141

4242

tests/test_application/test_application_functions.py

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ def run_cleanup():
126126
app = App(
127127
config=Config(),
128128
injector=EllarInjector(),
129+
routes=[],
129130
on_startup_event_handlers=[EventHandler(run_startup)],
130131
on_shutdown_event_handlers=[EventHandler(run_cleanup)],
131132
)
@@ -149,7 +150,9 @@ async def lifespan(app):
149150
yield
150151
cleanup_complete = True
151152

152-
app = App(config=Config(), injector=EllarInjector(), lifespan=lifespan)
153+
app = App(
154+
config=Config(), injector=EllarInjector(), lifespan=lifespan, routes=[]
155+
)
153156

154157
assert not startup_complete
155158
assert not cleanup_complete
@@ -214,7 +217,7 @@ def test_app_staticfiles_route(self, tmpdir):
214217
injector = EllarInjector()
215218
CoreServiceRegistration(injector, config=Config()).register_all()
216219
injector.container.register_instance(config)
217-
app = App(injector=injector, config=config)
220+
app = App(injector=injector, config=config, routes=[])
218221
client = TestClient(app)
219222

220223
response = client.get("/static/example.txt")
@@ -236,7 +239,7 @@ def test_app_staticfiles_with_different_static_path(self, tmpdir):
236239
injector = EllarInjector()
237240
CoreServiceRegistration(injector, config=Config()).register_all()
238241
injector.container.register_instance(config)
239-
app = App(injector=injector, config=config)
242+
app = App(injector=injector, config=config, routes=[])
240243
client = TestClient(app)
241244

242245
response = client.get("/static-modified/example.txt")
@@ -255,15 +258,15 @@ def test_app_install_module(self):
255258
assert module_instance is module_instance2
256259

257260
def test_has_static_files(self, tmpdir):
258-
app = App(injector=EllarInjector(), config=Config())
261+
app = App(injector=EllarInjector(), config=Config(), routes=[])
259262
assert app.has_static_files is False
260263

261264
config = Config(STATIC_DIRECTORIES=[tmpdir])
262-
app = App(injector=EllarInjector(), config=config)
265+
app = App(injector=EllarInjector(), config=config, routes=[])
263266
assert app.has_static_files
264267

265268
def test_app_enable_versioning_and_versioning_scheme(self):
266-
app = App(injector=EllarInjector(), config=Config())
269+
app = App(injector=EllarInjector(), config=Config(), routes=[])
267270
assert app.config.VERSIONING_SCHEME
268271
assert isinstance(app.config.VERSIONING_SCHEME, DefaultAPIVersioning)
269272

@@ -287,7 +290,7 @@ def test_app_initialization_completion(self):
287290
CoreServiceRegistration(injector, config=Config()).register_all()
288291
injector.container.register_instance(config)
289292

290-
app = App(config=config, injector=injector)
293+
app = App(config=config, injector=injector, routes=[])
291294
assert injector.get(Reflector)
292295
assert injector.get(Config) is config
293296
assert injector.get(Environment) is app.jinja_environment
@@ -310,7 +313,7 @@ async def catch(
310313
) # will raise an exception is service is not registered
311314
CoreServiceRegistration(injector, config=Config()).register_all()
312315
injector.container.register_instance(config)
313-
app = App(config=config, injector=injector)
316+
app = App(config=config, injector=injector, routes=[])
314317
app.add_exception_handler(CustomExceptionHandler())
315318

316319
@get("/404")
@@ -361,7 +364,7 @@ def test_app_create_static_app(self, tmpdir):
361364
file.write("<file content>")
362365

363366
config = Config(STATIC_DIRECTORIES=[tmpdir])
364-
app = App(injector=EllarInjector(), config=config)
367+
app = App(injector=EllarInjector(), config=config, routes=[])
365368
static_app = app.create_static_app()
366369
assert isinstance(static_app, StaticFiles)
367370
client = TestClient(static_app)
@@ -383,7 +386,7 @@ def test_app_reload_static_app(self, tmpdir):
383386
file.write("<file content>")
384387

385388
config = Config(STATIC_DIRECTORIES=[tmpdir])
386-
app = App(injector=EllarInjector(), config=config)
389+
app = App(injector=EllarInjector(), config=config, routes=[])
387390
static_app_old = app._static_app
388391

389392
app.reload_static_app()
@@ -396,7 +399,7 @@ def test_app_reload_static_app(self, tmpdir):
396399
assert res.text == "<file content>"
397400

398401
def test_app_template_filter(self):
399-
app = App(injector=EllarInjector(), config=Config())
402+
app = App(injector=EllarInjector(), config=Config(), routes=[])
400403

401404
@app.template_filter()
402405
def square(value):
@@ -421,7 +424,7 @@ def triple_function(value):
421424
assert result == "<html>filter square: 4, filter triple_function: 27</html>"
422425

423426
def test_app_template_global(self):
424-
app = App(injector=EllarInjector(), config=Config())
427+
app = App(injector=EllarInjector(), config=Config(), routes=[])
425428

426429
@app.template_global()
427430
def square(value):

tests/test_modules/test_module_ref.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -324,22 +324,16 @@ def test_run_application_ready_works():
324324
@Module()
325325
class TestModuleCycleExample(ModuleBase):
326326
_before_init_called = False
327-
_app_ready_called = False
328327

329328
@classmethod
330329
def before_init(cls, config: Config) -> None:
331330
cls._before_init_called = True
332331

333-
def application_ready(self, app) -> None:
334-
self.__class__._app_ready_called = True
335-
336332
assert TestModuleCycleExample._before_init_called is False
337-
assert TestModuleCycleExample._app_ready_called is False
338333

339334
AppFactory.create_from_app_module(TestModuleCycleExample)
340335

341336
assert TestModuleCycleExample._before_init_called
342-
assert TestModuleCycleExample._app_ready_called
343337

344338

345339
def test_module_request_events():

tests/test_openapi/test_module.py

Lines changed: 45 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@
99
)
1010
from ellar.core.modules.ref import create_module_ref_factor
1111
from ellar.di import EllarInjector
12-
from ellar.openapi import OpenAPIDocumentBuilder, OpenAPIDocumentModule
12+
from ellar.openapi import (
13+
OpenAPIDocumentBuilder,
14+
OpenAPIDocumentModule,
15+
ReDocDocumentGenerator,
16+
SwaggerDocumentGenerator,
17+
)
1318

1419

1520
class CustomDocsGuard(GuardCanActivate):
@@ -37,35 +42,49 @@ def test_openapi_module_template_path_exist():
3742
assert len(list_of_html_contained_in_path) == 0
3843

3944

40-
def test_openapi_module_with_openapi_url_doesnot_exist_new_openapi_url():
45+
def test_openapi_module_with_openapi_url_doesnot_create_new_openapi_url():
4146
app = AppFactory.create_app()
47+
client = TestClient(app)
4248
document = OpenAPIDocumentBuilder().build_document(app)
4349

44-
module_instance = app.install_module(
45-
OpenAPIDocumentModule, openapi_url="/openapi_url.json", document=document
50+
module_config = OpenAPIDocumentModule.module_configure(
51+
openapi_url="/openapi_url.json",
52+
document=document,
53+
document_generator=SwaggerDocumentGenerator(),
4654
)
47-
assert module_instance._openapi_url == "/openapi_url.json"
55+
app.install_module(module_config)
56+
res = client.get("/docs")
57+
assert res.status_code == 200
58+
assert "/openapi_url.json" in res.text
4859

4960

5061
def test_openapi_module_creates_openapi_url():
5162
app = AppFactory.create_app()
5263
document = OpenAPIDocumentBuilder().build_document(app)
64+
client = TestClient(app)
65+
66+
module_config = OpenAPIDocumentModule.module_configure(
67+
document=document, document_generator=SwaggerDocumentGenerator()
68+
)
69+
app.install_module(module_config)
70+
res = client.get("/docs")
5371

54-
module_instance = app.install_module(OpenAPIDocumentModule, document=document)
55-
assert module_instance._openapi_url == "/openapi.json"
72+
assert res.status_code == 200
73+
assert "/openapi.json" in res.text
5674

5775

5876
def test_openapi_module_creates_swagger_endpoint():
5977
app = AppFactory.create_app()
6078
document = OpenAPIDocumentBuilder().build_document(app)
6179

62-
module_instance = app.install_module(
63-
OpenAPIDocumentModule, document=document, openapi_url="/openapi_url.json"
64-
)
65-
66-
module_instance.setup_swagger_doc(
67-
title="Swagger Doc Test", path="docs-swagger-test"
80+
module_config = OpenAPIDocumentModule.module_configure(
81+
openapi_url="/openapi_url.json",
82+
document=document,
83+
document_generator=SwaggerDocumentGenerator(
84+
title="Swagger Doc Test", path="docs-swagger-test"
85+
),
6886
)
87+
app.install_module(module_config)
6988
client = TestClient(app)
7089
response = client.get("docs-swagger-test")
7190
assert response.status_code == 200
@@ -78,13 +97,16 @@ def test_openapi_module_creates_swagger_endpoint():
7897
def test_openapi_module_creates_redocs_endpoint():
7998
app = AppFactory.create_app()
8099
document = OpenAPIDocumentBuilder().build_document(app)
81-
82-
module_instance = app.install_module(
83-
OpenAPIDocumentModule, document=document, openapi_url="/openapi_url.json"
100+
module_config = OpenAPIDocumentModule.module_configure(
101+
openapi_url="/openapi_url.json",
102+
document=document,
103+
document_generator=ReDocDocumentGenerator(
104+
title="Redocs Doc Test", path="docs-redocs-test"
105+
),
84106
)
85-
86-
module_instance.setup_redocs(title="Redocs Doc Test", path="docs-redocs-test")
107+
app.install_module(module_config)
87108
client = TestClient(app)
109+
88110
response = client.get("docs-redocs-test")
89111
assert response.status_code == 200
90112

@@ -97,11 +119,12 @@ def test_openapi_module_with_route_guards():
97119
app = AppFactory.create_app(providers=[CustomDocsGuard])
98120
document = OpenAPIDocumentBuilder().build_document(app)
99121

100-
module_instance = app.install_module(
101-
OpenAPIDocumentModule, document=document, guards=[CustomDocsGuard]
122+
module_config = OpenAPIDocumentModule.module_configure(
123+
document=document,
124+
guards=[CustomDocsGuard],
125+
document_generator=(SwaggerDocumentGenerator(), ReDocDocumentGenerator()),
102126
)
103-
module_instance.setup_redocs()
104-
module_instance.setup_swagger_doc()
127+
app.install_module(module_config)
105128
client = TestClient(app)
106129

107130
response = client.get("openapi.json")

0 commit comments

Comments
 (0)