@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
67 lines (60 loc) • 2.49 kB
text/typescript
import { App, AppType } from "@ledgerhq/types-live";
import { getDependencies, calculateDependencies } from "./polyfill";
calculateDependencies();
const baseSampleApp: App = {
id: 1,
name: "Dogecoin",
displayName: "Dogecoin",
version: "2.0.6",
currencyId: "",
description: "",
type: AppType.currency,
dateModified: "2022-06-07T08:57:34.783551Z",
icon: "dogecoin",
authorName: "",
supportURL: "",
contactURL: "",
sourceURL: "",
perso: "perso_11",
hash: "6298b2dc4b04d7aa4ddfeec2d98502c871f243af273463c5489ca89d4f2cf0ef",
firmware: "nanos+/1.0.3-rc1/dogecoin/app_2.0.6",
firmware_key: "nanos+/1.0.3-rc1/dogecoin/app_2.0.6_key",
delete: "nanos+/1.0.3-rc1/dogecoin/app_2.0.6_del",
delete_key: "nanos+/1.0.3-rc1/dogecoin/app_2.0.6_del_key",
dependencies: [],
bytes: 528,
warning: "",
indexOfMarketCap: 0,
isDevTools: false,
};
describe("Dependency resolution for standalone currency apps", () => {
test("Dogecoin 2.0.6 should have Bitcoin as dependency", () => {
const app: App = { ...baseSampleApp };
expect(getDependencies(app.name, app.version)).toEqual(["Bitcoin"]);
});
test("Dogecoin 2.0.6-rc1 should have Bitcoin as dependency", () => {
const app: App = { ...baseSampleApp, version: "2.0.6-rc1" };
expect(getDependencies(app.name, app.version)).toEqual(["Bitcoin"]);
});
test("Dogecoin 2.1.0 or greater should have no dependency", () => {
const app: App = { ...baseSampleApp, version: "2.1.0" };
expect(getDependencies(app.name, app.version)).toEqual([]);
});
test("Dogecoin 2.1.0-rc1 or greater should have no dependency", () => {
const app: App = { ...baseSampleApp, version: "2.1.0-rc1" };
expect(getDependencies(app.name, app.version)).toEqual([]);
});
});
describe("Backwards compatibility, when not providing an app version", () => {
test("Dogecoin should have Bitcoin as dependency", () => {
const app: App = { ...baseSampleApp };
expect(getDependencies(app.name, undefined)).toEqual(["Bitcoin"]);
});
test("Polygon should have Ethereum as dependency, even when providing a version", () => {
// If this one is failing it means we've implemented a standalone polygon or a
// version exemption like for Bitcoin, in that case we can drop this test.
const app: App = { ...baseSampleApp, name: "Polygon" };
expect(getDependencies(app.name, undefined)).toEqual(["Ethereum"]);
expect(getDependencies(app.name, "4.3.2")).toEqual(["Ethereum"]);
});
});