mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Workday add languages (#103127)
This commit is contained in:
parent
d4c5a93b63
commit
8e71086c21
@ -1,9 +1,10 @@
|
|||||||
"""Sensor to indicate whether the current day is a workday."""
|
"""Sensor to indicate whether the current day is a workday."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from holidays import list_supported_countries
|
from holidays import HolidayBase, country_holidays, list_supported_countries
|
||||||
|
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
|
from homeassistant.const import CONF_LANGUAGE
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.exceptions import ConfigEntryError
|
from homeassistant.exceptions import ConfigEntryError
|
||||||
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
from homeassistant.helpers.issue_registry import IssueSeverity, async_create_issue
|
||||||
@ -17,6 +18,13 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
|
|||||||
country: str | None = entry.options.get(CONF_COUNTRY)
|
country: str | None = entry.options.get(CONF_COUNTRY)
|
||||||
province: str | None = entry.options.get(CONF_PROVINCE)
|
province: str | None = entry.options.get(CONF_PROVINCE)
|
||||||
|
|
||||||
|
if country and CONF_LANGUAGE not in entry.options:
|
||||||
|
cls: HolidayBase = country_holidays(country, subdiv=province)
|
||||||
|
default_language = cls.default_language
|
||||||
|
new_options = entry.options.copy()
|
||||||
|
new_options[CONF_LANGUAGE] = default_language
|
||||||
|
hass.config_entries.async_update_entry(entry, options=new_options)
|
||||||
|
|
||||||
if country and country not in list_supported_countries():
|
if country and country not in list_supported_countries():
|
||||||
async_create_issue(
|
async_create_issue(
|
||||||
hass,
|
hass,
|
||||||
|
@ -13,7 +13,7 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant.components.binary_sensor import BinarySensorEntity
|
from homeassistant.components.binary_sensor import BinarySensorEntity
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import CONF_NAME
|
from homeassistant.const import CONF_LANGUAGE, CONF_NAME
|
||||||
from homeassistant.core import HomeAssistant, ServiceResponse, SupportsResponse
|
from homeassistant.core import HomeAssistant, ServiceResponse, SupportsResponse
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
from homeassistant.helpers.device_registry import DeviceEntryType, DeviceInfo
|
||||||
@ -72,16 +72,16 @@ async def async_setup_entry(
|
|||||||
province: str | None = entry.options.get(CONF_PROVINCE)
|
province: str | None = entry.options.get(CONF_PROVINCE)
|
||||||
sensor_name: str = entry.options[CONF_NAME]
|
sensor_name: str = entry.options[CONF_NAME]
|
||||||
workdays: list[str] = entry.options[CONF_WORKDAYS]
|
workdays: list[str] = entry.options[CONF_WORKDAYS]
|
||||||
|
language: str | None = entry.options.get(CONF_LANGUAGE)
|
||||||
|
|
||||||
year: int = (dt_util.now() + timedelta(days=days_offset)).year
|
year: int = (dt_util.now() + timedelta(days=days_offset)).year
|
||||||
|
|
||||||
if country:
|
if country:
|
||||||
cls: HolidayBase = country_holidays(country, subdiv=province, years=year)
|
|
||||||
obj_holidays: HolidayBase = country_holidays(
|
obj_holidays: HolidayBase = country_holidays(
|
||||||
country,
|
country,
|
||||||
subdiv=province,
|
subdiv=province,
|
||||||
years=year,
|
years=year,
|
||||||
language=cls.default_language,
|
language=language,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
obj_holidays = HolidayBase()
|
obj_holidays = HolidayBase()
|
||||||
|
@ -11,7 +11,7 @@ from homeassistant.config_entries import (
|
|||||||
ConfigFlow,
|
ConfigFlow,
|
||||||
OptionsFlowWithConfigEntry,
|
OptionsFlowWithConfigEntry,
|
||||||
)
|
)
|
||||||
from homeassistant.const import CONF_NAME
|
from homeassistant.const import CONF_LANGUAGE, CONF_NAME
|
||||||
from homeassistant.core import callback
|
from homeassistant.core import callback
|
||||||
from homeassistant.data_entry_flow import AbortFlow, FlowResult
|
from homeassistant.data_entry_flow import AbortFlow, FlowResult
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
@ -46,7 +46,7 @@ from .const import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def add_province_to_schema(
|
def add_province_and_language_to_schema(
|
||||||
schema: vol.Schema,
|
schema: vol.Schema,
|
||||||
country: str | None,
|
country: str | None,
|
||||||
) -> vol.Schema:
|
) -> vol.Schema:
|
||||||
@ -55,20 +55,36 @@ def add_province_to_schema(
|
|||||||
return schema
|
return schema
|
||||||
|
|
||||||
all_countries = list_supported_countries(include_aliases=False)
|
all_countries = list_supported_countries(include_aliases=False)
|
||||||
if not all_countries.get(country):
|
|
||||||
return schema
|
|
||||||
|
|
||||||
add_schema = {
|
language_schema = {}
|
||||||
|
province_schema = {}
|
||||||
|
|
||||||
|
_country = country_holidays(country=country)
|
||||||
|
if country_default_language := (_country.default_language):
|
||||||
|
selectable_languages = _country.supported_languages
|
||||||
|
language_schema = {
|
||||||
|
vol.Optional(
|
||||||
|
CONF_LANGUAGE, default=country_default_language
|
||||||
|
): SelectSelector(
|
||||||
|
SelectSelectorConfig(
|
||||||
|
options=list(selectable_languages),
|
||||||
|
mode=SelectSelectorMode.DROPDOWN,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if provinces := all_countries.get(country):
|
||||||
|
province_schema = {
|
||||||
vol.Optional(CONF_PROVINCE): SelectSelector(
|
vol.Optional(CONF_PROVINCE): SelectSelector(
|
||||||
SelectSelectorConfig(
|
SelectSelectorConfig(
|
||||||
options=all_countries[country],
|
options=provinces,
|
||||||
mode=SelectSelectorMode.DROPDOWN,
|
mode=SelectSelectorMode.DROPDOWN,
|
||||||
translation_key=CONF_PROVINCE,
|
translation_key=CONF_PROVINCE,
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
}
|
}
|
||||||
|
|
||||||
return vol.Schema({**DATA_SCHEMA_OPT.schema, **add_schema})
|
return vol.Schema({**DATA_SCHEMA_OPT.schema, **language_schema, **province_schema})
|
||||||
|
|
||||||
|
|
||||||
def _is_valid_date_range(check_date: str, error: type[HomeAssistantError]) -> bool:
|
def _is_valid_date_range(check_date: str, error: type[HomeAssistantError]) -> bool:
|
||||||
@ -93,12 +109,11 @@ def validate_custom_dates(user_input: dict[str, Any]) -> None:
|
|||||||
|
|
||||||
year: int = dt_util.now().year
|
year: int = dt_util.now().year
|
||||||
if country := user_input.get(CONF_COUNTRY):
|
if country := user_input.get(CONF_COUNTRY):
|
||||||
cls = country_holidays(country)
|
|
||||||
obj_holidays = country_holidays(
|
obj_holidays = country_holidays(
|
||||||
country=country,
|
country=country,
|
||||||
subdiv=user_input.get(CONF_PROVINCE),
|
subdiv=user_input.get(CONF_PROVINCE),
|
||||||
years=year,
|
years=year,
|
||||||
language=cls.default_language,
|
language=user_input.get(CONF_LANGUAGE),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
obj_holidays = HolidayBase(years=year)
|
obj_holidays = HolidayBase(years=year)
|
||||||
@ -237,7 +252,9 @@ class WorkdayConfigFlow(ConfigFlow, domain=DOMAIN):
|
|||||||
)
|
)
|
||||||
|
|
||||||
schema = await self.hass.async_add_executor_job(
|
schema = await self.hass.async_add_executor_job(
|
||||||
add_province_to_schema, DATA_SCHEMA_OPT, self.data.get(CONF_COUNTRY)
|
add_province_and_language_to_schema,
|
||||||
|
DATA_SCHEMA_OPT,
|
||||||
|
self.data.get(CONF_COUNTRY),
|
||||||
)
|
)
|
||||||
new_schema = self.add_suggested_values_to_schema(schema, user_input)
|
new_schema = self.add_suggested_values_to_schema(schema, user_input)
|
||||||
return self.async_show_form(
|
return self.async_show_form(
|
||||||
@ -298,7 +315,9 @@ class WorkdayOptionsFlowHandler(OptionsFlowWithConfigEntry):
|
|||||||
return self.async_create_entry(data=combined_input)
|
return self.async_create_entry(data=combined_input)
|
||||||
|
|
||||||
schema: vol.Schema = await self.hass.async_add_executor_job(
|
schema: vol.Schema = await self.hass.async_add_executor_job(
|
||||||
add_province_to_schema, DATA_SCHEMA_OPT, self.options.get(CONF_COUNTRY)
|
add_province_and_language_to_schema,
|
||||||
|
DATA_SCHEMA_OPT,
|
||||||
|
self.options.get(CONF_COUNTRY),
|
||||||
)
|
)
|
||||||
|
|
||||||
new_schema = self.add_suggested_values_to_schema(
|
new_schema = self.add_suggested_values_to_schema(
|
||||||
|
@ -19,7 +19,8 @@
|
|||||||
"workdays": "Workdays",
|
"workdays": "Workdays",
|
||||||
"add_holidays": "Add holidays",
|
"add_holidays": "Add holidays",
|
||||||
"remove_holidays": "Remove Holidays",
|
"remove_holidays": "Remove Holidays",
|
||||||
"province": "Subdivision of country"
|
"province": "Subdivision of country",
|
||||||
|
"language": "Language for named holidays"
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"excludes": "List of workdays to exclude",
|
"excludes": "List of workdays to exclude",
|
||||||
@ -27,7 +28,8 @@
|
|||||||
"workdays": "List of workdays",
|
"workdays": "List of workdays",
|
||||||
"add_holidays": "Add custom holidays as YYYY-MM-DD or as range using `,` as separator",
|
"add_holidays": "Add custom holidays as YYYY-MM-DD or as range using `,` as separator",
|
||||||
"remove_holidays": "Remove holidays as YYYY-MM-DD, as range using `,` as separator or by using partial of name",
|
"remove_holidays": "Remove holidays as YYYY-MM-DD, as range using `,` as separator or by using partial of name",
|
||||||
"province": "State, Territory, Province, Region of Country"
|
"province": "State, Territory, Province, Region of Country",
|
||||||
|
"language": "Choose the language you want to configure named holidays after"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -48,7 +50,8 @@
|
|||||||
"workdays": "[%key:component::workday::config::step::options::data::workdays%]",
|
"workdays": "[%key:component::workday::config::step::options::data::workdays%]",
|
||||||
"add_holidays": "[%key:component::workday::config::step::options::data::add_holidays%]",
|
"add_holidays": "[%key:component::workday::config::step::options::data::add_holidays%]",
|
||||||
"remove_holidays": "[%key:component::workday::config::step::options::data::remove_holidays%]",
|
"remove_holidays": "[%key:component::workday::config::step::options::data::remove_holidays%]",
|
||||||
"province": "[%key:component::workday::config::step::options::data::province%]"
|
"province": "[%key:component::workday::config::step::options::data::province%]",
|
||||||
|
"language": "[%key:component::workday::config::step::options::data::language%]"
|
||||||
},
|
},
|
||||||
"data_description": {
|
"data_description": {
|
||||||
"excludes": "[%key:component::workday::config::step::options::data_description::excludes%]",
|
"excludes": "[%key:component::workday::config::step::options::data_description::excludes%]",
|
||||||
@ -56,7 +59,8 @@
|
|||||||
"workdays": "[%key:component::workday::config::step::options::data_description::workdays%]",
|
"workdays": "[%key:component::workday::config::step::options::data_description::workdays%]",
|
||||||
"add_holidays": "[%key:component::workday::config::step::options::data_description::add_holidays%]",
|
"add_holidays": "[%key:component::workday::config::step::options::data_description::add_holidays%]",
|
||||||
"remove_holidays": "[%key:component::workday::config::step::options::data_description::remove_holidays%]",
|
"remove_holidays": "[%key:component::workday::config::step::options::data_description::remove_holidays%]",
|
||||||
"province": "[%key:component::workday::config::step::options::data_description::province%]"
|
"province": "[%key:component::workday::config::step::options::data_description::province%]",
|
||||||
|
"language": "[%key:component::workday::config::step::options::data_description::language%]"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -65,6 +65,17 @@ TEST_CONFIG_WITH_PROVINCE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
|
}
|
||||||
|
TEST_CONFIG_NO_LANGUAGE_CONFIGURED = {
|
||||||
|
"name": DEFAULT_NAME,
|
||||||
|
"country": "DE",
|
||||||
|
"province": "BW",
|
||||||
|
"excludes": DEFAULT_EXCLUDES,
|
||||||
|
"days_offset": DEFAULT_OFFSET,
|
||||||
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
|
"add_holidays": [],
|
||||||
|
"remove_holidays": [],
|
||||||
}
|
}
|
||||||
TEST_CONFIG_INCORRECT_COUNTRY = {
|
TEST_CONFIG_INCORRECT_COUNTRY = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -74,6 +85,7 @@ TEST_CONFIG_INCORRECT_COUNTRY = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_INCORRECT_PROVINCE = {
|
TEST_CONFIG_INCORRECT_PROVINCE = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -84,6 +96,7 @@ TEST_CONFIG_INCORRECT_PROVINCE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_NO_PROVINCE = {
|
TEST_CONFIG_NO_PROVINCE = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -93,6 +106,7 @@ TEST_CONFIG_NO_PROVINCE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_WITH_STATE = {
|
TEST_CONFIG_WITH_STATE = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -103,6 +117,7 @@ TEST_CONFIG_WITH_STATE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "en_US",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_NO_STATE = {
|
TEST_CONFIG_NO_STATE = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -112,6 +127,7 @@ TEST_CONFIG_NO_STATE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "en_US",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_INCLUDE_HOLIDAY = {
|
TEST_CONFIG_INCLUDE_HOLIDAY = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -122,6 +138,7 @@ TEST_CONFIG_INCLUDE_HOLIDAY = {
|
|||||||
"workdays": ["holiday"],
|
"workdays": ["holiday"],
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_EXAMPLE_1 = {
|
TEST_CONFIG_EXAMPLE_1 = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -131,6 +148,7 @@ TEST_CONFIG_EXAMPLE_1 = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "en_US",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_EXAMPLE_2 = {
|
TEST_CONFIG_EXAMPLE_2 = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -141,6 +159,7 @@ TEST_CONFIG_EXAMPLE_2 = {
|
|||||||
"workdays": ["mon", "wed", "fri"],
|
"workdays": ["mon", "wed", "fri"],
|
||||||
"add_holidays": ["2020-02-24"],
|
"add_holidays": ["2020-02-24"],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_REMOVE_HOLIDAY = {
|
TEST_CONFIG_REMOVE_HOLIDAY = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -150,6 +169,7 @@ TEST_CONFIG_REMOVE_HOLIDAY = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": ["2020-12-25", "2020-11-26"],
|
"remove_holidays": ["2020-12-25", "2020-11-26"],
|
||||||
|
"language": "en_US",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_REMOVE_NAMED = {
|
TEST_CONFIG_REMOVE_NAMED = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -159,6 +179,7 @@ TEST_CONFIG_REMOVE_NAMED = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": ["Not a Holiday", "Christmas", "Thanksgiving"],
|
"remove_holidays": ["Not a Holiday", "Christmas", "Thanksgiving"],
|
||||||
|
"language": "en_US",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_TOMORROW = {
|
TEST_CONFIG_TOMORROW = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -168,6 +189,7 @@ TEST_CONFIG_TOMORROW = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_DAY_AFTER_TOMORROW = {
|
TEST_CONFIG_DAY_AFTER_TOMORROW = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -177,6 +199,7 @@ TEST_CONFIG_DAY_AFTER_TOMORROW = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_YESTERDAY = {
|
TEST_CONFIG_YESTERDAY = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -186,6 +209,7 @@ TEST_CONFIG_YESTERDAY = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_INCORRECT_ADD_REMOVE = {
|
TEST_CONFIG_INCORRECT_ADD_REMOVE = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -196,6 +220,7 @@ TEST_CONFIG_INCORRECT_ADD_REMOVE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": ["2023-12-32"],
|
"add_holidays": ["2023-12-32"],
|
||||||
"remove_holidays": ["2023-12-32"],
|
"remove_holidays": ["2023-12-32"],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_INCORRECT_ADD_DATE_RANGE = {
|
TEST_CONFIG_INCORRECT_ADD_DATE_RANGE = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -206,6 +231,7 @@ TEST_CONFIG_INCORRECT_ADD_DATE_RANGE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": ["2023-12-01", "2023-12-30,2023-12-32"],
|
"add_holidays": ["2023-12-01", "2023-12-30,2023-12-32"],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_INCORRECT_REMOVE_DATE_RANGE = {
|
TEST_CONFIG_INCORRECT_REMOVE_DATE_RANGE = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -216,6 +242,7 @@ TEST_CONFIG_INCORRECT_REMOVE_DATE_RANGE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": ["2023-12-25", "2023-12-30,2023-12-32"],
|
"remove_holidays": ["2023-12-25", "2023-12-30,2023-12-32"],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_INCORRECT_ADD_DATE_RANGE_LEN = {
|
TEST_CONFIG_INCORRECT_ADD_DATE_RANGE_LEN = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -226,6 +253,7 @@ TEST_CONFIG_INCORRECT_ADD_DATE_RANGE_LEN = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": ["2023-12-01", "2023-12-29,2023-12-30,2023-12-31"],
|
"add_holidays": ["2023-12-01", "2023-12-29,2023-12-30,2023-12-31"],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_INCORRECT_REMOVE_DATE_RANGE_LEN = {
|
TEST_CONFIG_INCORRECT_REMOVE_DATE_RANGE_LEN = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -236,6 +264,7 @@ TEST_CONFIG_INCORRECT_REMOVE_DATE_RANGE_LEN = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": ["2023-12-25", "2023-12-29,2023-12-30,2023-12-31"],
|
"remove_holidays": ["2023-12-25", "2023-12-29,2023-12-30,2023-12-31"],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
TEST_CONFIG_ADD_REMOVE_DATE_RANGE = {
|
TEST_CONFIG_ADD_REMOVE_DATE_RANGE = {
|
||||||
"name": DEFAULT_NAME,
|
"name": DEFAULT_NAME,
|
||||||
@ -246,4 +275,5 @@ TEST_CONFIG_ADD_REMOVE_DATE_RANGE = {
|
|||||||
"workdays": DEFAULT_WORKDAYS,
|
"workdays": DEFAULT_WORKDAYS,
|
||||||
"add_holidays": ["2022-12-01", "2022-12-05,2022-12-15"],
|
"add_holidays": ["2022-12-01", "2022-12-05,2022-12-15"],
|
||||||
"remove_holidays": ["2022-12-04", "2022-12-24,2022-12-26"],
|
"remove_holidays": ["2022-12-04", "2022-12-24,2022-12-26"],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ from . import (
|
|||||||
TEST_CONFIG_INCORRECT_REMOVE_DATE_RANGE_LEN,
|
TEST_CONFIG_INCORRECT_REMOVE_DATE_RANGE_LEN,
|
||||||
TEST_CONFIG_NO_COUNTRY,
|
TEST_CONFIG_NO_COUNTRY,
|
||||||
TEST_CONFIG_NO_COUNTRY_ADD_HOLIDAY,
|
TEST_CONFIG_NO_COUNTRY_ADD_HOLIDAY,
|
||||||
|
TEST_CONFIG_NO_LANGUAGE_CONFIGURED,
|
||||||
TEST_CONFIG_NO_PROVINCE,
|
TEST_CONFIG_NO_PROVINCE,
|
||||||
TEST_CONFIG_NO_STATE,
|
TEST_CONFIG_NO_STATE,
|
||||||
TEST_CONFIG_REMOVE_HOLIDAY,
|
TEST_CONFIG_REMOVE_HOLIDAY,
|
||||||
@ -51,6 +52,7 @@ from . import (
|
|||||||
(TEST_CONFIG_TOMORROW, "off"),
|
(TEST_CONFIG_TOMORROW, "off"),
|
||||||
(TEST_CONFIG_DAY_AFTER_TOMORROW, "off"),
|
(TEST_CONFIG_DAY_AFTER_TOMORROW, "off"),
|
||||||
(TEST_CONFIG_YESTERDAY, "on"),
|
(TEST_CONFIG_YESTERDAY, "on"),
|
||||||
|
(TEST_CONFIG_NO_LANGUAGE_CONFIGURED, "off"),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
async def test_setup(
|
async def test_setup(
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
"""Test the Workday config flow."""
|
"""Test the Workday config flow."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
|
from freezegun.api import FrozenDateTimeFactory
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from homeassistant import config_entries
|
from homeassistant import config_entries
|
||||||
@ -16,9 +19,10 @@ from homeassistant.components.workday.const import (
|
|||||||
DEFAULT_WORKDAYS,
|
DEFAULT_WORKDAYS,
|
||||||
DOMAIN,
|
DOMAIN,
|
||||||
)
|
)
|
||||||
from homeassistant.const import CONF_NAME
|
from homeassistant.const import CONF_LANGUAGE, CONF_NAME
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.data_entry_flow import FlowResultType
|
from homeassistant.data_entry_flow import FlowResultType
|
||||||
|
from homeassistant.util.dt import UTC
|
||||||
|
|
||||||
from . import init_integration
|
from . import init_integration
|
||||||
|
|
||||||
@ -49,6 +53,7 @@ async def test_form(hass: HomeAssistant) -> None:
|
|||||||
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
||||||
CONF_ADD_HOLIDAYS: [],
|
CONF_ADD_HOLIDAYS: [],
|
||||||
CONF_REMOVE_HOLIDAYS: [],
|
CONF_REMOVE_HOLIDAYS: [],
|
||||||
|
CONF_LANGUAGE: "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
@ -63,6 +68,7 @@ async def test_form(hass: HomeAssistant) -> None:
|
|||||||
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -143,6 +149,7 @@ async def test_form_no_subdivision(hass: HomeAssistant) -> None:
|
|||||||
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "sv",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -159,6 +166,7 @@ async def test_options_form(hass: HomeAssistant) -> None:
|
|||||||
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -173,6 +181,7 @@ async def test_options_form(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -186,6 +195,7 @@ async def test_options_form(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -213,6 +223,7 @@ async def test_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
||||||
CONF_ADD_HOLIDAYS: ["2022-xx-12"],
|
CONF_ADD_HOLIDAYS: ["2022-xx-12"],
|
||||||
CONF_REMOVE_HOLIDAYS: [],
|
CONF_REMOVE_HOLIDAYS: [],
|
||||||
|
CONF_LANGUAGE: "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
@ -226,6 +237,7 @@ async def test_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
||||||
CONF_ADD_HOLIDAYS: ["2022-12-12"],
|
CONF_ADD_HOLIDAYS: ["2022-12-12"],
|
||||||
CONF_REMOVE_HOLIDAYS: ["Does not exist"],
|
CONF_REMOVE_HOLIDAYS: ["Does not exist"],
|
||||||
|
CONF_LANGUAGE: "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
@ -240,6 +252,7 @@ async def test_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
||||||
CONF_ADD_HOLIDAYS: ["2022-12-12"],
|
CONF_ADD_HOLIDAYS: ["2022-12-12"],
|
||||||
CONF_REMOVE_HOLIDAYS: ["Weihnachtstag"],
|
CONF_REMOVE_HOLIDAYS: ["Weihnachtstag"],
|
||||||
|
CONF_LANGUAGE: "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
@ -254,6 +267,7 @@ async def test_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
||||||
"add_holidays": ["2022-12-12"],
|
"add_holidays": ["2022-12-12"],
|
||||||
"remove_holidays": ["Weihnachtstag"],
|
"remove_holidays": ["Weihnachtstag"],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -270,6 +284,7 @@ async def test_options_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -284,6 +299,7 @@ async def test_options_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": ["2022-xx-12"],
|
"add_holidays": ["2022-xx-12"],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -298,6 +314,7 @@ async def test_options_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": ["2022-12-12"],
|
"add_holidays": ["2022-12-12"],
|
||||||
"remove_holidays": ["Does not exist"],
|
"remove_holidays": ["Does not exist"],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -312,6 +329,7 @@ async def test_options_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": ["2022-12-12"],
|
"add_holidays": ["2022-12-12"],
|
||||||
"remove_holidays": ["Weihnachtstag"],
|
"remove_holidays": ["Weihnachtstag"],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -325,6 +343,7 @@ async def test_options_form_incorrect_dates(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": ["2022-12-12"],
|
"add_holidays": ["2022-12-12"],
|
||||||
"remove_holidays": ["Weihnachtstag"],
|
"remove_holidays": ["Weihnachtstag"],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -401,6 +420,7 @@ async def test_form_incorrect_date_range(hass: HomeAssistant) -> None:
|
|||||||
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
||||||
CONF_ADD_HOLIDAYS: ["2022-12-12", "2022-12-30,2022-12-32"],
|
CONF_ADD_HOLIDAYS: ["2022-12-12", "2022-12-30,2022-12-32"],
|
||||||
CONF_REMOVE_HOLIDAYS: [],
|
CONF_REMOVE_HOLIDAYS: [],
|
||||||
|
CONF_LANGUAGE: "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
@ -414,6 +434,7 @@ async def test_form_incorrect_date_range(hass: HomeAssistant) -> None:
|
|||||||
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
||||||
CONF_ADD_HOLIDAYS: ["2022-12-12"],
|
CONF_ADD_HOLIDAYS: ["2022-12-12"],
|
||||||
CONF_REMOVE_HOLIDAYS: ["2022-12-25", "2022-12-30,2022-12-32"],
|
CONF_REMOVE_HOLIDAYS: ["2022-12-25", "2022-12-30,2022-12-32"],
|
||||||
|
CONF_LANGUAGE: "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
@ -428,6 +449,7 @@ async def test_form_incorrect_date_range(hass: HomeAssistant) -> None:
|
|||||||
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
||||||
CONF_ADD_HOLIDAYS: ["2022-12-12", "2022-12-01,2022-12-10"],
|
CONF_ADD_HOLIDAYS: ["2022-12-12", "2022-12-01,2022-12-10"],
|
||||||
CONF_REMOVE_HOLIDAYS: ["2022-12-25", "2022-12-30,2022-12-31"],
|
CONF_REMOVE_HOLIDAYS: ["2022-12-25", "2022-12-30,2022-12-31"],
|
||||||
|
CONF_LANGUAGE: "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
await hass.async_block_till_done()
|
await hass.async_block_till_done()
|
||||||
@ -442,6 +464,7 @@ async def test_form_incorrect_date_range(hass: HomeAssistant) -> None:
|
|||||||
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
||||||
"add_holidays": ["2022-12-12", "2022-12-01,2022-12-10"],
|
"add_holidays": ["2022-12-12", "2022-12-01,2022-12-10"],
|
||||||
"remove_holidays": ["2022-12-25", "2022-12-30,2022-12-31"],
|
"remove_holidays": ["2022-12-25", "2022-12-30,2022-12-31"],
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -458,6 +481,7 @@ async def test_options_form_incorrect_date_ranges(hass: HomeAssistant) -> None:
|
|||||||
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
||||||
"add_holidays": [],
|
"add_holidays": [],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -472,6 +496,7 @@ async def test_options_form_incorrect_date_ranges(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": ["2022-12-30,2022-12-32"],
|
"add_holidays": ["2022-12-30,2022-12-32"],
|
||||||
"remove_holidays": [],
|
"remove_holidays": [],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -486,6 +511,7 @@ async def test_options_form_incorrect_date_ranges(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": ["2022-12-30,2022-12-31"],
|
"add_holidays": ["2022-12-30,2022-12-31"],
|
||||||
"remove_holidays": ["2022-13-25,2022-12-26"],
|
"remove_holidays": ["2022-13-25,2022-12-26"],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -500,6 +526,7 @@ async def test_options_form_incorrect_date_ranges(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": ["2022-12-30,2022-12-31"],
|
"add_holidays": ["2022-12-30,2022-12-31"],
|
||||||
"remove_holidays": ["2022-12-25,2022-12-26"],
|
"remove_holidays": ["2022-12-25,2022-12-26"],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -513,4 +540,65 @@ async def test_options_form_incorrect_date_ranges(hass: HomeAssistant) -> None:
|
|||||||
"add_holidays": ["2022-12-30,2022-12-31"],
|
"add_holidays": ["2022-12-30,2022-12-31"],
|
||||||
"remove_holidays": ["2022-12-25,2022-12-26"],
|
"remove_holidays": ["2022-12-25,2022-12-26"],
|
||||||
"province": "BW",
|
"province": "BW",
|
||||||
|
"language": "de",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pytestmark = pytest.mark.usefixtures()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.parametrize(
|
||||||
|
("language", "holiday"),
|
||||||
|
[
|
||||||
|
("de", "Weihnachtstag"),
|
||||||
|
("en_US", "Christmas"),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
async def test_language(
|
||||||
|
hass: HomeAssistant, language: str, holiday: str, freezer: FrozenDateTimeFactory
|
||||||
|
) -> None:
|
||||||
|
"""Test we get the forms."""
|
||||||
|
freezer.move_to(datetime(2023, 12, 25, 12, tzinfo=UTC)) # Monday
|
||||||
|
|
||||||
|
result = await hass.config_entries.flow.async_init(
|
||||||
|
DOMAIN, context={"source": config_entries.SOURCE_USER}
|
||||||
|
)
|
||||||
|
assert result["type"] == FlowResultType.FORM
|
||||||
|
|
||||||
|
result2 = await hass.config_entries.flow.async_configure(
|
||||||
|
result["flow_id"],
|
||||||
|
{
|
||||||
|
CONF_NAME: "Workday Sensor",
|
||||||
|
CONF_COUNTRY: "DE",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
result3 = await hass.config_entries.flow.async_configure(
|
||||||
|
result2["flow_id"],
|
||||||
|
{
|
||||||
|
CONF_EXCLUDES: DEFAULT_EXCLUDES,
|
||||||
|
CONF_OFFSET: DEFAULT_OFFSET,
|
||||||
|
CONF_WORKDAYS: DEFAULT_WORKDAYS,
|
||||||
|
CONF_ADD_HOLIDAYS: [],
|
||||||
|
CONF_REMOVE_HOLIDAYS: [holiday],
|
||||||
|
CONF_LANGUAGE: language,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
assert result3["type"] == FlowResultType.CREATE_ENTRY
|
||||||
|
assert result3["title"] == "Workday Sensor"
|
||||||
|
assert result3["options"] == {
|
||||||
|
"name": "Workday Sensor",
|
||||||
|
"country": "DE",
|
||||||
|
"excludes": ["sat", "sun", "holiday"],
|
||||||
|
"days_offset": 0,
|
||||||
|
"workdays": ["mon", "tue", "wed", "thu", "fri"],
|
||||||
|
"add_holidays": [],
|
||||||
|
"remove_holidays": [holiday],
|
||||||
|
"language": language,
|
||||||
|
}
|
||||||
|
|
||||||
|
state = hass.states.get("binary_sensor.workday_sensor")
|
||||||
|
assert state is not None
|
||||||
|
assert state.state == "on"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user