Fix modbus test_delay (#66993)

This commit is contained in:
jan iversen 2022-02-25 17:06:25 +01:00 committed by GitHub
parent c856f673fb
commit c6f5633e24
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -711,34 +711,33 @@ async def test_delay(hass, mock_pymodbus):
] ]
} }
mock_pymodbus.read_coils.return_value = ReadResult([0x01]) mock_pymodbus.read_coils.return_value = ReadResult([0x01])
now = dt_util.utcnow() start_time = 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=start_time
):
assert await async_setup_component(hass, DOMAIN, config) is True assert await async_setup_component(hass, DOMAIN, config) is True
await hass.async_block_till_done() await hass.async_block_till_done()
assert hass.states.get(entity_id).state == STATE_UNKNOWN
# pass first scan_interval time_sensor_active = start_time + timedelta(seconds=2)
start_time = now time_after_delay = start_time + timedelta(seconds=(set_delay))
now = now + timedelta(seconds=(set_scan_interval + 1)) time_after_scan = start_time + timedelta(seconds=(set_delay + set_scan_interval))
with mock.patch( time_stop = time_after_scan + timedelta(seconds=10)
"homeassistant.helpers.event.dt_util.utcnow", return_value=now, autospec=True now = start_time
): while now < time_stop:
async_fire_time_changed(hass, now) now += timedelta(seconds=1)
await hass.async_block_till_done() with mock.patch(
assert hass.states.get(entity_id).state == STATE_UNAVAILABLE "homeassistant.helpers.event.dt_util.utcnow",
return_value=now,
stop_time = start_time + timedelta(seconds=(set_delay + 1)) autospec=True,
step_timedelta = timedelta(seconds=1) ):
while now < stop_time:
now = now + step_timedelta
with mock.patch("homeassistant.helpers.event.dt_util.utcnow", return_value=now):
async_fire_time_changed(hass, now) async_fire_time_changed(hass, now)
await hass.async_block_till_done() await hass.async_block_till_done()
assert hass.states.get(entity_id).state == STATE_UNAVAILABLE if now > time_sensor_active:
now = now + step_timedelta + timedelta(seconds=2) if now <= time_after_delay:
with mock.patch("homeassistant.helpers.event.dt_util.utcnow", return_value=now): assert hass.states.get(entity_id).state == STATE_UNAVAILABLE
async_fire_time_changed(hass, now) elif now > time_after_scan:
await hass.async_block_till_done() assert hass.states.get(entity_id).state == STATE_ON
assert hass.states.get(entity_id).state == STATE_ON
@pytest.mark.parametrize( @pytest.mark.parametrize(