Skip to content

Commit 17cce01

Browse files
committed
added test for injector app module functions
1 parent 45f2f35 commit 17cce01

File tree

1 file changed

+85
-1
lines changed

1 file changed

+85
-1
lines changed

tests/test_di/test_injector.py

Lines changed: 85 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,27 @@
1+
from collections import OrderedDict
2+
13
import pytest
24
from injector import Binder, Injector, UnsatisfiedRequirement
35

46
from ellar.common import Module
5-
from ellar.core import ModuleBase
7+
from ellar.constants import MODULE_REF_TYPES
8+
from ellar.core import Config, ModuleBase
9+
from ellar.core.modules.ref import create_module_ref_factor
610
from ellar.di import Container, EllarInjector
711
from ellar.di.providers import ClassProvider, InstanceProvider
812

913
from .examples import Foo, Foo1, Foo2
1014

1115

16+
class EllarTestPlainModule(ModuleBase):
17+
pass
18+
19+
20+
@Module(template_folder="some_template")
21+
class EllarTestTemplateModule(ModuleBase):
22+
pass
23+
24+
1225
def test_container_install_module():
1326
called = False
1427
app_container = EllarInjector().container
@@ -83,3 +96,74 @@ def assert_attributes(provider, expected):
8396
injector.get(Foo)
8497

8598
assert_attributes(request_provider, False)
99+
100+
101+
class TestInjectorModuleFunctions:
102+
def setup(self):
103+
self.injector = EllarInjector()
104+
config = Config()
105+
106+
assert isinstance(
107+
self.injector._modules[MODULE_REF_TYPES.TEMPLATE], OrderedDict
108+
)
109+
assert isinstance(self.injector._modules[MODULE_REF_TYPES.PLAIN], OrderedDict)
110+
111+
self.module_plain_ref = create_module_ref_factor(
112+
EllarTestPlainModule, config=config, container=self.injector.container
113+
)
114+
self.module_template_ref = create_module_ref_factor(
115+
EllarTestTemplateModule, config=config, container=self.injector.container
116+
)
117+
118+
def test_injector_add_module(self):
119+
self.injector.add_module(self.module_plain_ref)
120+
self.injector.add_module(self.module_template_ref)
121+
122+
assert len(self.injector._modules[MODULE_REF_TYPES.TEMPLATE]) == 1
123+
assert len(self.injector._modules[MODULE_REF_TYPES.PLAIN]) == 1
124+
125+
assert (
126+
list(self.injector._modules[MODULE_REF_TYPES.PLAIN].values())[0]
127+
is self.module_plain_ref
128+
)
129+
assert (
130+
list(self.injector._modules[MODULE_REF_TYPES.TEMPLATE].values())[0]
131+
is self.module_template_ref
132+
)
133+
134+
def test_injector_get_module_works(self):
135+
self.injector.add_module(self.module_plain_ref)
136+
137+
module_ref = self.injector.get_module(EllarTestPlainModule)
138+
assert module_ref is self.module_plain_ref
139+
140+
module_ref = self.injector.get_module(EllarTestTemplateModule)
141+
assert module_ref is None
142+
143+
self.injector.add_module(self.module_template_ref)
144+
module_ref = self.injector.get_module(EllarTestTemplateModule)
145+
assert module_ref is self.module_template_ref
146+
147+
def test_injector_get_templating_modules_works(self):
148+
modules = self.injector.get_templating_modules()
149+
assert len(modules) == 0
150+
151+
self.injector.add_module(self.module_plain_ref)
152+
modules = self.injector.get_templating_modules()
153+
assert len(modules) == 0
154+
155+
self.injector.add_module(self.module_template_ref)
156+
modules = self.injector.get_templating_modules()
157+
assert len(modules) == 1
158+
159+
def test_injector_get_modules_works(self):
160+
modules = self.injector.get_modules()
161+
assert len(modules) == 0
162+
163+
self.injector.add_module(self.module_plain_ref)
164+
modules = self.injector.get_modules()
165+
assert len(modules) == 1
166+
167+
self.injector.add_module(self.module_template_ref)
168+
modules = self.injector.get_modules()
169+
assert len(modules) == 2

0 commit comments

Comments
 (0)