@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
322 lines • 16.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
/**
* @jest-environment jsdom
*/
const react_1 = require("@testing-library/react");
const useModularDrawerVisibility_1 = require("../useModularDrawerVisibility");
const enums_1 = require("../enums");
const mock_1 = require("../../featureFlags/mock");
describe("useModularDrawerVisibility", () => {
describe("lldModularDrawer", () => {
it("should return false if the feature flag is not enabled", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: false,
params: { [enums_1.ModularDrawerLocation.ADD_ACCOUNT]: true },
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({ location: enums_1.ModularDrawerLocation.ADD_ACCOUNT })).toBe(false);
});
it("should return false if the location param is not set", () => {
const mockedFeatures = {
lldModularDrawer: { enabled: true, params: {} },
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({ location: enums_1.ModularDrawerLocation.ADD_ACCOUNT })).toBe(false);
});
it("should return the correct visibility for each location", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.ADD_ACCOUNT]: true,
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({ location: enums_1.ModularDrawerLocation.ADD_ACCOUNT })).toBe(true);
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "earn",
})).toBe(false);
});
});
describe("llmModularDrawer", () => {
it("should return false if the feature flag is not enabled", () => {
const mockedFeatures = {
llmModularDrawer: {
enabled: false,
params: { [enums_1.ModularDrawerLocation.ADD_ACCOUNT]: true },
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "llmModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({ location: enums_1.ModularDrawerLocation.ADD_ACCOUNT })).toBe(false);
});
it("should return false if the location param is not set", () => {
const mockedFeatures = {
llmModularDrawer: { enabled: true, params: {} },
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "llmModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({ location: enums_1.ModularDrawerLocation.ADD_ACCOUNT })).toBe(false);
});
it("should return the correct visibility for each location", () => {
const mockedFeatures = {
llmModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.ADD_ACCOUNT]: false,
[enums_1.ModularDrawerLocation.RECEIVE_FLOW]: true,
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "llmModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({ location: enums_1.ModularDrawerLocation.ADD_ACCOUNT })).toBe(false);
expect(result.current.isModularDrawerVisible({ location: enums_1.ModularDrawerLocation.RECEIVE_FLOW })).toBe(true);
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "earn",
})).toBe(false);
expect(result.current.isModularDrawerVisible({ location: enums_1.ModularDrawerLocation.SEND_FLOW })).toBe(false);
});
});
describe("Live app whitelist and blacklist logic", () => {
describe("lldModularDrawer", () => {
it("should return false if live_app location is not enabled", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: false,
live_apps_allowlist: ["earn"],
live_apps_blocklist: [],
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "earn",
})).toBe(false);
});
it("should return true for whitelisted apps when whitelist is provided", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: true,
live_apps_allowlist: ["earn", "swap"],
live_apps_blocklist: [],
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "earn",
})).toBe(true);
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "swap",
})).toBe(true);
});
it("should return false for non-whitelisted apps when whitelist is provided", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: true,
live_apps_allowlist: ["earn"],
live_apps_blocklist: [],
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "swap",
})).toBe(false);
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "unknown-app",
})).toBe(false);
});
it("should return false for blacklisted apps", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: true,
live_apps_allowlist: [],
live_apps_blocklist: ["blocked-app", "another-blocked-app"],
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "blocked-app",
})).toBe(false);
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "another-blocked-app",
})).toBe(false);
});
it("should return true for non-blacklisted apps when no whitelist is provided", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: true,
live_apps_allowlist: [],
live_apps_blocklist: ["blocked-app"],
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "allowed-app",
})).toBe(true);
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "earn",
})).toBe(true);
});
it("should prioritize blacklist over whitelist", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: true,
live_apps_allowlist: ["earn", "swap"],
live_apps_blocklist: ["swap"],
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "earn",
})).toBe(true);
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "swap",
})).toBe(false);
});
it("should handle missing whitelist and blacklist arrays", () => {
const mockedFeatures = {
lldModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: true,
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "lldModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "any-app",
})).toBe(true);
});
});
describe("llmModularDrawer", () => {
it("should return true for whitelisted apps", () => {
const mockedFeatures = {
llmModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: true,
live_apps_allowlist: ["earn", "swap"],
live_apps_blocklist: [],
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "llmModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "earn",
})).toBe(true);
});
it("should return false for blacklisted apps even if whitelisted", () => {
const mockedFeatures = {
llmModularDrawer: {
enabled: true,
params: {
[enums_1.ModularDrawerLocation.LIVE_APP]: true,
live_apps_allowlist: ["earn", "swap"],
live_apps_blocklist: ["swap"],
},
},
};
const { result } = (0, react_1.renderHook)(() => (0, useModularDrawerVisibility_1.useModularDrawerVisibility)({
modularDrawerFeatureFlagKey: "llmModularDrawer",
}), {
wrapper: (0, mock_1.makeMockedFeatureFlagsProviderWrapper)((0, mock_1.makeMockedContextValue)(mockedFeatures)),
});
expect(result.current.isModularDrawerVisible({
location: enums_1.ModularDrawerLocation.LIVE_APP,
liveAppId: "swap",
})).toBe(false);
});
});
});
});
//# sourceMappingURL=useModularDrawerVisibility.test.js.map