@ledgerhq/live-common
Version:
Common ground for the Ledger Live apps
148 lines • 7.04 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const types_devices_1 = require("@ledgerhq/types-devices");
const shouldRedirectToPostOnboardingOrRecoverUpsell_1 = require("./shouldRedirectToPostOnboardingOrRecoverUpsell");
// This static array is enough to cover all cases as for each test case we have a scenario with Nano S (which is not in that array).
const mockedSupportedDeviceModels = [
types_devices_1.DeviceModelId.nanoSP,
types_devices_1.DeviceModelId.nanoX,
types_devices_1.DeviceModelId.stax,
types_devices_1.DeviceModelId.europa,
];
function testScenarios(scenarios) {
it.each(scenarios)("should return $expected for $device and upsell for touch screen devices", ({ device, hasBeenUpsoldRecover, hasRedirectedToPostOnboarding, expected }) => {
const result = (0, shouldRedirectToPostOnboardingOrRecoverUpsell_1.shouldRedirectToPostOnboardingOrRecoverUpsell)({
lastConnectedDevice: device,
hasBeenUpsoldRecover,
hasRedirectedToPostOnboarding,
supportedDeviceModels: mockedSupportedDeviceModels,
});
expect([result.shouldRedirectToPostOnboarding, result.shouldRedirectToRecoverUpsell].filter(Boolean).length).toBeLessThanOrEqual(1);
expect(result).toEqual(expected);
});
}
describe("useShouldRedirect", () => {
describe("user HAS NOT BEEN UPSOLD recover & HAS NOT BEEN REDIRECTED to post onboarding", () => {
const params = {
hasBeenUpsoldRecover: false,
hasRedirectedToPostOnboarding: false,
};
testScenarios([
{
device: { modelId: types_devices_1.DeviceModelId.nanoS },
expected: { shouldRedirectToRecoverUpsell: false, shouldRedirectToPostOnboarding: true },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoS },
expected: { shouldRedirectToRecoverUpsell: false, shouldRedirectToPostOnboarding: true },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoSP },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoSP },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoX },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoX },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.stax },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.europa },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
].map(scenario => ({ ...scenario, ...params })));
});
describe("user HAS BEEN UPSOLD recover & HAS NOT BEEN REDIRECTED to post onboarding", () => {
[
types_devices_1.DeviceModelId.nanoS,
types_devices_1.DeviceModelId.nanoSP,
types_devices_1.DeviceModelId.nanoX,
types_devices_1.DeviceModelId.stax,
types_devices_1.DeviceModelId.europa,
].forEach(modelId => {
testScenarios([
{
device: { modelId },
expected: {
shouldRedirectToRecoverUpsell: false,
shouldRedirectToPostOnboarding: true,
},
hasBeenUpsoldRecover: true,
hasRedirectedToPostOnboarding: false,
},
]);
});
});
describe("user HAS BEEN UPSOLD PROTECT & HAS BEEN REDIRECTED to post onboarding", () => {
[
types_devices_1.DeviceModelId.nanoS,
types_devices_1.DeviceModelId.nanoSP,
types_devices_1.DeviceModelId.nanoX,
types_devices_1.DeviceModelId.stax,
types_devices_1.DeviceModelId.europa,
].forEach(modelId => {
testScenarios([
{
device: { modelId },
expected: {
shouldRedirectToRecoverUpsell: false,
shouldRedirectToPostOnboarding: false,
},
hasBeenUpsoldRecover: true,
hasRedirectedToPostOnboarding: true,
},
]);
});
});
describe("user HAS NOT BEEN UPSOLD recover & HAS BEEN REDIRECTED to post onboarding", () => {
const params = {
hasBeenUpsoldRecover: false,
hasRedirectedToPostOnboarding: true,
};
testScenarios([
{
device: { modelId: types_devices_1.DeviceModelId.nanoS },
expected: { shouldRedirectToRecoverUpsell: false, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoS },
expected: { shouldRedirectToRecoverUpsell: false, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoSP },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoSP },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoX },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.nanoX },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.stax },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
{
device: { modelId: types_devices_1.DeviceModelId.europa },
expected: { shouldRedirectToRecoverUpsell: true, shouldRedirectToPostOnboarding: false },
},
].map(scenario => ({ ...scenario, ...params })));
});
});
//# sourceMappingURL=shouldRedirectToPostOnboardingOrRecoverUpsell.test.js.map