예제 #1
0
def test_get_integration(sut, monkeypatch, mocker):
    integrations = [
        IntegrationMock("test_integration", sut, mocker),
        IntegrationMock("test_integration2", sut, mocker),
        IntegrationMock("test_integration3", sut, mocker),
    ]
    monkeypatch.setattr(
        integration_module, "get_integrations", lambda controller: integrations
    )

    # SUT
    integration = sut.get_integration("test_integration2")

    # Checks
    assert integration.name == "test_integration2"
예제 #2
0
def test_initialize(
    sut,
    mocker,
    monkeypatch,
    controller_input,
    actions_input,
    actions_filter,
    actions_ouput,
):
    actions = {action: action for action in actions_input}
    type_actions = {action: lambda: None for action in actions_input}
    sut.args["controller"] = controller_input
    sut.args["integration"] = "test"
    if actions_filter:
        sut.args["actions"] = actions_filter
    integration_mock = IntegrationMock("test", sut, mocker)
    monkeypatch.setattr(sut, "get_integration", lambda integration: integration_mock)
    monkeypatch.setattr(sut, "get_actions_mapping", lambda integration: actions)
    monkeypatch.setattr(sut, "get_type_actions_mapping", lambda: type_actions)
    check_ad_version = mocker.patch.object(sut, "check_ad_version")
    get_actions_mapping = mocker.spy(sut, "get_actions_mapping")

    # SUT
    sut.initialize()

    # Checks
    check_ad_version.assert_called_once()
    get_actions_mapping.assert_called_once()
    for controller_id in controller_input:
        integration_mock.listen_changes.assert_any_call(controller_id)
    assert integration_mock.listen_changes.call_count == len(controller_input)
    assert list(sut.actions_mapping.keys()) == actions_ouput
예제 #3
0
def test_get_actions_mapping_throwing_error(sut, monkeypatch, mocker):
    integration_mock = IntegrationMock("integration-test", sut, mocker)
    monkeypatch.setattr(integration_mock, "get_actions_mapping", lambda: None)

    with pytest.raises(ValueError) as e:
        sut.get_actions_mapping(integration_mock)

    assert str(e.value) == "This controller does not support integration-test."
예제 #4
0
def test_get_actions_mapping_happyflow(sut, monkeypatch, mocker):
    integration_mock = IntegrationMock("integration-test", sut, mocker)
    monkeypatch.setattr(
        integration_mock, "get_actions_mapping", lambda: "this_is_mapping"
    )

    mapping = sut.get_actions_mapping(integration_mock)

    assert mapping == "this_is_mapping"
예제 #5
0
async def test_initialize(
    sut,
    mocker,
    monkeypatch,
    controller_input,
    actions_input,
    included_actions,
    excluded_actions,
    actions_ouput,
    expect_an_error,
):
    actions = {action: action for action in actions_input}
    type_actions = {action: lambda: None for action in actions_input}
    sut.args["controller"] = controller_input
    sut.args["integration"] = "test"
    if included_actions:
        sut.args["actions"] = included_actions
    if excluded_actions:
        sut.args["excluded_actions"] = excluded_actions
    integration_mock = IntegrationMock("test", sut, mocker)
    monkeypatch.setattr(sut, "get_integration", lambda integration: integration_mock)
    monkeypatch.setattr(sut, "get_actions_mapping", lambda integration: actions)
    monkeypatch.setattr(sut, "get_type_actions_mapping", lambda: type_actions)
    check_ad_version = mocker.patch.object(sut, "check_ad_version")
    get_actions_mapping = mocker.spy(sut, "get_actions_mapping")

    # SUT
    if expect_an_error:
        with pytest.raises(ValueError) as e:
            await sut.initialize()
    else:
        await sut.initialize()

        # Checks
        check_ad_version.assert_called_once()
        get_actions_mapping.assert_called_once()
        for controller_id in controller_input:
            integration_mock.listen_changes.assert_any_call(controller_id)
        assert integration_mock.listen_changes.call_count == len(controller_input)
        assert list(sut.actions_mapping.keys()) == actions_ouput