def test_open_device_not_found(mocker):
    module = "bt_button.buttons._event_device_manager"
    module += ".EventDeviceManager._search_device"
    search_mock = mocker.patch(module, return_value=None)

    mock_name = mocker.Mock()
    mock_mac_addr = mocker.Mock()

    with pytest.raises(DeviceNotFoundError):
        EventDeviceManager.open_device(mock_name, mock_mac_addr)

    search_mock.assert_called_once_with(mock_name, mock_mac_addr.lower())
    assert len(EventDeviceManager.connected_paths) == 0
def test_search_device_duplicate(mocker):
    dev_path_mock = mocker.Mock()
    dev_list_mock = [
        dev_path_mock,
    ]
    EventDeviceManager.connected_paths.append(dev_path_mock)

    list_device_mock = mocker.patch("evdev.util.list_devices",
                                    return_value=dev_list_mock)

    target_object = mocker.Mock()
    target_object.name = mocker.Mock()
    target_object.uniq = mocker.Mock()

    input_device_mock = mocker.patch("evdev.InputDevice",
                                     return_value=target_object)

    mock_name = mocker.Mock()
    mock_uniq = mocker.Mock()

    ret = EventDeviceManager._search_device(mock_name, mock_uniq)

    list_device_mock.assert_called_once()
    input_device_mock.assert_not_called()
    assert ret is None
def test_open_device_correct(mocker):
    target_object = mocker.Mock()
    module = "bt_button.buttons._event_device_manager"
    module += ".EventDeviceManager._search_device"
    search_mock = mocker.patch(module, return_value=target_object)

    mock_name = mocker.Mock()
    mock_mac_addr = mocker.Mock()

    ret = EventDeviceManager.open_device(mock_name, mock_mac_addr)

    search_mock.assert_called_once_with(mock_name, mock_mac_addr.lower())
    assert len(EventDeviceManager.connected_paths) == 1
    assert ret == target_object
def test_search_device_found(mocker):
    dev_list_mock = [
        mocker.Mock(),
    ]

    list_device_mock = mocker.patch("evdev.util.list_devices",
                                    return_value=dev_list_mock)

    target_object = mocker.Mock()
    target_object.name = mocker.Mock()
    target_object.uniq = mocker.Mock()

    input_device_mock = mocker.patch("evdev.InputDevice",
                                     return_value=target_object)

    ret = EventDeviceManager._search_device(target_object.name,
                                            target_object.uniq)

    list_device_mock.assert_called_once()
    input_device_mock.assert_called_once()
    assert ret == target_object
def setup():
    EventDeviceManager.reset()
def test_reset(mocker):
    path = mocker.Mock()
    EventDeviceManager.connected_paths.append(path)

    EventDeviceManager.reset()
    assert len(EventDeviceManager.connected_paths) == 0