mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 05:07:41 +00:00
Break out mock of pymodbus return from mock_modbus to new fixture (#55063)
* Remove unused mock_modbus. * Break out mock pymodbus return values. * Review comments.
This commit is contained in:
parent
7314b1c8e1
commit
f91d214ba4
@ -67,6 +67,12 @@ def config_addon():
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def do_exception():
|
||||||
|
"""Remove side_effect to pymodbus calls."""
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
async def mock_modbus(
|
async def mock_modbus(
|
||||||
hass, caplog, register_words, check_config_loaded, config_addon, do_config
|
hass, caplog, register_words, check_config_loaded, config_addon, do_config
|
||||||
@ -92,18 +98,6 @@ async def mock_modbus(
|
|||||||
with mock.patch(
|
with mock.patch(
|
||||||
"homeassistant.components.modbus.modbus.ModbusTcpClient", return_value=mock_pb
|
"homeassistant.components.modbus.modbus.ModbusTcpClient", return_value=mock_pb
|
||||||
):
|
):
|
||||||
if register_words is None:
|
|
||||||
exc = ModbusException("fail read_coils")
|
|
||||||
mock_pb.read_coils.side_effect = exc
|
|
||||||
mock_pb.read_discrete_inputs.side_effect = exc
|
|
||||||
mock_pb.read_input_registers.side_effect = exc
|
|
||||||
mock_pb.read_holding_registers.side_effect = exc
|
|
||||||
else:
|
|
||||||
read_result = ReadResult(register_words)
|
|
||||||
mock_pb.read_coils.return_value = read_result
|
|
||||||
mock_pb.read_discrete_inputs.return_value = read_result
|
|
||||||
mock_pb.read_input_registers.return_value = read_result
|
|
||||||
mock_pb.read_holding_registers.return_value = read_result
|
|
||||||
now = dt_util.utcnow()
|
now = dt_util.utcnow()
|
||||||
with mock.patch("homeassistant.helpers.event.dt_util.utcnow", return_value=now):
|
with mock.patch("homeassistant.helpers.event.dt_util.utcnow", return_value=now):
|
||||||
result = await async_setup_component(hass, DOMAIN, config)
|
result = await async_setup_component(hass, DOMAIN, config)
|
||||||
@ -113,7 +107,28 @@ async def mock_modbus(
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
async def mock_do_cycle(hass):
|
async def mock_pymodbus_exception(hass, do_exception, mock_modbus):
|
||||||
|
"""Trigger update call with time_changed event."""
|
||||||
|
if do_exception:
|
||||||
|
exc = ModbusException("fail read_coils")
|
||||||
|
mock_modbus.read_coils.side_effect = exc
|
||||||
|
mock_modbus.read_discrete_inputs.side_effect = exc
|
||||||
|
mock_modbus.read_input_registers.side_effect = exc
|
||||||
|
mock_modbus.read_holding_registers.side_effect = exc
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
async def mock_pymodbus_return(hass, register_words, mock_modbus):
|
||||||
|
"""Trigger update call with time_changed event."""
|
||||||
|
read_result = ReadResult(register_words)
|
||||||
|
mock_modbus.read_coils.return_value = read_result
|
||||||
|
mock_modbus.read_discrete_inputs.return_value = read_result
|
||||||
|
mock_modbus.read_input_registers.return_value = read_result
|
||||||
|
mock_modbus.read_holding_registers.return_value = read_result
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
async def mock_do_cycle(hass, mock_pymodbus_exception, mock_pymodbus_return):
|
||||||
"""Trigger update call with time_changed event."""
|
"""Trigger update call with time_changed event."""
|
||||||
now = dt_util.utcnow() + timedelta(seconds=90)
|
now = dt_util.utcnow() + timedelta(seconds=90)
|
||||||
with mock.patch("homeassistant.helpers.event.dt_util.utcnow", return_value=now):
|
with mock.patch("homeassistant.helpers.event.dt_util.utcnow", return_value=now):
|
||||||
@ -129,7 +144,7 @@ async def mock_test_state(hass, request):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
async def mock_ha(hass):
|
async def mock_ha(hass, mock_pymodbus_return):
|
||||||
"""Load homeassistant to allow service calls."""
|
"""Load homeassistant to allow service calls."""
|
||||||
assert await async_setup_component(hass, "homeassistant", {})
|
assert await async_setup_component(hass, "homeassistant", {})
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
|
@ -80,35 +80,41 @@ async def test_config_binary_sensor(hass, mock_modbus):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"register_words,expected",
|
"register_words,do_exception,expected",
|
||||||
[
|
[
|
||||||
(
|
(
|
||||||
[0xFF],
|
[0xFF],
|
||||||
|
False,
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0x01],
|
[0x01],
|
||||||
|
False,
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0x00],
|
[0x00],
|
||||||
|
False,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0x80],
|
[0x80],
|
||||||
|
False,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0xFE],
|
[0xFE],
|
||||||
|
False,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_all_binary_sensor(hass, expected, mock_modbus, mock_do_cycle):
|
async def test_all_binary_sensor(hass, expected, mock_do_cycle):
|
||||||
"""Run test for given config."""
|
"""Run test for given config."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ async def test_config_climate(hass, mock_modbus):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_temperature_climate(hass, expected, mock_modbus, mock_do_cycle):
|
async def test_temperature_climate(hass, expected, mock_do_cycle):
|
||||||
"""Run test for given config."""
|
"""Run test for given config."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ async def test_config_cover(hass, mock_modbus):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_coil_cover(hass, expected, mock_modbus, mock_do_cycle):
|
async def test_coil_cover(hass, expected, mock_do_cycle):
|
||||||
"""Run test for given config."""
|
"""Run test for given config."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
@ -150,7 +150,7 @@ async def test_coil_cover(hass, expected, mock_modbus, mock_do_cycle):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_register_cover(hass, expected, mock_modbus, mock_do_cycle):
|
async def test_register_cover(hass, expected, mock_do_cycle):
|
||||||
"""Run test for given config."""
|
"""Run test for given config."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
|
@ -157,36 +157,41 @@ async def test_config_fan(hass, mock_modbus):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"register_words,config_addon,expected",
|
"register_words,do_exception,config_addon,expected",
|
||||||
[
|
[
|
||||||
(
|
(
|
||||||
[0x00],
|
[0x00],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0x01],
|
[0x01],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0xFE],
|
[0xFE],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
None,
|
None,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_all_fan(hass, mock_modbus, mock_do_cycle, expected):
|
async def test_all_fan(hass, mock_do_cycle, expected):
|
||||||
"""Run test for given config."""
|
"""Run test for given config."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
|
@ -157,36 +157,41 @@ async def test_config_light(hass, mock_modbus):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"register_words,config_addon,expected",
|
"register_words,do_exception,config_addon,expected",
|
||||||
[
|
[
|
||||||
(
|
(
|
||||||
[0x00],
|
[0x00],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0x01],
|
[0x01],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0xFE],
|
[0xFE],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
None,
|
None,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_all_light(hass, mock_modbus, mock_do_cycle, expected):
|
async def test_all_light(hass, mock_do_cycle, expected):
|
||||||
"""Run test for given config."""
|
"""Run test for given config."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
|
@ -247,7 +247,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"config_addon,register_words,expected",
|
"config_addon,register_words,do_exception,expected",
|
||||||
[
|
[
|
||||||
(
|
(
|
||||||
{
|
{
|
||||||
@ -258,11 +258,13 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0],
|
[0],
|
||||||
|
False,
|
||||||
"0",
|
"0",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
{},
|
{},
|
||||||
[0x8000],
|
[0x8000],
|
||||||
|
False,
|
||||||
"-32768",
|
"-32768",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -274,6 +276,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[7],
|
[7],
|
||||||
|
False,
|
||||||
"20",
|
"20",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -285,6 +288,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[7],
|
[7],
|
||||||
|
False,
|
||||||
"34",
|
"34",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -296,6 +300,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 4,
|
CONF_PRECISION: 4,
|
||||||
},
|
},
|
||||||
[7],
|
[7],
|
||||||
|
False,
|
||||||
"34.0000",
|
"34.0000",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -307,6 +312,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[1],
|
[1],
|
||||||
|
False,
|
||||||
"2",
|
"2",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -318,6 +324,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: "1",
|
CONF_PRECISION: "1",
|
||||||
},
|
},
|
||||||
[9],
|
[9],
|
||||||
|
False,
|
||||||
"18.5",
|
"18.5",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -329,6 +336,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 2,
|
CONF_PRECISION: 2,
|
||||||
},
|
},
|
||||||
[1],
|
[1],
|
||||||
|
False,
|
||||||
"2.40",
|
"2.40",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -340,6 +348,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 1,
|
CONF_PRECISION: 1,
|
||||||
},
|
},
|
||||||
[2],
|
[2],
|
||||||
|
False,
|
||||||
"-8.3",
|
"-8.3",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -351,6 +360,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0x89AB, 0xCDEF],
|
[0x89AB, 0xCDEF],
|
||||||
|
False,
|
||||||
"-1985229329",
|
"-1985229329",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -362,6 +372,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0x89AB, 0xCDEF],
|
[0x89AB, 0xCDEF],
|
||||||
|
False,
|
||||||
str(0x89ABCDEF),
|
str(0x89ABCDEF),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -373,6 +384,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0x89AB, 0xCDEF, 0x0123, 0x4567],
|
[0x89AB, 0xCDEF, 0x0123, 0x4567],
|
||||||
|
False,
|
||||||
"9920249030613615975",
|
"9920249030613615975",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -384,6 +396,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0x0123, 0x4567, 0x89AB, 0xCDEF],
|
[0x0123, 0x4567, 0x89AB, 0xCDEF],
|
||||||
|
False,
|
||||||
"163971058432973793",
|
"163971058432973793",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -395,6 +408,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0x0123, 0x4567, 0x89AB, 0xCDEF],
|
[0x0123, 0x4567, 0x89AB, 0xCDEF],
|
||||||
|
False,
|
||||||
"163971058432973792",
|
"163971058432973792",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -407,6 +421,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0x89AB, 0xCDEF],
|
[0x89AB, 0xCDEF],
|
||||||
|
False,
|
||||||
str(0x89ABCDEF),
|
str(0x89ABCDEF),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -419,6 +434,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0x89AB, 0xCDEF],
|
[0x89AB, 0xCDEF],
|
||||||
|
False,
|
||||||
str(0x89ABCDEF),
|
str(0x89ABCDEF),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -431,6 +447,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 5,
|
CONF_PRECISION: 5,
|
||||||
},
|
},
|
||||||
[16286, 1617],
|
[16286, 1617],
|
||||||
|
False,
|
||||||
"1.23457",
|
"1.23457",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -443,6 +460,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
[0x3037, 0x2D30, 0x352D, 0x3230, 0x3230, 0x2031, 0x343A, 0x3335],
|
[0x3037, 0x2D30, 0x352D, 0x3230, 0x3230, 0x2031, 0x343A, 0x3335],
|
||||||
|
False,
|
||||||
"07-05-2020 14:35",
|
"07-05-2020 14:35",
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -454,7 +472,8 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_OFFSET: 0,
|
CONF_OFFSET: 0,
|
||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -466,7 +485,8 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_OFFSET: 0,
|
CONF_OFFSET: 0,
|
||||||
CONF_PRECISION: 0,
|
CONF_PRECISION: 0,
|
||||||
},
|
},
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -476,6 +496,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_SWAP: CONF_SWAP_NONE,
|
CONF_SWAP: CONF_SWAP_NONE,
|
||||||
},
|
},
|
||||||
[0x0102],
|
[0x0102],
|
||||||
|
False,
|
||||||
str(int(0x0102)),
|
str(int(0x0102)),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -485,6 +506,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_SWAP: CONF_SWAP_BYTE,
|
CONF_SWAP: CONF_SWAP_BYTE,
|
||||||
},
|
},
|
||||||
[0x0201],
|
[0x0201],
|
||||||
|
False,
|
||||||
str(int(0x0102)),
|
str(int(0x0102)),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -494,6 +516,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_SWAP: CONF_SWAP_BYTE,
|
CONF_SWAP: CONF_SWAP_BYTE,
|
||||||
},
|
},
|
||||||
[0x0102, 0x0304],
|
[0x0102, 0x0304],
|
||||||
|
False,
|
||||||
str(int(0x02010403)),
|
str(int(0x02010403)),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -503,6 +526,7 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_SWAP: CONF_SWAP_WORD,
|
CONF_SWAP: CONF_SWAP_WORD,
|
||||||
},
|
},
|
||||||
[0x0102, 0x0304],
|
[0x0102, 0x0304],
|
||||||
|
False,
|
||||||
str(int(0x03040102)),
|
str(int(0x03040102)),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@ -512,11 +536,12 @@ async def test_config_wrong_struct_sensor(hass, error_message, mock_modbus, capl
|
|||||||
CONF_SWAP: CONF_SWAP_WORD_BYTE,
|
CONF_SWAP: CONF_SWAP_WORD_BYTE,
|
||||||
},
|
},
|
||||||
[0x0102, 0x0304],
|
[0x0102, 0x0304],
|
||||||
|
False,
|
||||||
str(int(0x04030201)),
|
str(int(0x04030201)),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_all_sensor(hass, mock_modbus, mock_do_cycle, expected):
|
async def test_all_sensor(hass, mock_do_cycle, expected):
|
||||||
"""Run test for sensor."""
|
"""Run test for sensor."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
@ -570,7 +595,7 @@ async def test_all_sensor(hass, mock_modbus, mock_do_cycle, expected):
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_struct_sensor(hass, mock_modbus, mock_do_cycle, expected):
|
async def test_struct_sensor(hass, mock_do_cycle, expected):
|
||||||
"""Run test for sensor struct."""
|
"""Run test for sensor struct."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
|
@ -171,36 +171,41 @@ async def test_config_switch(hass, mock_modbus):
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
"register_words,config_addon,expected",
|
"register_words,do_exception,config_addon,expected",
|
||||||
[
|
[
|
||||||
(
|
(
|
||||||
[0x00],
|
[0x00],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0x01],
|
[0x01],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_ON,
|
STATE_ON,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
[0xFE],
|
[0xFE],
|
||||||
|
False,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
{CONF_VERIFY: {}},
|
{CONF_VERIFY: {}},
|
||||||
STATE_UNAVAILABLE,
|
STATE_UNAVAILABLE,
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
None,
|
[0x00],
|
||||||
|
True,
|
||||||
None,
|
None,
|
||||||
STATE_OFF,
|
STATE_OFF,
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_all_switch(hass, mock_modbus, mock_do_cycle, expected):
|
async def test_all_switch(hass, mock_do_cycle, expected):
|
||||||
"""Run test for given config."""
|
"""Run test for given config."""
|
||||||
assert hass.states.get(ENTITY_ID).state == expected
|
assert hass.states.get(ENTITY_ID).state == expected
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user