"""Tests for the fitbit sensor platform.""" from collections.abc import Awaitable, Callable from typing import Any import pytest from homeassistant.core import HomeAssistant from .conftest import timeseries_response DEVICE_RESPONSE_CHARGE_2 = { "battery": "Medium", "batteryLevel": 60, "deviceVersion": "Charge 2", "id": "816713257", "lastSyncTime": "2019-11-07T12:00:58.000", "mac": "16ADD56D54GD", "type": "TRACKER", } DEVICE_RESPONSE_ARIA_AIR = { "battery": "High", "batteryLevel": 95, "deviceVersion": "Aria Air", "id": "016713257", "lastSyncTime": "2019-11-07T12:00:58.000", "mac": "06ADD56D54GD", "type": "SCALE", } @pytest.mark.parametrize( "monitored_resources", [["activities/steps"]], ) async def test_step_sensor( hass: HomeAssistant, sensor_platform_setup: Callable[[], Awaitable[bool]], register_timeseries: Callable[[str, dict[str, Any]], None], ) -> None: """Test battery level sensor.""" register_timeseries( "activities/steps", timeseries_response("activities-steps", "5600") ) await sensor_platform_setup() state = hass.states.get("sensor.steps") assert state assert state.state == "5600" assert state.attributes == { "attribution": "Data provided by Fitbit.com", "friendly_name": "Steps", "icon": "mdi:walk", "unit_of_measurement": "steps", } @pytest.mark.parametrize( ("devices_response", "monitored_resources"), [([DEVICE_RESPONSE_CHARGE_2, DEVICE_RESPONSE_ARIA_AIR], ["devices/battery"])], ) async def test_device_battery_level( hass: HomeAssistant, sensor_platform_setup: Callable[[], Awaitable[bool]], ) -> None: """Test battery level sensor for devices.""" await sensor_platform_setup() state = hass.states.get("sensor.charge_2_battery") assert state assert state.state == "Medium" assert state.attributes == { "attribution": "Data provided by Fitbit.com", "friendly_name": "Charge 2 Battery", "icon": "mdi:battery-50", "model": "Charge 2", "type": "tracker", } state = hass.states.get("sensor.aria_air_battery") assert state assert state.state == "High" assert state.attributes == { "attribution": "Data provided by Fitbit.com", "friendly_name": "Aria Air Battery", "icon": "mdi:battery", "model": "Aria Air", "type": "scale", }