Completed
Pull Request — master (#6)
by Steve
02:52 queued 43s
created

test.test_overwritting.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
from lagom.exceptions import DuplicateDefinition
5
6
7
class InitialDep:
8
    pass
9
10
11
class SomeMockForTesting(InitialDep):
12
    pass
13
14
15
class SomeMockThatDoesntEventExtend:
16
    pass
17
18
19
def test_deps_can_be_overridden_by_a_child_class(container: Container):
20
    container.define(InitialDep, Construction(lambda: SomeMockForTesting()))
21
    resolved = container.resolve(InitialDep)
22
    assert type(resolved) == SomeMockForTesting
23
24
25
def test_deps_can_be_overridden_by_anything(container: Container):
26
    container.define(InitialDep, Construction(lambda: SomeMockThatDoesntEventExtend()))
27
    resolved = container.resolve(InitialDep)
28
    assert type(resolved) == SomeMockThatDoesntEventExtend
29
30
31
def test_explicit_definitions_can_only_be_made_once(container: Container):
32
    container.define(InitialDep, Construction(lambda: SomeMockForTesting()))
33
34
    with pytest.raises(DuplicateDefinition):
35
        container.define(
36
            InitialDep, Construction(lambda: SomeMockThatDoesntEventExtend())
37
        )
38