| 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 |