@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
116 lines • 5.29 kB
JavaScript
import { DeviceModelId } from "@ledgerhq/types-devices";
import { getIgnoredOSUpdatesForDeviceModelAndPlatform } from "./getIgnoredOSUpdatesForDeviceModelAndPlatform";
describe("getIgnoredOSUpdatesForDeviceModelAndPlatform", () => {
const mockConfig = {
ios: {
[DeviceModelId.nanoS]: ["1.6.0", "1.6.1"],
[DeviceModelId.nanoX]: ["2.0.0"],
[DeviceModelId.nanoSP]: ["1.0.0", "1.0.1", "1.0.2"],
},
android: {
[DeviceModelId.nanoS]: ["1.5.0"],
[DeviceModelId.nanoX]: ["2.1.0", "2.1.1"],
},
macos: {
[DeviceModelId.nanoX]: ["2.2.0"],
},
windows: {
[DeviceModelId.stax]: ["3.0.0"],
},
linux: {
[DeviceModelId.europa]: ["4.0.0", "4.0.1"],
},
};
describe("when config is undefined", () => {
it("should return empty array", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(undefined, DeviceModelId.nanoS, "ios");
expect(result).toEqual([]);
});
});
describe("when config is null", () => {
it("should return empty array", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(null, DeviceModelId.nanoS, "ios");
expect(result).toEqual([]);
});
});
describe("when platform does not exist in config", () => {
it("should return empty array", () => {
const configWithoutPlatform = {
ios: { [DeviceModelId.nanoS]: ["1.6.0"] },
};
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(configWithoutPlatform, DeviceModelId.nanoS, "android");
expect(result).toEqual([]);
});
});
describe("when device model does not exist for platform", () => {
it("should return empty array", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(mockConfig, DeviceModelId.stax, "ios");
expect(result).toEqual([]);
});
});
describe("when device model exists but has no ignored updates", () => {
it("should return empty array", () => {
const configWithEmptyArray = {
ios: {
[DeviceModelId.nanoS]: [],
},
};
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(configWithEmptyArray, DeviceModelId.nanoS, "ios");
expect(result).toEqual([]);
});
});
describe("when device model exists and has ignored updates", () => {
it("should return the ignored updates for iOS", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(mockConfig, DeviceModelId.nanoS, "ios");
expect(result).toEqual(["1.6.0", "1.6.1"]);
});
it("should return the ignored updates for Android", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(mockConfig, DeviceModelId.nanoX, "android");
expect(result).toEqual(["2.1.0", "2.1.1"]);
});
it("should return multiple ignored updates", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(mockConfig, DeviceModelId.nanoSP, "ios");
expect(result).toEqual(["1.0.0", "1.0.1", "1.0.2"]);
});
it("should return ignored updates for macOS", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(mockConfig, DeviceModelId.nanoX, "macos");
expect(result).toEqual(["2.2.0"]);
});
it("should return ignored updates for Windows", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(mockConfig, DeviceModelId.stax, "windows");
expect(result).toEqual(["3.0.0"]);
});
it("should return ignored updates for Linux", () => {
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(mockConfig, DeviceModelId.europa, "linux");
expect(result).toEqual(["4.0.0", "4.0.1"]);
});
});
describe("edge cases", () => {
it("should handle empty config object", () => {
const emptyConfig = {};
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(emptyConfig, DeviceModelId.nanoS, "ios");
expect(result).toEqual([]);
});
it("should handle config with empty platform objects", () => {
const configWithEmptyPlatforms = {
ios: {},
android: {},
macos: {},
windows: {},
linux: {},
};
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(configWithEmptyPlatforms, DeviceModelId.nanoS, "ios");
expect(result).toEqual([]);
});
it("should handle undefined device model entries", () => {
const configWithUndefined = {
ios: {
[DeviceModelId.nanoS]: undefined,
},
};
const result = getIgnoredOSUpdatesForDeviceModelAndPlatform(configWithUndefined, DeviceModelId.nanoS, "ios");
expect(result).toEqual([]);
});
});
});
//# sourceMappingURL=getIgnoredOSUpdatesForDeviceModelAndPlatform.test.js.map