Use json to store Withings test data fixtures (#99998)

* Decouple Withings sensor tests from yaml

* Improve Withings config flow tests

* Improve Withings config flow tests

* Fix feedback

* Use fixtures to store Withings testdata structures

* Use fixtures to store Withings testdata structures

* Use JSON

* Fix

* Use load_json_object_fixture
This commit is contained in:
Joost Lekkerkerker 2023-09-11 12:36:37 +02:00 committed by GitHub
parent 58072189fc
commit 5781e5e03e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 438 additions and 301 deletions

View File

@ -1,6 +1,6 @@
"""Tests for the withings component."""
from collections.abc import Iterable
from typing import Any, Optional
from typing import Any
from urllib.parse import urlparse
import arrow
@ -10,6 +10,8 @@ from withings_api.common import (
MeasureGetMeasGroupCategory,
MeasureGetMeasResponse,
MeasureType,
NotifyAppli,
NotifyListResponse,
SleepGetSummaryResponse,
UserGetDeviceResponse,
)
@ -17,7 +19,9 @@ from withings_api.common import (
from homeassistant.components.webhook import async_generate_url
from homeassistant.core import HomeAssistant
from .common import ProfileConfig, WebhookResponse
from .common import WebhookResponse
from tests.common import load_json_object_fixture
async def call_webhook(
@ -43,19 +47,23 @@ async def call_webhook(
class MockWithings:
"""Mock object for Withings."""
def __init__(self, user_profile: ProfileConfig):
def __init__(
self,
device_fixture: str = "person0_get_device.json",
measurement_fixture: str = "person0_get_meas.json",
sleep_fixture: str = "person0_get_sleep.json",
notify_list_fixture: str = "person0_notify_list.json",
):
"""Initialize mock."""
self.api_response_user_get_device = user_profile.api_response_user_get_device
self.api_response_measure_get_meas = user_profile.api_response_measure_get_meas
self.api_response_sleep_get_summary = (
user_profile.api_response_sleep_get_summary
)
self.device_fixture = device_fixture
self.measurement_fixture = measurement_fixture
self.sleep_fixture = sleep_fixture
self.notify_list_fixture = notify_list_fixture
def user_get_device(self) -> UserGetDeviceResponse:
"""Get devices."""
if isinstance(self.api_response_user_get_device, Exception):
raise self.api_response_user_get_device
return self.api_response_user_get_device
fixture = load_json_object_fixture(f"withings/{self.device_fixture}")
return UserGetDeviceResponse(**fixture)
def measure_get_meas(
self,
@ -67,19 +75,25 @@ class MockWithings:
lastupdate: DateType | None = None,
) -> MeasureGetMeasResponse:
"""Get measurements."""
if isinstance(self.api_response_measure_get_meas, Exception):
raise self.api_response_measure_get_meas
return self.api_response_measure_get_meas
fixture = load_json_object_fixture(f"withings/{self.measurement_fixture}")
return MeasureGetMeasResponse(**fixture)
def sleep_get_summary(
self,
data_fields: Iterable[GetSleepSummaryField],
startdateymd: Optional[DateType] = arrow.utcnow(),
enddateymd: Optional[DateType] = arrow.utcnow(),
offset: Optional[int] = None,
lastupdate: Optional[DateType] = arrow.utcnow(),
startdateymd: DateType | None = arrow.utcnow(),
enddateymd: DateType | None = arrow.utcnow(),
offset: int | None = None,
lastupdate: DateType | None = arrow.utcnow(),
) -> SleepGetSummaryResponse:
"""Get sleep."""
if isinstance(self.api_response_sleep_get_summary, Exception):
raise self.api_response_sleep_get_summary
return self.api_response_sleep_get_summary
fixture = load_json_object_fixture(f"withings/{self.sleep_fixture}")
return SleepGetSummaryResponse(**fixture)
def notify_list(
self,
appli: NotifyAppli | None = None,
) -> NotifyListResponse:
"""Get sleep."""
fixture = load_json_object_fixture(f"withings/{self.notify_list_fixture}")
return NotifyListResponse(**fixture)

View File

@ -4,20 +4,7 @@ import time
from typing import Any
from unittest.mock import patch
import arrow
import pytest
from withings_api.common import (
GetSleepSummaryData,
GetSleepSummarySerie,
MeasureGetMeasGroup,
MeasureGetMeasGroupAttrib,
MeasureGetMeasGroupCategory,
MeasureGetMeasMeasure,
MeasureGetMeasResponse,
MeasureType,
SleepGetSummaryResponse,
SleepModel,
)
from homeassistant.components.application_credentials import (
ClientCredential,
@ -27,10 +14,9 @@ from homeassistant.components.withings.const import DOMAIN
from homeassistant.config import async_process_ha_core_config
from homeassistant.core import HomeAssistant
from homeassistant.setup import async_setup_component
from homeassistant.util import dt as dt_util
from . import MockWithings
from .common import ComponentFactory, new_profile_config
from .common import ComponentFactory
from tests.common import MockConfigEntry
from tests.test_util.aiohttp import AiohttpClientMocker
@ -46,231 +32,9 @@ SCOPES = [
"user.sleepevents",
]
TITLE = "henk"
USER_ID = 12345
WEBHOOK_ID = "55a7335ea8dee830eed4ef8f84cda8f6d80b83af0847dc74032e86120bffed5e"
PERSON0 = new_profile_config(
profile="12345",
user_id=12345,
api_response_measure_get_meas=MeasureGetMeasResponse(
measuregrps=(
MeasureGetMeasGroup(
attrib=MeasureGetMeasGroupAttrib.DEVICE_ENTRY_FOR_USER,
category=MeasureGetMeasGroupCategory.REAL,
created=arrow.utcnow().shift(hours=-1),
date=arrow.utcnow().shift(hours=-1),
deviceid="DEV_ID",
grpid=1,
measures=(
MeasureGetMeasMeasure(type=MeasureType.WEIGHT, unit=0, value=70),
MeasureGetMeasMeasure(
type=MeasureType.FAT_MASS_WEIGHT, unit=0, value=5
),
MeasureGetMeasMeasure(
type=MeasureType.FAT_FREE_MASS, unit=0, value=60
),
MeasureGetMeasMeasure(
type=MeasureType.MUSCLE_MASS, unit=0, value=50
),
MeasureGetMeasMeasure(type=MeasureType.BONE_MASS, unit=0, value=10),
MeasureGetMeasMeasure(type=MeasureType.HEIGHT, unit=0, value=2),
MeasureGetMeasMeasure(
type=MeasureType.TEMPERATURE, unit=0, value=40
),
MeasureGetMeasMeasure(
type=MeasureType.BODY_TEMPERATURE, unit=0, value=40
),
MeasureGetMeasMeasure(
type=MeasureType.SKIN_TEMPERATURE, unit=0, value=20
),
MeasureGetMeasMeasure(
type=MeasureType.FAT_RATIO, unit=-3, value=70
),
MeasureGetMeasMeasure(
type=MeasureType.DIASTOLIC_BLOOD_PRESSURE, unit=0, value=70
),
MeasureGetMeasMeasure(
type=MeasureType.SYSTOLIC_BLOOD_PRESSURE, unit=0, value=100
),
MeasureGetMeasMeasure(
type=MeasureType.HEART_RATE, unit=0, value=60
),
MeasureGetMeasMeasure(type=MeasureType.SP02, unit=-2, value=95),
MeasureGetMeasMeasure(
type=MeasureType.HYDRATION, unit=-2, value=95
),
MeasureGetMeasMeasure(
type=MeasureType.PULSE_WAVE_VELOCITY, unit=0, value=100
),
),
),
MeasureGetMeasGroup(
attrib=MeasureGetMeasGroupAttrib.DEVICE_ENTRY_FOR_USER,
category=MeasureGetMeasGroupCategory.REAL,
created=arrow.utcnow().shift(hours=-2),
date=arrow.utcnow().shift(hours=-2),
deviceid="DEV_ID",
grpid=1,
measures=(
MeasureGetMeasMeasure(type=MeasureType.WEIGHT, unit=0, value=71),
MeasureGetMeasMeasure(
type=MeasureType.FAT_MASS_WEIGHT, unit=0, value=51
),
MeasureGetMeasMeasure(
type=MeasureType.FAT_FREE_MASS, unit=0, value=61
),
MeasureGetMeasMeasure(
type=MeasureType.MUSCLE_MASS, unit=0, value=51
),
MeasureGetMeasMeasure(type=MeasureType.BONE_MASS, unit=0, value=11),
MeasureGetMeasMeasure(type=MeasureType.HEIGHT, unit=0, value=21),
MeasureGetMeasMeasure(
type=MeasureType.TEMPERATURE, unit=0, value=41
),
MeasureGetMeasMeasure(
type=MeasureType.BODY_TEMPERATURE, unit=0, value=41
),
MeasureGetMeasMeasure(
type=MeasureType.SKIN_TEMPERATURE, unit=0, value=21
),
MeasureGetMeasMeasure(
type=MeasureType.FAT_RATIO, unit=-3, value=71
),
MeasureGetMeasMeasure(
type=MeasureType.DIASTOLIC_BLOOD_PRESSURE, unit=0, value=71
),
MeasureGetMeasMeasure(
type=MeasureType.SYSTOLIC_BLOOD_PRESSURE, unit=0, value=101
),
MeasureGetMeasMeasure(
type=MeasureType.HEART_RATE, unit=0, value=61
),
MeasureGetMeasMeasure(type=MeasureType.SP02, unit=-2, value=96),
MeasureGetMeasMeasure(
type=MeasureType.HYDRATION, unit=-2, value=96
),
MeasureGetMeasMeasure(
type=MeasureType.PULSE_WAVE_VELOCITY, unit=0, value=101
),
),
),
MeasureGetMeasGroup(
attrib=MeasureGetMeasGroupAttrib.DEVICE_ENTRY_FOR_USER_AMBIGUOUS,
category=MeasureGetMeasGroupCategory.REAL,
created=arrow.utcnow(),
date=arrow.utcnow(),
deviceid="DEV_ID",
grpid=1,
measures=(
MeasureGetMeasMeasure(type=MeasureType.WEIGHT, unit=0, value=71),
MeasureGetMeasMeasure(
type=MeasureType.FAT_MASS_WEIGHT, unit=0, value=4
),
MeasureGetMeasMeasure(
type=MeasureType.FAT_FREE_MASS, unit=0, value=40
),
MeasureGetMeasMeasure(
type=MeasureType.MUSCLE_MASS, unit=0, value=51
),
MeasureGetMeasMeasure(type=MeasureType.BONE_MASS, unit=0, value=11),
MeasureGetMeasMeasure(type=MeasureType.HEIGHT, unit=0, value=201),
MeasureGetMeasMeasure(
type=MeasureType.TEMPERATURE, unit=0, value=41
),
MeasureGetMeasMeasure(
type=MeasureType.BODY_TEMPERATURE, unit=0, value=34
),
MeasureGetMeasMeasure(
type=MeasureType.SKIN_TEMPERATURE, unit=0, value=21
),
MeasureGetMeasMeasure(
type=MeasureType.FAT_RATIO, unit=-3, value=71
),
MeasureGetMeasMeasure(
type=MeasureType.DIASTOLIC_BLOOD_PRESSURE, unit=0, value=71
),
MeasureGetMeasMeasure(
type=MeasureType.SYSTOLIC_BLOOD_PRESSURE, unit=0, value=101
),
MeasureGetMeasMeasure(
type=MeasureType.HEART_RATE, unit=0, value=61
),
MeasureGetMeasMeasure(type=MeasureType.SP02, unit=-2, value=98),
MeasureGetMeasMeasure(
type=MeasureType.HYDRATION, unit=-2, value=96
),
MeasureGetMeasMeasure(
type=MeasureType.PULSE_WAVE_VELOCITY, unit=0, value=102
),
),
),
),
more=False,
timezone=dt_util.UTC,
updatetime=arrow.get("2019-08-01"),
offset=0,
),
api_response_sleep_get_summary=SleepGetSummaryResponse(
more=False,
offset=0,
series=(
GetSleepSummarySerie(
timezone=dt_util.UTC,
model=SleepModel.SLEEP_MONITOR,
startdate=arrow.get("2019-02-01"),
enddate=arrow.get("2019-02-01"),
date=arrow.get("2019-02-01"),
modified=arrow.get(12345),
data=GetSleepSummaryData(
breathing_disturbances_intensity=110,
deepsleepduration=111,
durationtosleep=112,
durationtowakeup=113,
hr_average=114,
hr_max=115,
hr_min=116,
lightsleepduration=117,
remsleepduration=118,
rr_average=119,
rr_max=120,
rr_min=121,
sleep_score=122,
snoring=123,
snoringepisodecount=124,
wakeupcount=125,
wakeupduration=126,
),
),
GetSleepSummarySerie(
timezone=dt_util.UTC,
model=SleepModel.SLEEP_MONITOR,
startdate=arrow.get("2019-02-01"),
enddate=arrow.get("2019-02-01"),
date=arrow.get("2019-02-01"),
modified=arrow.get(12345),
data=GetSleepSummaryData(
breathing_disturbances_intensity=210,
deepsleepduration=211,
durationtosleep=212,
durationtowakeup=213,
hr_average=214,
hr_max=215,
hr_min=216,
lightsleepduration=217,
remsleepduration=218,
rr_average=219,
rr_max=220,
rr_min=221,
sleep_score=222,
snoring=223,
snoringepisodecount=224,
wakeupcount=225,
wakeupduration=226,
),
),
),
),
)
@pytest.fixture
def component_factory(
@ -318,12 +82,12 @@ def mock_config_entry(expires_at: int, scopes: list[str]) -> MockConfigEntry:
return MockConfigEntry(
domain=DOMAIN,
title=TITLE,
unique_id="12345",
unique_id=str(USER_ID),
data={
"auth_implementation": DOMAIN,
"token": {
"status": 0,
"userid": "12345",
"userid": str(USER_ID),
"access_token": "mock-access-token",
"refresh_token": "mock-refresh-token",
"expires_at": expires_at,
@ -356,7 +120,7 @@ async def mock_setup_integration(
)
async def func() -> MockWithings:
mock = MockWithings(PERSON0)
mock = MockWithings()
with patch(
"homeassistant.components.withings.common.ConfigEntryWithingsApi",
return_value=mock,

View File

@ -0,0 +1,18 @@
{
"status": 0,
"body": {
"devices": [
{
"type": "Scale",
"battery": "high",
"model": "Body+",
"model_id": 5,
"timezone": "Europe/Amsterdam",
"first_session_date": null,
"last_session_date": 1693867179,
"deviceid": "f998be4b9ccc9e136fd8cd8e8e344c31ec3b271d",
"hash_deviceid": "f998be4b9ccc9e136fd8cd8e8e344c31ec3b271d"
}
]
}
}

View File

@ -0,0 +1,278 @@
{
"more": false,
"timezone": "UTC",
"updatetime": 1564617600,
"offset": 0,
"measuregrps": [
{
"attrib": 0,
"category": 1,
"created": 1564660800,
"date": 1564660800,
"deviceid": "DEV_ID",
"grpid": 1,
"measures": [
{
"type": 1,
"unit": 0,
"value": 70
},
{
"type": 8,
"unit": 0,
"value": 5
},
{
"type": 5,
"unit": 0,
"value": 60
},
{
"type": 76,
"unit": 0,
"value": 50
},
{
"type": 88,
"unit": 0,
"value": 10
},
{
"type": 4,
"unit": 0,
"value": 2
},
{
"type": 12,
"unit": 0,
"value": 40
},
{
"type": 71,
"unit": 0,
"value": 40
},
{
"type": 73,
"unit": 0,
"value": 20
},
{
"type": 6,
"unit": -3,
"value": 70
},
{
"type": 9,
"unit": 0,
"value": 70
},
{
"type": 10,
"unit": 0,
"value": 100
},
{
"type": 11,
"unit": 0,
"value": 60
},
{
"type": 54,
"unit": -2,
"value": 95
},
{
"type": 77,
"unit": -2,
"value": 95
},
{
"type": 91,
"unit": 0,
"value": 100
}
]
},
{
"attrib": 0,
"category": 1,
"created": 1564657200,
"date": 1564657200,
"deviceid": "DEV_ID",
"grpid": 1,
"measures": [
{
"type": 1,
"unit": 0,
"value": 71
},
{
"type": 8,
"unit": 0,
"value": 51
},
{
"type": 5,
"unit": 0,
"value": 61
},
{
"type": 76,
"unit": 0,
"value": 51
},
{
"type": 88,
"unit": 0,
"value": 11
},
{
"type": 4,
"unit": 0,
"value": 21
},
{
"type": 12,
"unit": 0,
"value": 41
},
{
"type": 71,
"unit": 0,
"value": 41
},
{
"type": 73,
"unit": 0,
"value": 21
},
{
"type": 6,
"unit": -3,
"value": 71
},
{
"type": 9,
"unit": 0,
"value": 71
},
{
"type": 10,
"unit": 0,
"value": 101
},
{
"type": 11,
"unit": 0,
"value": 61
},
{
"type": 54,
"unit": -2,
"value": 96
},
{
"type": 77,
"unit": -2,
"value": 96
},
{
"type": 91,
"unit": 0,
"value": 101
}
]
},
{
"attrib": 1,
"category": 1,
"created": 1564664400,
"date": 1564664400,
"deviceid": "DEV_ID",
"grpid": 1,
"measures": [
{
"type": 1,
"unit": 0,
"value": 71
},
{
"type": 8,
"unit": 0,
"value": 4
},
{
"type": 5,
"unit": 0,
"value": 40
},
{
"type": 76,
"unit": 0,
"value": 51
},
{
"type": 88,
"unit": 0,
"value": 11
},
{
"type": 4,
"unit": 0,
"value": 201
},
{
"type": 12,
"unit": 0,
"value": 41
},
{
"type": 71,
"unit": 0,
"value": 34
},
{
"type": 73,
"unit": 0,
"value": 21
},
{
"type": 6,
"unit": -3,
"value": 71
},
{
"type": 9,
"unit": 0,
"value": 71
},
{
"type": 10,
"unit": 0,
"value": 101
},
{
"type": 11,
"unit": 0,
"value": 61
},
{
"type": 54,
"unit": -2,
"value": 98
},
{
"type": 77,
"unit": -2,
"value": 96
},
{
"type": 91,
"unit": 0,
"value": 102
}
]
}
]
}

View File

@ -0,0 +1,60 @@
{
"more": false,
"offset": 0,
"series": [
{
"timezone": "UTC",
"model": 32,
"startdate": 1548979200,
"enddate": 1548979200,
"date": 1548979200,
"modified": 12345,
"data": {
"breathing_disturbances_intensity": 110,
"deepsleepduration": 111,
"durationtosleep": 112,
"durationtowakeup": 113,
"hr_average": 114,
"hr_max": 115,
"hr_min": 116,
"lightsleepduration": 117,
"remsleepduration": 118,
"rr_average": 119,
"rr_max": 120,
"rr_min": 121,
"sleep_score": 122,
"snoring": 123,
"snoringepisodecount": 124,
"wakeupcount": 125,
"wakeupduration": 126
}
},
{
"timezone": "UTC",
"model": 32,
"startdate": 1548979200,
"enddate": 1548979200,
"date": 1548979200,
"modified": 12345,
"data": {
"breathing_disturbances_intensity": 210,
"deepsleepduration": 211,
"durationtosleep": 212,
"durationtowakeup": 213,
"hr_average": 214,
"hr_max": 215,
"hr_min": 216,
"lightsleepduration": 217,
"remsleepduration": 218,
"rr_average": 219,
"rr_max": 220,
"rr_min": 221,
"sleep_score": 222,
"snoring": 223,
"snoringepisodecount": 224,
"wakeupcount": 225,
"wakeupduration": 226
}
}
]
}

View File

@ -0,0 +1,3 @@
{
"profiles": []
}

View File

@ -16,7 +16,7 @@ from homeassistant.helpers.entity_registry import EntityRegistry
from . import MockWithings, call_webhook
from .common import async_get_entity_id
from .conftest import PERSON0, WEBHOOK_ID, ComponentSetup
from .conftest import USER_ID, WEBHOOK_ID, ComponentSetup
from tests.typing import ClientSessionGenerator
@ -26,36 +26,36 @@ WITHINGS_MEASUREMENTS_MAP: dict[Measurement, WithingsEntityDescription] = {
EXPECTED_DATA = (
(PERSON0, Measurement.WEIGHT_KG, 70.0),
(PERSON0, Measurement.FAT_MASS_KG, 5.0),
(PERSON0, Measurement.FAT_FREE_MASS_KG, 60.0),
(PERSON0, Measurement.MUSCLE_MASS_KG, 50.0),
(PERSON0, Measurement.BONE_MASS_KG, 10.0),
(PERSON0, Measurement.HEIGHT_M, 2.0),
(PERSON0, Measurement.FAT_RATIO_PCT, 0.07),
(PERSON0, Measurement.DIASTOLIC_MMHG, 70.0),
(PERSON0, Measurement.SYSTOLIC_MMGH, 100.0),
(PERSON0, Measurement.HEART_PULSE_BPM, 60.0),
(PERSON0, Measurement.SPO2_PCT, 0.95),
(PERSON0, Measurement.HYDRATION, 0.95),
(PERSON0, Measurement.PWV, 100.0),
(PERSON0, Measurement.SLEEP_BREATHING_DISTURBANCES_INTENSITY, 160.0),
(PERSON0, Measurement.SLEEP_DEEP_DURATION_SECONDS, 322),
(PERSON0, Measurement.SLEEP_HEART_RATE_AVERAGE, 164.0),
(PERSON0, Measurement.SLEEP_HEART_RATE_MAX, 165.0),
(PERSON0, Measurement.SLEEP_HEART_RATE_MIN, 166.0),
(PERSON0, Measurement.SLEEP_LIGHT_DURATION_SECONDS, 334),
(PERSON0, Measurement.SLEEP_REM_DURATION_SECONDS, 336),
(PERSON0, Measurement.SLEEP_RESPIRATORY_RATE_AVERAGE, 169.0),
(PERSON0, Measurement.SLEEP_RESPIRATORY_RATE_MAX, 170.0),
(PERSON0, Measurement.SLEEP_RESPIRATORY_RATE_MIN, 171.0),
(PERSON0, Measurement.SLEEP_SCORE, 222),
(PERSON0, Measurement.SLEEP_SNORING, 173.0),
(PERSON0, Measurement.SLEEP_SNORING_EPISODE_COUNT, 348),
(PERSON0, Measurement.SLEEP_TOSLEEP_DURATION_SECONDS, 162.0),
(PERSON0, Measurement.SLEEP_TOWAKEUP_DURATION_SECONDS, 163.0),
(PERSON0, Measurement.SLEEP_WAKEUP_COUNT, 350),
(PERSON0, Measurement.SLEEP_WAKEUP_DURATION_SECONDS, 176.0),
(Measurement.WEIGHT_KG, 70.0),
(Measurement.FAT_MASS_KG, 5.0),
(Measurement.FAT_FREE_MASS_KG, 60.0),
(Measurement.MUSCLE_MASS_KG, 50.0),
(Measurement.BONE_MASS_KG, 10.0),
(Measurement.HEIGHT_M, 2.0),
(Measurement.FAT_RATIO_PCT, 0.07),
(Measurement.DIASTOLIC_MMHG, 70.0),
(Measurement.SYSTOLIC_MMGH, 100.0),
(Measurement.HEART_PULSE_BPM, 60.0),
(Measurement.SPO2_PCT, 0.95),
(Measurement.HYDRATION, 0.95),
(Measurement.PWV, 100.0),
(Measurement.SLEEP_BREATHING_DISTURBANCES_INTENSITY, 160.0),
(Measurement.SLEEP_DEEP_DURATION_SECONDS, 322),
(Measurement.SLEEP_HEART_RATE_AVERAGE, 164.0),
(Measurement.SLEEP_HEART_RATE_MAX, 165.0),
(Measurement.SLEEP_HEART_RATE_MIN, 166.0),
(Measurement.SLEEP_LIGHT_DURATION_SECONDS, 334),
(Measurement.SLEEP_REM_DURATION_SECONDS, 336),
(Measurement.SLEEP_RESPIRATORY_RATE_AVERAGE, 169.0),
(Measurement.SLEEP_RESPIRATORY_RATE_MAX, 170.0),
(Measurement.SLEEP_RESPIRATORY_RATE_MIN, 171.0),
(Measurement.SLEEP_SCORE, 222),
(Measurement.SLEEP_SNORING, 173.0),
(Measurement.SLEEP_SNORING_EPISODE_COUNT, 348),
(Measurement.SLEEP_TOSLEEP_DURATION_SECONDS, 162.0),
(Measurement.SLEEP_TOWAKEUP_DURATION_SECONDS, 163.0),
(Measurement.SLEEP_WAKEUP_COUNT, 350),
(Measurement.SLEEP_WAKEUP_DURATION_SECONDS, 176.0),
)
@ -84,7 +84,7 @@ async def test_sensor_default_enabled_entities(
await setup_integration()
entity_registry: EntityRegistry = er.async_get(hass)
mock = MockWithings(PERSON0)
mock = MockWithings()
with patch(
"homeassistant.components.withings.common.ConfigEntryWithingsApi",
return_value=mock,
@ -93,31 +93,31 @@ async def test_sensor_default_enabled_entities(
# Assert entities should exist.
for attribute in SENSORS:
entity_id = await async_get_entity_id(
hass, attribute, PERSON0.user_id, SENSOR_DOMAIN
hass, attribute, USER_ID, SENSOR_DOMAIN
)
assert entity_id
assert entity_registry.async_is_registered(entity_id)
resp = await call_webhook(
hass,
WEBHOOK_ID,
{"userid": PERSON0.user_id, "appli": NotifyAppli.SLEEP},
{"userid": USER_ID, "appli": NotifyAppli.SLEEP},
client,
)
assert resp.message_code == 0
resp = await call_webhook(
hass,
WEBHOOK_ID,
{"userid": PERSON0.user_id, "appli": NotifyAppli.WEIGHT},
{"userid": USER_ID, "appli": NotifyAppli.WEIGHT},
client,
)
assert resp.message_code == 0
assert resp.message_code == 0
for person, measurement, expected in EXPECTED_DATA:
for measurement, expected in EXPECTED_DATA:
attribute = WITHINGS_MEASUREMENTS_MAP[measurement]
entity_id = await async_get_entity_id(
hass, attribute, person.user_id, SENSOR_DOMAIN
hass, attribute, USER_ID, SENSOR_DOMAIN
)
state_obj = hass.states.get(entity_id)
@ -131,11 +131,11 @@ async def test_all_entities(
"""Test all entities."""
await setup_integration()
mock = MockWithings(PERSON0)
mock = MockWithings()
with patch(
"homeassistant.components.withings.common.ConfigEntryWithingsApi",
return_value=mock,
):
for sensor in SENSORS:
entity_id = await async_get_entity_id(hass, sensor, 12345, SENSOR_DOMAIN)
entity_id = await async_get_entity_id(hass, sensor, USER_ID, SENSOR_DOMAIN)
assert hass.states.get(entity_id) == snapshot