inventoresed
Version:
Z-Wave driver written entirely in JavaScript/TypeScript
94 lines (77 loc) • 2.42 kB
text/typescript
import fsExtra from "fs-extra";
import { ConfigManager } from "./ConfigManager";
jest.mock("fs-extra");
const readFileMock = fsExtra.readFile as jest.Mock;
const pathExistsMock = fsExtra.pathExists as jest.Mock;
describe("lib/config/Manufacturers", () => {
describe("lookupManufacturer (with missing file)", () => {
let configManager: ConfigManager;
beforeAll(
async () => {
pathExistsMock.mockClear();
readFileMock.mockClear();
pathExistsMock.mockResolvedValue(false);
readFileMock.mockRejectedValue(
new Error("File does not exist"),
);
configManager = new ConfigManager();
await configManager.loadManufacturers();
},
// Loading configuration may take a while on CI
30000,
);
it("does not throw", () => {
expect(() => configManager.lookupManufacturer(0)).not.toThrow();
});
it("returns undefined", async () => {
expect(configManager.lookupManufacturer(0x0e)).toBeUndefined();
expect(configManager.lookupManufacturer(0xff)).toBeUndefined();
});
});
describe("lookupManufacturer (with invalid file)", () => {
let configManager: ConfigManager;
beforeAll(
async () => {
pathExistsMock.mockClear();
readFileMock.mockClear();
pathExistsMock.mockResolvedValue(true);
readFileMock.mockResolvedValue(`{"0x000e": `);
configManager = new ConfigManager();
await configManager.loadManufacturers();
},
// Loading configuration may take a while on CI
30000,
);
it("does not throw", () => {
expect(() => configManager.lookupManufacturer(0x0e)).not.toThrow();
});
it("returns undefined", () => {
expect(configManager.lookupManufacturer(0x0e)).toBeUndefined();
});
});
describe("lookupManufacturer()", () => {
let configManager: ConfigManager;
beforeAll(
async () => {
pathExistsMock.mockResolvedValue(true);
readFileMock.mockResolvedValue(
JSON.stringify({
"0x000e": "Test",
}),
);
configManager = new ConfigManager();
await configManager.loadManufacturers();
},
// Loading configuration may take a while on CI
30000,
);
beforeEach(() => {
readFileMock.mockClear();
pathExistsMock.mockClear();
});
it("returns the name belonging to the manufacturer ID if it is defined", () => {
expect(configManager.lookupManufacturer(0x0e)).toBe("Test");
expect(configManager.lookupManufacturer(0xff)).toBeUndefined();
});
});
});