tests.experimental.integrations.test_click_integration   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 29
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 20
dl 0
loc 29
rs 10
c 0
b 0
f 0
wmc 3

3 Functions

Rating   Name   Duplication   Size   Complexity  
A hello() 0 4 1
A test_a_reference_to_the_plain_function_is_exposed_for_testing() 0 4 1
A test_click_io_objected_is_injected_and_proxies_click_as_expected() 0 5 1
1
from unittest import mock
2
3
from click.testing import CliRunner
4
5
from lagom import Container, injectable
6
from lagom.experimental.integrations.click import ClickIntegration, ClickIO
7
8
container = Container()
9
cli = ClickIntegration(container)
10
11
12
@cli.command()
13
@cli.argument("name")
14
def hello(name, io: ClickIO = injectable):
15
    io.echo(f"Hello {name}")
16
17
18
def test_click_io_objected_is_injected_and_proxies_click_as_expected():
19
    runner = CliRunner()
20
    result = runner.invoke(hello, args=["Steve"])
21
    assert result.exit_code == 0
22
    assert result.output == "Hello Steve\n"
23
24
25
def test_a_reference_to_the_plain_function_is_exposed_for_testing():
26
    mock_io = mock.create_autospec(ClickIO)
27
    hello.plain_function("again", mock_io)
28
    mock_io.echo.assert_called_once_with("Hello again")
29