core/tests/helpers/test_storage_remove.py

41 lines
1.3 KiB
Python

"""Tests for the storage helper with minimal mocking."""
from datetime import timedelta
import os
from unittest.mock import patch
import py
from homeassistant.helpers import storage
from homeassistant.util import dt as dt_util
from tests.common import async_fire_time_changed, async_test_home_assistant
async def test_removing_while_delay_in_progress(tmpdir: py.path.local) -> None:
"""Test removing while delay in progress."""
async with async_test_home_assistant() as hass:
test_dir = await hass.async_add_executor_job(tmpdir.mkdir, "storage")
with patch.object(storage, "STORAGE_DIR", test_dir):
real_store = storage.Store(hass, 1, "remove_me")
await real_store.async_save({"delay": "no"})
assert await hass.async_add_executor_job(os.path.exists, real_store.path)
real_store.async_delay_save(lambda: {"delay": "yes"}, 1)
await real_store.async_remove()
assert not await hass.async_add_executor_job(
os.path.exists, real_store.path
)
async_fire_time_changed(hass, dt_util.utcnow() + timedelta(seconds=1))
await hass.async_block_till_done()
assert not await hass.async_add_executor_job(
os.path.exists, real_store.path
)
await hass.async_stop()