|
4 | 4 |
|
5 | 5 | import pytest |
6 | 6 |
|
| 7 | +from homeassistant.components.sensor import SensorDeviceClass |
| 8 | +from homeassistant.components.sensor.helpers import async_parse_date_datetime |
7 | 9 | from homeassistant.const import ( |
| 10 | + CONF_DEVICE_CLASS, |
8 | 11 | CONF_ICON, |
9 | 12 | CONF_NAME, |
10 | 13 | CONF_STATE, |
|
20 | 23 | CONF_AVAILABILITY, |
21 | 24 | CONF_PICTURE, |
22 | 25 | ManualTriggerEntity, |
| 26 | + ManualTriggerSensorEntity, |
23 | 27 | ValueTemplate, |
24 | 28 | ) |
25 | 29 |
|
@@ -288,3 +292,38 @@ def some_other_key(self) -> dict[str, Any] | None: |
288 | 292 | await hass.async_block_till_done() |
289 | 293 |
|
290 | 294 | assert entity.some_other_key == {"test_key": "test_data"} |
| 295 | + |
| 296 | + |
| 297 | +async def test_manual_trigger_sensor_entity_with_date( |
| 298 | + hass: HomeAssistant, caplog: pytest.LogCaptureFixture |
| 299 | +) -> None: |
| 300 | + """Test manual trigger template entity when availability template isn't used.""" |
| 301 | + config = { |
| 302 | + CONF_NAME: template.Template("test_entity", hass), |
| 303 | + CONF_STATE: template.Template("{{ as_datetime(value) }}", hass), |
| 304 | + CONF_DEVICE_CLASS: SensorDeviceClass.TIMESTAMP, |
| 305 | + } |
| 306 | + |
| 307 | + class TestEntity(ManualTriggerSensorEntity): |
| 308 | + """Test entity class.""" |
| 309 | + |
| 310 | + extra_template_keys = (CONF_STATE,) |
| 311 | + |
| 312 | + @property |
| 313 | + def state(self) -> bool | None: |
| 314 | + """Return extra attributes.""" |
| 315 | + return "2025-01-01T00:00:00+00:00" |
| 316 | + |
| 317 | + entity = TestEntity(hass, config) |
| 318 | + entity.entity_id = "test.entity" |
| 319 | + variables = entity._template_variables_with_value("2025-01-01T00:00:00+00:00") |
| 320 | + assert entity._render_availability_template(variables) is True |
| 321 | + assert entity.available is True |
| 322 | + entity._set_native_value_with_possible_timestamp(entity.state) |
| 323 | + await hass.async_block_till_done() |
| 324 | + |
| 325 | + assert entity.native_value == async_parse_date_datetime( |
| 326 | + "2025-01-01T00:00:00+00:00", entity.entity_id, entity.device_class |
| 327 | + ) |
| 328 | + assert entity.state == "2025-01-01T00:00:00+00:00" |
| 329 | + assert entity.device_class == SensorDeviceClass.TIMESTAMP |
0 commit comments