mirror of https://github.com/home-assistant/core
41 lines
1.3 KiB
Python
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()
|