UNPKG

iobroker.roborock

Version:
72 lines (63 loc) 2.83 kB
import { describe, expect, it, vi } from "vitest"; import { BaseDeviceFeatures, type FeatureDependencies } from "../baseDeviceFeatures"; import { Feature } from "../features.enum"; import "./index"; describe("registered vacuum model features", () => { function createHarness() { const requestsHandlerMock = { sendRequest: vi.fn().mockResolvedValue({}), command: vi.fn().mockResolvedValue(undefined), mapParser: { parsedata: vi.fn().mockResolvedValue({}) }, mapCreator: { canvasMap: vi.fn().mockResolvedValue(["", "", ""]) } }; const adapterMock = { namespace: "roborock.0", log: { info: vi.fn(), error: vi.fn(), warn: vi.fn(), debug: vi.fn(), silly: vi.fn() }, setStateChanged: vi.fn().mockResolvedValue(undefined), setState: vi.fn(), ensureState: vi.fn().mockResolvedValue(undefined), ensureFolder: vi.fn().mockResolvedValue(undefined), getStateAsync: vi.fn().mockResolvedValue(undefined), getStatesAsync: vi.fn().mockResolvedValue({}), getObjectAsync: vi.fn().mockResolvedValue(undefined), extendObject: vi.fn().mockResolvedValue(undefined), setObject: vi.fn().mockResolvedValue(undefined), setObjectNotExistsAsync: vi.fn().mockResolvedValue(undefined), requestsHandler: requestsHandlerMock, getDeviceProtocolVersion: vi.fn().mockResolvedValue("1.0"), translations: {}, http_api: { getFwFeaturesResult: vi.fn(), storeFwFeaturesResult: vi.fn(), getRobotModel: vi.fn().mockReturnValue("roborock.vacuum.a87"), getDevices: vi.fn().mockReturnValue([]) }, rLog: vi.fn(), translationManager: { get: vi.fn().mockImplementation((key, def) => def || key) }, errorMessage: (error: unknown) => error instanceof Error ? error.message : String(error) }; const dependencies = { adapter: adapterMock, http_api: adapterMock.http_api, ensureState: vi.fn().mockResolvedValue(undefined), ensureFolder: vi.fn().mockResolvedValue(undefined), log: adapterMock.log, config: { staticFeatures: [] } } as unknown as FeatureDependencies; return { adapterMock, dependencies }; } it("exposes the verified Qrevo MaxV dust collection command through the model registry", async () => { const ModelClass = BaseDeviceFeatures.getRegisteredModelClass("roborock.vacuum.a87"); expect(ModelClass).toBeDefined(); if (!ModelClass) throw new Error("roborock.vacuum.a87 is not registered"); const { dependencies } = createHarness(); const vacuum = new ModelClass(dependencies, "duid1"); await vacuum.initialize(); expect(vacuum.hasStaticFeature(Feature.AutoEmptyDock)).toBe(true); expect(vacuum.commands).toHaveProperty("app_start_collect_dust"); expect(vacuum.commands).not.toHaveProperty("app_start_dust_collection"); await expect(vacuum.getCommandParams("app_start_collect_dust")).resolves.toEqual([]); }); });