Use async_load_fixture in skybell tests (#146017)

This commit is contained in:
epenet 2025-06-03 10:47:03 +02:00 committed by GitHub
parent 791654a420
commit 2dbf24e798
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -12,7 +12,7 @@ from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.aiohttp_client import async_get_clientsession
from tests.common import MockConfigEntry, load_fixture from tests.common import MockConfigEntry, async_load_fixture
from tests.test_util.aiohttp import AiohttpClientMocker from tests.test_util.aiohttp import AiohttpClientMocker
USERNAME = "user" USERNAME = "user"
@ -53,39 +53,41 @@ def create_entry(hass: HomeAssistant) -> MockConfigEntry:
return entry return entry
async def set_aioclient_responses(aioclient_mock: AiohttpClientMocker) -> None: async def set_aioclient_responses(
hass: HomeAssistant, aioclient_mock: AiohttpClientMocker
) -> None:
"""Set AioClient responses.""" """Set AioClient responses."""
aioclient_mock.get( aioclient_mock.get(
f"{BASE_URL}devices/{DEVICE_ID}/info/", f"{BASE_URL}devices/{DEVICE_ID}/info/",
text=load_fixture("skybell/device_info.json"), text=await async_load_fixture(hass, "device_info.json", DOMAIN),
) )
aioclient_mock.get( aioclient_mock.get(
f"{BASE_URL}devices/{DEVICE_ID}/settings/", f"{BASE_URL}devices/{DEVICE_ID}/settings/",
text=load_fixture("skybell/device_settings.json"), text=await async_load_fixture(hass, "device_settings.json", DOMAIN),
) )
aioclient_mock.get( aioclient_mock.get(
f"{BASE_URL}devices/{DEVICE_ID}/activities/", f"{BASE_URL}devices/{DEVICE_ID}/activities/",
text=load_fixture("skybell/activities.json"), text=await async_load_fixture(hass, "activities.json", DOMAIN),
) )
aioclient_mock.get( aioclient_mock.get(
f"{BASE_URL}devices/", f"{BASE_URL}devices/",
text=load_fixture("skybell/device.json"), text=await async_load_fixture(hass, "device.json", DOMAIN),
) )
aioclient_mock.get( aioclient_mock.get(
USERS_ME_URL, USERS_ME_URL,
text=load_fixture("skybell/me.json"), text=await async_load_fixture(hass, "me.json", DOMAIN),
) )
aioclient_mock.post( aioclient_mock.post(
f"{BASE_URL}login/", f"{BASE_URL}login/",
text=load_fixture("skybell/login.json"), text=await async_load_fixture(hass, "login.json", DOMAIN),
) )
aioclient_mock.get( aioclient_mock.get(
f"{BASE_URL}devices/{DEVICE_ID}/activities/1234567890ab1234567890ac/video/", f"{BASE_URL}devices/{DEVICE_ID}/activities/1234567890ab1234567890ac/video/",
text=load_fixture("skybell/video.json"), text=await async_load_fixture(hass, "video.json", DOMAIN),
) )
aioclient_mock.get( aioclient_mock.get(
f"{BASE_URL}devices/{DEVICE_ID}/avatar/", f"{BASE_URL}devices/{DEVICE_ID}/avatar/",
text=load_fixture("skybell/avatar.json"), text=await async_load_fixture(hass, "avatar.json", DOMAIN),
) )
aioclient_mock.get( aioclient_mock.get(
f"https://v3-production-devices-avatar.s3.us-west-2.amazonaws.com/{DEVICE_ID}.jpg", f"https://v3-production-devices-avatar.s3.us-west-2.amazonaws.com/{DEVICE_ID}.jpg",
@ -96,12 +98,12 @@ async def set_aioclient_responses(aioclient_mock: AiohttpClientMocker) -> None:
@pytest.fixture @pytest.fixture
async def connection(aioclient_mock: AiohttpClientMocker) -> None: async def connection(hass: HomeAssistant, aioclient_mock: AiohttpClientMocker) -> None:
"""Fixture for good connection responses.""" """Fixture for good connection responses."""
await set_aioclient_responses(aioclient_mock) await set_aioclient_responses(hass, aioclient_mock)
def create_skybell(hass: HomeAssistant) -> Skybell: async def create_skybell(hass: HomeAssistant) -> Skybell:
"""Create Skybell object.""" """Create Skybell object."""
skybell = Skybell( skybell = Skybell(
username=USERNAME, username=USERNAME,
@ -109,14 +111,15 @@ def create_skybell(hass: HomeAssistant) -> Skybell:
get_devices=True, get_devices=True,
session=async_get_clientsession(hass), session=async_get_clientsession(hass),
) )
skybell._cache = orjson.loads(load_fixture("skybell/cache.json")) skybell._cache = orjson.loads(await async_load_fixture(hass, "cache.json", DOMAIN))
return skybell return skybell
def mock_skybell(hass: HomeAssistant): async def mock_skybell(hass: HomeAssistant):
"""Mock Skybell object.""" """Mock Skybell object."""
return patch( return patch(
"homeassistant.components.skybell.Skybell", return_value=create_skybell(hass) "homeassistant.components.skybell.Skybell",
return_value=await create_skybell(hass),
) )
@ -124,7 +127,7 @@ async def async_init_integration(hass: HomeAssistant) -> MockConfigEntry:
"""Set up the Skybell integration in Home Assistant.""" """Set up the Skybell integration in Home Assistant."""
config_entry = create_entry(hass) config_entry = create_entry(hass)
with mock_skybell(hass), patch("aioskybell.utils.async_save_cache"): with await mock_skybell(hass), patch("aioskybell.utils.async_save_cache"):
await hass.config_entries.async_setup(config_entry.entry_id) await hass.config_entries.async_setup(config_entry.entry_id)
await hass.async_block_till_done() await hass.async_block_till_done()