UNPKG

matterbridge-roborock-vacuum-plugin

Version:
93 lines 5.66 kB
import { describe, expect, it } from 'vitest'; import { baseCleanModeConfigs, CleanModeDisplayLabel, CleanModeLabelInfo, getModeDisplayMap, getModeOptions, getModeSettingsMap, smartCleanModeConfigs, } from '../../../../behaviors/roborock.vacuum/core/cleanModeConfig/index.js'; import { CleanModeSetting } from '../../../../behaviors/roborock.vacuum/core/CleanModeSetting.js'; describe('cleanModeConfig', () => { describe('getModeDisplayMap', () => { it('should return a record mapping mode numbers to labels for base configs', () => { const map = getModeDisplayMap(baseCleanModeConfigs); expect(map[CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDefault].mode]).toBe(CleanModeDisplayLabel.VacuumAndMopDefault); expect(map[CleanModeLabelInfo[CleanModeDisplayLabel.VacuumDefault].mode]).toBe(CleanModeDisplayLabel.VacuumDefault); expect(map[CleanModeLabelInfo[CleanModeDisplayLabel.MopDefault].mode]).toBe(CleanModeDisplayLabel.MopDefault); }); it('should include VacFollowedByMop entry', () => { const map = getModeDisplayMap(smartCleanModeConfigs); expect(map[CleanModeLabelInfo[CleanModeDisplayLabel.VacFollowedByMop].mode]).toBe(CleanModeDisplayLabel.VacFollowedByMop); }); it('should include EnergySaving entry', () => { const map = getModeDisplayMap(baseCleanModeConfigs); expect(map[CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopEnergySaving].mode]).toBe(CleanModeDisplayLabel.VacuumAndMopEnergySaving); }); it('should include SmartPlan in smart configs', () => { const map = getModeDisplayMap(smartCleanModeConfigs); expect(map[CleanModeLabelInfo[CleanModeDisplayLabel.SmartPlan].mode]).toBe(CleanModeDisplayLabel.SmartPlan); }); }); describe('getModeSettingsMap', () => { it('should return a record mapping mode numbers to CleanModeSetting instances', () => { const map = getModeSettingsMap(baseCleanModeConfigs); const defaultMode = CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDefault].mode; const setting = map[defaultMode]; expect(setting).toBeInstanceOf(CleanModeSetting); expect(setting.hasFullSettings).toBe(true); }); it('should contain all base config entries', () => { const map = getModeSettingsMap(baseCleanModeConfigs); expect(Object.keys(map).length).toBe(baseCleanModeConfigs.length); }); it('should contain smart config entries including SmartPlan', () => { const map = getModeSettingsMap(smartCleanModeConfigs); const smartMode = CleanModeLabelInfo[CleanModeDisplayLabel.SmartPlan].mode; expect(map[smartMode]).toBeDefined(); expect(Object.keys(map).length).toBe(smartCleanModeConfigs.length); }); }); describe('getModeOptions', () => { it('should return array of ModeOptions with mode, label, and modeTags', () => { const options = getModeOptions(baseCleanModeConfigs); expect(options.length).toBe(baseCleanModeConfigs.length); const first = options[0]; expect(first).toHaveProperty('mode'); expect(first).toHaveProperty('label'); expect(first).toHaveProperty('modeTags'); expect(Array.isArray(first.modeTags)).toBe(true); }); it('should not include setting property in options', () => { const options = getModeOptions(baseCleanModeConfigs); const first = options[0]; expect('setting' in first).toBe(false); }); }); describe('CleanModeLabelInfo', () => { it('should have correct mode number for VacFollowedByMop', () => { expect(CleanModeLabelInfo[CleanModeDisplayLabel.VacFollowedByMop].mode).toBe(11); }); it('should have correct mode number for EnergySaving', () => { expect(CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopEnergySaving].mode).toBe(10); }); it('should have correct label for GoVacation', () => { expect(CleanModeLabelInfo[CleanModeDisplayLabel.GoVacation].label).toBe('Go Vacation'); expect(CleanModeLabelInfo[CleanModeDisplayLabel.GoVacation].mode).toBe(99); }); }); describe('baseCleanModeConfigs', () => { it('should have Persist sequenceType for standard modes', () => { const defaultMode = baseCleanModeConfigs.find((c) => c.mode === CleanModeLabelInfo[CleanModeDisplayLabel.VacuumAndMopDefault].mode); expect(defaultMode).toBeDefined(); expect(defaultMode?.setting.sequenceType).toBe(0); // CleanSequenceType.Persist }); }); describe('smartCleanModeConfigs', () => { it('should include SmartPlan as first entry', () => { expect(smartCleanModeConfigs[0].mode).toBe(CleanModeLabelInfo[CleanModeDisplayLabel.SmartPlan].mode); }); it('should include all base configs plus SmartPlan', () => { expect(smartCleanModeConfigs.length).toBe(baseCleanModeConfigs.length + 2); }); it('should contain VacFollowedByMop config with OneTime sequenceType', () => { const vacFollowedByMop = smartCleanModeConfigs.find((c) => c.mode === CleanModeLabelInfo[CleanModeDisplayLabel.VacFollowedByMop].mode); expect(vacFollowedByMop).toBeDefined(); expect(vacFollowedByMop?.setting.sequenceType).toBe(1); // CleanSequenceType.OneTime }); }); }); //# sourceMappingURL=cleanModeConfig.test.js.map