Skip to content

Commit e8a1937

Browse files
committed
--wip-- Add a failing test
1 parent bd8f001 commit e8a1937

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

injector_test.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -921,6 +921,27 @@ def configure(binder: Binder) -> None:
921921
assert injector.get(PluginA) is not injector.get(PluginA)
922922

923923

924+
def test_multibind_uses_the_same_singleton_for_decorated_types() -> None:
925+
@singleton
926+
class SingletonPlugin(Plugin):
927+
pass
928+
929+
def configure(binder: Binder) -> None:
930+
binder.bind(Plugin, to=SingletonPlugin)
931+
binder.multibind(List[Plugin], to=SingletonPlugin)
932+
binder.multibind(List[Plugin], to=[SingletonPlugin])
933+
binder.multibind(Dict[str, Plugin], to={'singleton1': SingletonPlugin, 'singleton2': SingletonPlugin})
934+
935+
injector = Injector([configure])
936+
plugin_singleton = injector.get(Plugin)
937+
plugins_list = injector.get(List[Plugin])
938+
plugins_dict = injector.get(Dict[str, Plugin])
939+
940+
assert plugin_singleton is injector.get(Plugin)
941+
assert plugins_list[0] is plugins_list[1]
942+
assert plugins_dict['singleton1'] is plugins_dict['singleton2']
943+
944+
924945
def test_regular_bind_and_provider_dont_work_with_multibind():
925946
# We only want multibind and multiprovider to work to avoid confusion
926947

0 commit comments

Comments
 (0)