File: test_inject_configuration.py

package info (click to toggle)
python-inject 5.3.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 196 kB
  • sloc: python: 1,039; makefile: 28; sh: 5
file content (64 lines) | stat: -rw-r--r-- 2,301 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import inject
from inject import InjectorException
from test import BaseTestInject


class TestInjectConfiguration(BaseTestInject):
    def test_configure__should_create_injector(self):
        injector0 = inject.configure()
        injector1 = inject.get_injector()
        assert injector0
        assert injector0 is injector1

    def test_configure__should_add_bindings(self):
        injector = inject.configure(lambda binder: binder.bind(int, 123))
        instance = injector.get_instance(int)
        assert instance == 123

    def test_configure__already_configured(self):
        inject.configure()

        self.assertRaisesRegex(InjectorException, 'Injector is already configured', inject.configure)

    def test_configure_once__should_create_injector(self):
        injector = inject.configure_once()
        assert inject.get_injector() is injector

    def test_configure_once__should_return_existing_injector_when_present(self):
        injector0 = inject.configure()
        injector1 = inject.configure_once()
        assert injector0 is injector1

    def test_is_configured__should_return_true_when_injector_present(self):
        assert inject.is_configured() is False

        inject.configure()
        assert inject.is_configured() is True

        inject.clear()
        assert inject.is_configured() is False

    def test_clear_and_configure(self):
        injector0 = inject.configure()
        injector1 = inject.clear_and_configure()  # No exception.
        assert injector0
        assert injector1
        assert injector1 is not injector0

    def test_get_injector_or_die(self):
        self.assertRaisesRegex(InjectorException, 'No injector is configured', inject.get_injector_or_die)

    def test_configure__runtime_binding_disabled(self):
        injector = inject.configure(bind_in_runtime=False)
        self.assertRaisesRegex(InjectorException, "No binding was found for key=<.* 'int'>", injector.get_instance, int)

    def test_configure__install_allow_override(self):
        def base_config(binder):
            binder.bind(int, 123)

        def config(binder):
            binder.install(base_config)
            binder.bind(int, 456)

        injector = inject.configure(config, allow_override=True)
        assert injector.get_instance(int) == 456