mirror of
https://github.com/home-assistant/frontend.git
synced 2026-08-27 08:32:03 +01:00
* Don't present toggle as a ui_action option for untoggleable entities * Fix climate enums * unmemoize * fix test * Add button/valve to canToggleDomain
93 lines
2.2 KiB
TypeScript
93 lines
2.2 KiB
TypeScript
import { assert, describe, it } from "vitest";
|
|
|
|
import { canToggleState } from "../../../src/common/entity/can_toggle_state";
|
|
import { ClimateEntityFeature } from "../../../src/data/climate";
|
|
|
|
describe("canToggleState", () => {
|
|
const hass: any = {
|
|
services: {
|
|
light: {
|
|
turn_on: null, // Service keys only need to be present for test
|
|
turn_off: null,
|
|
},
|
|
},
|
|
states: {
|
|
"light.bla": { entity_id: "light.bla" },
|
|
"light.test": { entity_id: "light.test" },
|
|
},
|
|
};
|
|
|
|
it("Detects lights toggle", () => {
|
|
const stateObj: any = {
|
|
entity_id: "light.bla",
|
|
state: "on",
|
|
};
|
|
assert.isTrue(canToggleState(hass, stateObj));
|
|
});
|
|
|
|
it("Detects group with toggle", () => {
|
|
const stateObj: any = {
|
|
entity_id: "group.bla",
|
|
state: "on",
|
|
attributes: {
|
|
entity_id: ["light.bla", "light.test"],
|
|
},
|
|
};
|
|
|
|
assert.isTrue(canToggleState(hass, stateObj));
|
|
});
|
|
|
|
it("Detects group without toggle", () => {
|
|
const stateObj: any = {
|
|
entity_id: "group.devices",
|
|
state: "home",
|
|
};
|
|
assert.isFalse(canToggleState(hass, stateObj));
|
|
});
|
|
|
|
it("Detects climate with toggle", () => {
|
|
const stateObj: any = {
|
|
entity_id: "climate.bla",
|
|
attributes: {
|
|
supported_features:
|
|
ClimateEntityFeature.TURN_ON + ClimateEntityFeature.TURN_OFF,
|
|
},
|
|
};
|
|
assert.isTrue(canToggleState(hass, stateObj));
|
|
});
|
|
|
|
it("Detects climate without toggle", () => {
|
|
const stateObj: any = {
|
|
entity_id: "climate.bla",
|
|
attributes: {
|
|
supported_features: 0,
|
|
},
|
|
};
|
|
assert.isFalse(canToggleState(hass, stateObj));
|
|
});
|
|
|
|
it("Detects group with missing entity", () => {
|
|
const stateObj: any = {
|
|
entity_id: "group.bla",
|
|
state: "on",
|
|
attributes: {
|
|
entity_id: ["light.non_existing"],
|
|
},
|
|
};
|
|
|
|
assert.isFalse(canToggleState(hass, stateObj));
|
|
});
|
|
|
|
it("Detects group with off state", () => {
|
|
const stateObj: any = {
|
|
entity_id: "group.bla",
|
|
state: "off",
|
|
attributes: {
|
|
entity_id: ["light.test"],
|
|
},
|
|
};
|
|
|
|
assert.isTrue(canToggleState(hass, stateObj));
|
|
});
|
|
});
|