fix: Assume conditions are state conditions unless otherwise specified (#1552)

This commit is contained in:
Dermot Duffy
2024-09-21 13:41:13 -07:00
committed by GitHub
parent 15d33f63fb
commit e5cbfa9976
3 changed files with 66 additions and 26 deletions
@@ -457,20 +457,37 @@ describe('ConditionsManager', () => {
expect(manager.hasHAStateConditions()).toBeFalsy();
});
it('with HA state conditions', () => {
const api = createCardAPI();
const numericConfig = createSuitableConfig([
{
condition: 'state' as const,
entity: 'binary_sensor.foo',
state: 'on',
},
]);
vi.mocked(api.getConfigManager().getConfig).mockReturnValue(numericConfig);
const manager = new ConditionsManager(api);
manager.setConditionsFromConfig();
describe('with HA state conditions', () => {
it('explicitly stated', () => {
const api = createCardAPI();
const numericConfig = createSuitableConfig([
{
condition: 'state' as const,
entity: 'binary_sensor.foo',
state: 'on',
},
]);
vi.mocked(api.getConfigManager().getConfig).mockReturnValue(numericConfig);
const manager = new ConditionsManager(api);
manager.setConditionsFromConfig();
expect(manager.hasHAStateConditions()).toBeTruthy();
expect(manager.hasHAStateConditions()).toBeTruthy();
});
it('implicitly assumed', () => {
const api = createCardAPI();
const numericConfig = createSuitableConfig([
{
entity: 'binary_sensor.foo',
state: 'on',
},
]);
vi.mocked(api.getConfigManager().getConfig).mockReturnValue(numericConfig);
const manager = new ConditionsManager(api);
manager.setConditionsFromConfig();
expect(manager.hasHAStateConditions()).toBeTruthy();
});
});
it('with HA numeric_state conditions', () => {
@@ -657,6 +674,23 @@ describe('ConditionsManager', () => {
});
expect(manager.evaluateConditions(conditions)).toBeTruthy();
});
it('implicit state condition', () => {
const manager = new ConditionsManager(createCardAPI());
const conditions = [
{
entity: 'binary_sensor.foo',
state: 'on',
},
];
expect(manager.evaluateConditions(conditions)).toBeFalsy();
manager.setState({ state: { 'binary_sensor.foo': createStateEntity() } });
expect(manager.evaluateConditions(conditions)).toBeTruthy();
manager.setState({
state: { 'binary_sensor.foo': createStateEntity({ state: 'off' }) },
});
expect(manager.evaluateConditions(conditions)).toBeFalsy();
});
});
describe('with numeric state condition', () => {