Completed
Pull Request — master (#6)
by Steve
02:04
created

test.test_objects.container()   A

Complexity

Conditions 2

Size

Total Lines 5
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 5
nop 0
dl 0
loc 5
rs 10
c 0
b 0
f 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