Total Complexity | 7 |
Total Lines | 43 |
Duplicated Lines | 0 % |
Changes | 0 |
1 | import pytest |
||
2 | |||
3 | from lagom import Construction, Container |
||
4 | |||
5 | |||
6 | class MySimpleDep: |
||
7 | stuff: str |
||
8 | |||
9 | def __init__(self, stuff): |
||
10 | self.stuff = stuff |
||
11 | |||
12 | |||
13 | class MyMoreComplicatedDep: |
||
14 | complicated_stuff: str |
||
15 | |||
16 | def __init__(self, dep: MySimpleDep): |
||
17 | self.stuff = "complicated " + dep.stuff |
||
18 | |||
19 | |||
20 | @pytest.fixture |
||
21 | def container_with_simple_dep(container: Container): |
||
22 | container.define(MySimpleDep, Construction(lambda: MySimpleDep("Top stuff"))) |
||
23 | return container |
||
24 | |||
25 | |||
26 | def test_works_for_registered_types(container_with_simple_dep): |
||
27 | resolved = container_with_simple_dep.resolve(MySimpleDep) |
||
28 | assert resolved.stuff == "Top stuff" |
||
29 | |||
30 | |||
31 | def test_works_if_every_item_in_the_constructor_can_be_figured_out( |
||
32 | container_with_simple_dep |
||
33 | ): |
||
34 | resolved = container_with_simple_dep.resolve(MyMoreComplicatedDep) |
||
35 | assert resolved.stuff == "complicated Top stuff" |
||
36 | |||
37 | |||
38 | @pytest.mark.parametrize("dep", [MySimpleDep, MyMoreComplicatedDep]) |
||
39 | def test_dependencies_are_built_each_request(container_with_simple_dep: Container, dep): |
||
40 | first = container_with_simple_dep.resolve(dep) |
||
41 | second = container_with_simple_dep.resolve(dep) |
||
42 | assert first is not second |
||
43 |