Skip to content

Commit 6ff7e98

Browse files
authored
Merge pull request #101 from eadwinCode/di_container_fix
Fixed register_services not calling in modules
2 parents dce02ec + 0fb4deb commit 6ff7e98

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

ellar/di/injector/container.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,10 +238,10 @@ def register_services(self, container):
238238
t.cast(type, instance), InjectorModule
239239
):
240240
instance = t.cast(type, instance)(**init_kwargs)
241-
elif isinstance(instance, type) and not isinstance(instance, InjectorModule):
241+
elif isinstance(instance, type):
242242
return self.injector.get(t.cast(type, instance))
243243
elif not isinstance(instance, type) and not isinstance(
244-
type(instance), InjectorModule
244+
instance, InjectorModule
245245
):
246246
return instance
247247

tests/test_di/test_injector.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def test_container_install_module_case_1():
2525
called = False
2626
app_container = EllarInjector().container
2727

28-
class FakeModule(ModuleBase):
28+
class PlainModule(ModuleBase):
2929
def register_services(self, container: Container) -> None:
3030
nonlocal called
3131
called = True
@@ -36,16 +36,25 @@ def register_services(self, container: Container) -> None:
3636
nonlocal called
3737
called = True
3838

39-
fake_module = app_container.install(FakeModule)
39+
plain_module = app_container.install(PlainModule)
4040
assert called
41-
assert isinstance(fake_module, FakeModule)
41+
assert isinstance(plain_module, PlainModule)
4242

4343
called = False
4444

4545
decorated_module = app_container.install(DecoratedModuleWithBase)
4646
assert called
4747
assert isinstance(decorated_module, DecoratedModuleWithBase)
4848

49+
called = False
50+
app_container.install(PlainModule())
51+
assert called
52+
53+
called = False
54+
55+
app_container.install(DecoratedModuleWithBase())
56+
assert called
57+
4958

5059
def test_container_install_module_return_case_2():
5160
called = False
@@ -61,6 +70,10 @@ def register_services(self, container: Container) -> None:
6170
assert called is False
6271
assert isinstance(decorated_module, DecoratedModule)
6372

73+
decorated_module = app_container.install(DecoratedModule())
74+
assert called is False
75+
assert isinstance(decorated_module, DecoratedModule)
76+
6477

6578
def test_default_container_registration():
6679
injector = EllarInjector(auto_bind=False)

0 commit comments

Comments
 (0)