diff --git a/tests/components/automation/test_time.py b/tests/components/automation/test_time.py index 81f1657e0a2..c93cdbc36e9 100644 --- a/tests/components/automation/test_time.py +++ b/tests/components/automation/test_time.py @@ -30,22 +30,31 @@ def setup_comp(hass): async def test_if_fires_using_at(hass, calls): """Test for firing at.""" - assert await async_setup_component( - hass, - automation.DOMAIN, - { - automation.DOMAIN: { - "trigger": {"platform": "time", "at": "5:00:00"}, - "action": { - "service": "test.automation", - "data_template": { - "some": "{{ trigger.platform }} - {{ trigger.now.hour }}" - }, - }, - } - }, + now = dt_util.utcnow() + + time_that_will_not_match_right_away = now.replace( + year=now.year + 1, hour=4, minute=59, second=0 ) + with patch( + "homeassistant.util.dt.utcnow", return_value=time_that_will_not_match_right_away + ): + assert await async_setup_component( + hass, + automation.DOMAIN, + { + automation.DOMAIN: { + "trigger": {"platform": "time", "at": "5:00:00"}, + "action": { + "service": "test.automation", + "data_template": { + "some": "{{ trigger.platform }} - {{ trigger.now.hour }}" + }, + }, + } + }, + ) + now = dt_util.utcnow() async_fire_time_changed( @@ -62,23 +71,34 @@ async def test_if_not_fires_using_wrong_at(hass, calls): This should break the before rule. """ - with assert_setup_component(0, automation.DOMAIN): - assert await async_setup_component( - hass, - automation.DOMAIN, - { - automation.DOMAIN: { - "trigger": { - "platform": "time", - "at": 3605, - # Total seconds. Hour = 3600 second - }, - "action": {"service": "test.automation"}, - } - }, - ) + now = dt_util.utcnow() - async_fire_time_changed(hass, dt_util.utcnow().replace(hour=1, minute=0, second=5)) + time_that_will_not_match_right_away = now.replace( + year=now.year + 1, hour=1, minute=0, second=0 + ) + + with patch( + "homeassistant.util.dt.utcnow", return_value=time_that_will_not_match_right_away + ): + with assert_setup_component(0, automation.DOMAIN): + assert await async_setup_component( + hass, + automation.DOMAIN, + { + automation.DOMAIN: { + "trigger": { + "platform": "time", + "at": 3605, + # Total seconds. Hour = 3600 second + }, + "action": {"service": "test.automation"}, + } + }, + ) + + async_fire_time_changed( + hass, now.replace(year=now.year + 1, hour=1, minute=0, second=5) + ) await hass.async_block_till_done() assert len(calls) == 0 diff --git a/tests/helpers/test_event.py b/tests/helpers/test_event.py index 784bb673f77..669b2ab25c8 100644 --- a/tests/helpers/test_event.py +++ b/tests/helpers/test_event.py @@ -755,17 +755,17 @@ async def test_async_track_time_change(hass): hass, lambda x: specific_runs.append(1), second=[0, 30] ) - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 assert len(wildcard_runs) == 1 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 15)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 15, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 assert len(wildcard_runs) == 2 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 30)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 30, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 2 assert len(wildcard_runs) == 3 @@ -773,7 +773,7 @@ async def test_async_track_time_change(hass): unsub() unsub_utc() - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 30)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 30, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 2 assert len(wildcard_runs) == 3 @@ -789,21 +789,21 @@ async def test_periodic_task_minute(hass): hass, lambda x: specific_runs.append(1), minute="/5", second=0 ) - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 3, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 3, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 5, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 5, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 2 unsub() - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 5, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 12, 5, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 2 @@ -818,23 +818,23 @@ async def test_periodic_task_hour(hass): hass, lambda x: specific_runs.append(1), hour="/2", minute=0, second=0 ) - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 22, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 22, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 23, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 23, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 0, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 0, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 2 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 1, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 1, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 2 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 2, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 2, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 3 @@ -856,7 +856,7 @@ async def test_periodic_task_wrong_input(hass): hass, lambda x: specific_runs.append(1), hour="/two" ) - async_fire_time_changed(hass, datetime(now.year + 1, 5, 2, 0, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 2, 0, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 0 @@ -871,31 +871,33 @@ async def test_periodic_task_clock_rollback(hass): hass, lambda x: specific_runs.append(1), hour="/2", minute=0, second=0 ) - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 22, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 22, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 23, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 23, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 async_fire_time_changed( - hass, datetime(now.year + 1, 5, 24, 22, 0, 0), fire_all=True + hass, datetime(now.year + 1, 5, 24, 22, 0, 0, 999999), fire_all=True ) await hass.async_block_till_done() assert len(specific_runs) == 2 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 0, 0, 0), fire_all=True) + async_fire_time_changed( + hass, datetime(now.year + 1, 5, 24, 0, 0, 0, 999999), fire_all=True + ) await hass.async_block_till_done() assert len(specific_runs) == 3 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 2, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 2, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 4 unsub() - async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 2, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 2, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 4 @@ -910,15 +912,15 @@ async def test_periodic_task_duplicate_time(hass): hass, lambda x: specific_runs.append(1), hour="/2", minute=0, second=0 ) - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 22, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 22, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 22, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 24, 22, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 1 - async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 0, 0, 0)) + async_fire_time_changed(hass, datetime(now.year + 1, 5, 25, 0, 0, 0, 999999)) await hass.async_block_till_done() assert len(specific_runs) == 2 @@ -944,25 +946,25 @@ async def test_periodic_task_entering_dst(hass): ) async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 1, 3, 25, 1, 50, 0)) + hass, timezone.localize(datetime(now.year + 1, 3, 25, 1, 50, 0, 999999)) ) await hass.async_block_till_done() assert len(specific_runs) == 0 async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 1, 3, 25, 3, 50, 0)) + hass, timezone.localize(datetime(now.year + 1, 3, 25, 3, 50, 0, 999999)) ) await hass.async_block_till_done() assert len(specific_runs) == 0 async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 1, 3, 26, 1, 50, 0)) + hass, timezone.localize(datetime(now.year + 1, 3, 26, 1, 50, 0, 999999)) ) await hass.async_block_till_done() assert len(specific_runs) == 0 async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 1, 3, 26, 2, 50, 0)) + hass, timezone.localize(datetime(now.year + 1, 3, 26, 2, 50, 0, 999999)) ) await hass.async_block_till_done() assert len(specific_runs) == 1 @@ -990,31 +992,46 @@ async def test_periodic_task_leaving_dst(hass): ) async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 1, 10, 28, 2, 5, 0), is_dst=False) + hass, + timezone.localize( + datetime(now.year + 1, 10, 28, 2, 5, 0, 999999), is_dst=False + ), ) await hass.async_block_till_done() assert len(specific_runs) == 0 async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 1, 10, 28, 2, 55, 0), is_dst=False) + hass, + timezone.localize( + datetime(now.year + 1, 10, 28, 2, 55, 0, 999999), is_dst=False + ), ) await hass.async_block_till_done() assert len(specific_runs) == 1 async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 2, 10, 28, 2, 45, 0), is_dst=True) + hass, + timezone.localize( + datetime(now.year + 2, 10, 28, 2, 45, 0, 999999), is_dst=True + ), ) await hass.async_block_till_done() assert len(specific_runs) == 2 async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 2, 10, 28, 2, 55, 0), is_dst=True) + hass, + timezone.localize( + datetime(now.year + 2, 10, 28, 2, 55, 0, 999999), is_dst=True + ), ) await hass.async_block_till_done() assert len(specific_runs) == 2 async_fire_time_changed( - hass, timezone.localize(datetime(now.year + 2, 10, 28, 2, 55, 0), is_dst=True) + hass, + timezone.localize( + datetime(now.year + 2, 10, 28, 2, 55, 0, 999999), is_dst=True + ), ) await hass.async_block_till_done() assert len(specific_runs) == 2