matterbridge-roborock-vacuum-plugin
Version:
Matterbridge Roborock Vacuum Plugin
45 lines • 3.38 kB
JavaScript
import { describe, expect, it } from 'vitest';
import { baseCleanModeConfigs, CleanModeDisplayLabel, CleanModeLabelInfo, } from '../../../../behaviors/roborock.vacuum/core/cleanModeConfig/index.js';
import { CleanModeSetting } from '../../../../behaviors/roborock.vacuum/core/CleanModeSetting.js';
import { createDefaultModeResolver } from '../../../../behaviors/roborock.vacuum/core/modeResolver.js';
import { CleanSequenceType } from '../../../../behaviors/roborock.vacuum/enums/CleanSequenceType.js';
import { MopRoute, MopWaterFlow, VacuumSuctionPower } from '../../../../behaviors/roborock.vacuum/enums/index.js';
import { asType } from '../../../testUtils.js';
const defaultModeResolver = createDefaultModeResolver(baseCleanModeConfigs);
describe('runtimes.getCurrentCleanModeDefault', () => {
it('returns 10 when any value is Custom', () => {
const s = new CleanModeSetting(VacuumSuctionPower.Custom, MopWaterFlow.Off, 0, MopRoute.Standard, CleanSequenceType.Persist);
expect(defaultModeResolver.resolve(s)).toBe(CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopEnergySaving].mode);
});
it('matches exact preset from CleanSetting', () => {
// Use a known mapping from CleanSetting: mode 5 exists as default Vac & Mop
const s = new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Medium, 0, MopRoute.Standard, CleanSequenceType.Persist);
const res = defaultModeResolver.resolve(s);
// should be a number (one of the preset keys)
expect(typeof res).toBe('number');
});
it('returns 31 for mop default', () => {
const s = new CleanModeSetting(VacuumSuctionPower.Off, MopWaterFlow.Medium, 0, MopRoute.Standard, CleanSequenceType.Persist);
expect(defaultModeResolver.resolve(s)).toBe(CleanModeLabelInfo[CleanModeDisplayLabel.MopDefault].mode);
});
it('returns 66 for vacuum default', () => {
const s = new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Off, 0, MopRoute.Standard, CleanSequenceType.Persist);
expect(defaultModeResolver.resolve(s)).toBe(CleanModeLabelInfo[CleanModeDisplayLabel.VacuumDefault].mode);
});
it('returns 5 for vac & mop default when both on', () => {
const s = new CleanModeSetting(VacuumSuctionPower.Balanced, MopWaterFlow.Medium, 0, MopRoute.Standard, CleanSequenceType.Persist);
expect(defaultModeResolver.resolve(s)).toBe(CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDefault].mode);
});
it('returns undefined for completely invalid input', () => {
expect(defaultModeResolver.resolve(asType(undefined))).toBeUndefined();
expect(defaultModeResolver.resolve(asType(null))).toBeUndefined();
expect(defaultModeResolver.resolve(asType(123))).toBeUndefined();
expect(defaultModeResolver.resolve(asType('bad'))).toBeUndefined();
});
it('returns 5 if no CleanSetting match and not covered by other rules', () => {
// Use values that do not match any CleanSetting and do not trigger custom/off/other rules
const s = new CleanModeSetting(999, 888, 0, 777, CleanSequenceType.Persist);
expect(defaultModeResolver.resolve(s)).toBe(CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDefault].mode); // because none are Off, should return MopAndVacuumCustom mode
});
});
//# sourceMappingURL=runtimes.test.js.map