From 57df8eafacc4a465d576ddc1fe83330e80fed39f Mon Sep 17 00:00:00 2001 From: Max Chodorowski Date: Fri, 29 Dec 2023 17:31:41 +0000 Subject: [PATCH] Allow to use entities from all domains in KString --- src/rich-string-processor.ts | 29 ++++++++++++++++++- .../entity-fields/get-secondary-info.test.ts | 4 +-- test/other/rich-string-processor.test.ts | 13 +++++---- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/src/rich-string-processor.ts b/src/rich-string-processor.ts index cfac250..836e03c 100644 --- a/src/rich-string-processor.ts +++ b/src/rich-string-processor.ts @@ -1,7 +1,34 @@ import { HomeAssistant } from "custom-card-helpers"; import { log } from "./utils"; -const validEntityDomains = ["sensor", "binary_sensor"]; +const validEntityDomains = [ + "automation", + "binary_sensor", + "button", + "calendar", + "camera", + "climate", + "device_tracker", + "group", + "input_boolean", + "input_datetime", + "input_number", + "input_select", + "input_text", + "light", + "media_player", + "number", + "person", + "remote", + "scene", + "script", + "select", + "sensor", + "switch", + "update", + "weather", + "zone", +]; /** * Class for processing keyword strings diff --git a/test/other/entity-fields/get-secondary-info.test.ts b/test/other/entity-fields/get-secondary-info.test.ts index 4952e96..6b99099 100644 --- a/test/other/entity-fields/get-secondary-info.test.ts +++ b/test/other/entity-fields/get-secondary-info.test.ts @@ -5,11 +5,11 @@ describe("Secondary info", () => { test("Unsupported entity domain", () => { const hassMock = new HomeAssistantMock(true); - const entity = hassMock.addEntity("Motion sensor kitchen", "50", {}, "device_tracker"); + const entity = hassMock.addEntity("Motion sensor kitchen", "50", {}, "water"); const secondaryInfoConfig = "{" + entity.entity_id + "}"; const result = getSecondaryInfo({ entity: "any", secondary_info: secondaryInfoConfig }, hassMock.hass, false); - expect(result).toBe("{device_tracker.motion_sensor_kitchen}"); + expect(result).toBe("{water.motion_sensor_kitchen}"); }) test("Other entity state (number)", () => { diff --git a/test/other/rich-string-processor.test.ts b/test/other/rich-string-processor.test.ts index bb40066..b29aa01 100644 --- a/test/other/rich-string-processor.test.ts +++ b/test/other/rich-string-processor.test.ts @@ -20,14 +20,15 @@ describe("RichStringProcessor", () => { }) test.each([ - ["Value {state}, {last_updated}", "Value 20.56, 2021-04-05 15:11:35"], // few placeholders - ["Value {state}, {attributes.charging_state}", "Value 20.56, Charging"], // attribute value - ["Value {state}, {sensor.kitchen_switch.state}", "Value 20.56, 55"], // external entity state - ["Value {state}, {sensor.kitchen_switch.attributes.charging_state}", "Value 20.56, Fully charged"], // external entity attribute value - ])("replaces placeholders", (text: string, expectedResult: string) => { + // ["Value {state}, {last_updated}", "Value 20.56, 2021-04-05 15:11:35"], // few placeholders + // ["Value {state}, {attributes.charging_state}", "Value 20.56, Charging"], // attribute value + // ["Value {state}, {sensor.kitchen_switch.state}", "Value 20.56, 55"], // external entity state + // ["Value {state}, {sensor.kitchen_switch.attributes.charging_state}", "Value 20.56, Fully charged"], // external entity attribute value + ["Value {state}, {device_tracker.kitchen_switch.state}", "Value 20.56, 55", "device_tracker"], // external entity state + ])("replaces placeholders", (text: string, expectedResult: string, otherEntityDomain = "sensor") => { const hassMock = new HomeAssistantMock(true); const motionEntity = hassMock.addEntity("Bedroom motion", "20.56", { charging_state: "Charging" }, "sensor"); - const switchEntity = hassMock.addEntity("Kitchen switch", "55", { charging_state: "Fully charged" }, "sensor"); + const switchEntity = hassMock.addEntity("Kitchen switch", "55", { charging_state: "Fully charged" }, otherEntityDomain); motionEntity.setLastUpdated("2021-04-05 15:11:35"); const proc = new RichStringProcessor(hassMock.hass, motionEntity.entity_id);