1
0
mirror of https://github.com/home-assistant/core.git synced 2026-06-02 05:34:15 +01:00
Files
core/tests/components/nightscout/__init__.py
T

145 lines
5.6 KiB
Python

"""Tests for the Nightscout integration."""
import json
from unittest.mock import patch
from aiohttp import ClientConnectionError
from py_nightscout.models import SGV, ServerStatus
from homeassistant.components.nightscout.const import DOMAIN
from homeassistant.const import CONF_URL
from homeassistant.core import HomeAssistant
from tests.common import MockConfigEntry
GLUCOSE_READINGS = [
SGV.new_from_json_dict(
json.loads(
'{"_id":"5f2b01f5c3d0ac7c4090e223","device":"xDrip-LimiTTer","date":1596654066533,"dateString":"2020-08-05T19:01:06.533Z","sgv":169,"delta":-5.257,"direction":"FortyFiveDown","type":"sgv","filtered":182823.5157,"unfiltered":182823.5157,"rssi":100,"noise":1,"sysTime":"2020-08-05T19:01:06.533Z","utcOffset":-180}'
)
)
]
SERVER_STATUS = ServerStatus.new_from_json_dict(
json.loads(
'{"status":"ok","name":"nightscout","version":"13.0.1","serverTime":"2020-08-05T18:14:02.032Z","serverTimeEpoch":1596651242032,"apiEnabled":true,"careportalEnabled":true,"boluscalcEnabled":true,"settings":{},"extendedSettings":{},"authorized":null}'
)
)
SERVER_STATUS_STATUS_ONLY = ServerStatus.new_from_json_dict(
json.loads(
'{"status":"ok","name":"nightscout","version":"14.0.4",'
'"serverTime":"2020-09-25T21:03:59.315Z",'
'"serverTimeEpoch":1601067839315,"apiEnabled":true,'
'"careportalEnabled":true,"boluscalcEnabled":true,'
'"settings":{"units":"mg/dl","timeFormat":12,'
'"nightMode":false,"editMode":true,'
'"showRawbg":"never","customTitle":"Nightscout",'
'"theme":"default","alarmUrgentHigh":true,'
'"alarmUrgentHighMins":[30,60,90,120],'
'"alarmHigh":true,"alarmHighMins":[30,60,90,120],'
'"alarmLow":true,"alarmLowMins":[15,30,45,60],'
'"alarmUrgentLow":true,"alarmUrgentLowMins":[15,30,45],'
'"alarmUrgentMins":[30,60,90,120],'
'"alarmWarnMins":[30,60,90,120],'
'"alarmTimeagoWarn":true,"alarmTimeagoWarnMins":15,'
'"alarmTimeagoUrgent":true,"alarmTimeagoUrgentMins":30,'
'"alarmPumpBatteryLow":false,"language":"en",'
'"scaleY":"log",'
'"showPlugins":"dbsize delta direction upbat",'
'"showForecast":"ar2","focusHours":3,"heartbeat":60,'
'"baseURL":"","authDefaultRoles":"status-only",'
'"thresholds":{"bgHigh":260,"bgTargetTop":180,'
'"bgTargetBottom":80,"bgLow":55},'
'"insecureUseHttp":true,"secureHstsHeader":false,'
'"secureHstsHeaderIncludeSubdomains":false,'
'"secureHstsHeaderPreload":false,"secureCsp":false,'
'"deNormalizeDates":false,"showClockDelta":false,'
'"showClockLastTime":false,"bolusRenderOver":1,'
'"frameUrl1":"","frameUrl2":"","frameUrl3":"",'
'"frameUrl4":"","frameUrl5":"","frameUrl6":"",'
'"frameUrl7":"","frameUrl8":"","frameName1":"",'
'"frameName2":"","frameName3":"","frameName4":"",'
'"frameName5":"","frameName6":"","frameName7":"",'
'"frameName8":"","DEFAULT_FEATURES":["bgnow","delta",'
'"direction","timeago","devicestatus","upbat",'
'"errorcodes","profile","dbsize"],'
'"alarmTypes":["predict"],'
'"enable":["careportal","boluscalc","food","bwp",'
'"cage","sage","iage","iob","cob","basal","ar2",'
'"rawbg","pushover","bgi","pump","openaps",'
'"treatmentnotify","bgnow","delta","direction",'
'"timeago","devicestatus","upbat","errorcodes",'
'"profile","dbsize","ar2"]},'
'"extendedSettings":{"devicestatus":'
'{"advanced":true,"days":1}},"authorized":null}'
)
)
async def init_integration(hass: HomeAssistant) -> MockConfigEntry:
"""Set up the Nightscout integration in Home Assistant."""
entry = MockConfigEntry(
domain=DOMAIN,
data={CONF_URL: "https://some.url:1234"},
)
with (
patch(
"homeassistant.components.nightscout.NightscoutAPI.get_sgvs",
return_value=GLUCOSE_READINGS,
),
patch(
"homeassistant.components.nightscout.NightscoutAPI.get_server_status",
return_value=SERVER_STATUS,
),
):
entry.add_to_hass(hass)
await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done()
return entry
async def init_integration_unavailable(hass: HomeAssistant) -> MockConfigEntry:
"""Set up the Nightscout integration in Home Assistant."""
entry = MockConfigEntry(
domain=DOMAIN,
data={CONF_URL: "https://some.url:1234"},
)
with (
patch(
"homeassistant.components.nightscout.NightscoutAPI.get_sgvs",
side_effect=ClientConnectionError(),
),
patch(
"homeassistant.components.nightscout.NightscoutAPI.get_server_status",
return_value=SERVER_STATUS,
),
):
entry.add_to_hass(hass)
await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done()
return entry
async def init_integration_empty_response(hass: HomeAssistant) -> MockConfigEntry:
"""Set up the Nightscout integration in Home Assistant."""
entry = MockConfigEntry(
domain=DOMAIN,
data={CONF_URL: "https://some.url:1234"},
)
with (
patch(
"homeassistant.components.nightscout.NightscoutAPI.get_sgvs",
return_value=[],
),
patch(
"homeassistant.components.nightscout.NightscoutAPI.get_server_status",
return_value=SERVER_STATUS,
),
):
entry.add_to_hass(hass)
await hass.config_entries.async_setup(entry.entry_id)
await hass.async_block_till_done()
return entry