@ledgerhq/live-common 27.2.0-nightly.4 → 27.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/bot/index.d.ts.map +1 -1
- package/lib/bot/index.js +3 -8
- package/lib/bot/index.js.map +1 -1
- package/lib/bot/specs.d.ts +0 -9
- package/lib/bot/specs.d.ts.map +1 -1
- package/lib/bot/specs.js +1 -49
- package/lib/bot/specs.js.map +1 -1
- package/lib/currencies/support.d.ts.map +1 -1
- package/lib/currencies/support.js +1 -2
- package/lib/currencies/support.js.map +1 -1
- package/lib/derivation.d.ts.map +1 -1
- package/lib/derivation.js +4 -2
- package/lib/derivation.js.map +1 -1
- package/lib/env.js +1 -1
- package/lib/exchange/swap/getExchangeRates.d.ts.map +1 -1
- package/lib/exchange/swap/getExchangeRates.js +1 -1
- package/lib/exchange/swap/getExchangeRates.js.map +1 -1
- package/lib/exchange/swap/getProviders.d.ts.map +1 -1
- package/lib/exchange/swap/getProviders.js +5 -45
- package/lib/exchange/swap/getProviders.js.map +1 -1
- package/lib/exchange/swap/index.d.ts +1 -2
- package/lib/exchange/swap/index.d.ts.map +1 -1
- package/lib/exchange/swap/index.js +1 -11
- package/lib/exchange/swap/index.js.map +1 -1
- package/lib/exchange/swap/index.test.js +0 -22
- package/lib/exchange/swap/index.test.js.map +1 -1
- package/lib/exchange/swap/mock.js +1 -1
- package/lib/exchange/swap/mock.js.map +1 -1
- package/lib/exchange/swap/types.d.ts +0 -14
- package/lib/exchange/swap/types.d.ts.map +1 -1
- package/lib/families/algorand/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/algorand/speculos-deviceActions.js +29 -2
- package/lib/families/algorand/speculos-deviceActions.js.map +1 -1
- package/lib/families/bitcoin/specs.d.ts.map +1 -1
- package/lib/families/bitcoin/specs.js +1 -0
- package/lib/families/bitcoin/specs.js.map +1 -1
- package/lib/families/bitcoin/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/bitcoin/speculos-deviceActions.js +22 -2
- package/lib/families/bitcoin/speculos-deviceActions.js.map +1 -1
- package/lib/families/cardano/specs.d.ts.map +1 -1
- package/lib/families/cardano/specs.js +3 -4
- package/lib/families/cardano/specs.js.map +1 -1
- package/lib/families/cardano/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/cardano/speculos-deviceActions.js +10 -2
- package/lib/families/cardano/speculos-deviceActions.js.map +1 -1
- package/lib/families/celo/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/celo/speculos-deviceActions.js +10 -3
- package/lib/families/celo/speculos-deviceActions.js.map +1 -1
- package/lib/families/elrond/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/elrond/speculos-deviceActions.js +8 -3
- package/lib/families/elrond/speculos-deviceActions.js.map +1 -1
- package/lib/families/ethereum/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/ethereum/speculos-deviceActions.js +33 -10
- package/lib/families/ethereum/speculos-deviceActions.js.map +1 -1
- package/lib/families/evm/specs.d.ts.map +1 -1
- package/lib/families/evm/specs.js +5 -9
- package/lib/families/evm/specs.js.map +1 -1
- package/lib/families/evm/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/evm/speculos-deviceActions.js +25 -5
- package/lib/families/evm/speculos-deviceActions.js.map +1 -1
- package/lib/families/filecoin/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/filecoin/speculos-deviceActions.js +7 -6
- package/lib/families/filecoin/speculos-deviceActions.js.map +1 -1
- package/lib/families/polkadot/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/polkadot/speculos-deviceActions.js +10 -3
- package/lib/families/polkadot/speculos-deviceActions.js.map +1 -1
- package/lib/families/ripple/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/ripple/speculos-deviceActions.js +22 -2
- package/lib/families/ripple/speculos-deviceActions.js.map +1 -1
- package/lib/families/solana/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/solana/speculos-deviceActions.js +7 -5
- package/lib/families/solana/speculos-deviceActions.js.map +1 -1
- package/lib/families/stellar/api/horizon.d.ts.map +1 -1
- package/lib/families/stellar/api/horizon.js +10 -15
- package/lib/families/stellar/api/horizon.js.map +1 -1
- package/lib/families/stellar/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/stellar/speculos-deviceActions.js +8 -4
- package/lib/families/stellar/speculos-deviceActions.js.map +1 -1
- package/lib/families/tezos/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/tezos/speculos-deviceActions.js +11 -6
- package/lib/families/tezos/speculos-deviceActions.js.map +1 -1
- package/lib/families/tron/speculos-deviceActions.d.ts.map +1 -1
- package/lib/families/tron/speculos-deviceActions.js +14 -2
- package/lib/families/tron/speculos-deviceActions.js.map +1 -1
- package/lib/featureFlags/defaultFeatures.d.ts.map +1 -1
- package/lib/featureFlags/defaultFeatures.js +0 -3
- package/lib/featureFlags/defaultFeatures.js.map +1 -1
- package/lib/hw/extractOnboardingState.d.ts +1 -5
- package/lib/hw/extractOnboardingState.d.ts.map +1 -1
- package/lib/hw/extractOnboardingState.js +9 -17
- package/lib/hw/extractOnboardingState.js.map +1 -1
- package/lib/hw/extractOnboardingState.test.js +11 -21
- package/lib/hw/extractOnboardingState.test.js.map +1 -1
- package/package.json +19 -23
- package/src/bot/index.ts +12 -11
- package/src/bot/specs.ts +0 -45
- package/src/currencies/__snapshots__/sortByMarketcap.test.ts.snap +35 -1
- package/src/currencies/support.ts +1 -2
- package/src/derivation.ts +4 -2
- package/src/env.ts +1 -1
- package/src/exchange/swap/getExchangeRates.ts +3 -7
- package/src/exchange/swap/getProviders.ts +8 -31
- package/src/exchange/swap/index.test.ts +1 -36
- package/src/exchange/swap/index.ts +0 -15
- package/src/exchange/swap/mock.ts +2 -2
- package/src/exchange/swap/types.ts +0 -11
- package/src/families/algorand/speculos-deviceActions.ts +35 -4
- package/src/families/bitcoin/specs.ts +1 -0
- package/src/families/bitcoin/speculos-deviceActions.ts +26 -3
- package/src/families/cardano/specs.ts +3 -4
- package/src/families/cardano/speculos-deviceActions.ts +14 -3
- package/src/families/celo/speculos-deviceActions.ts +14 -6
- package/src/families/elrond/speculos-deviceActions.ts +9 -4
- package/src/families/ethereum/speculos-deviceActions.ts +46 -16
- package/src/families/evm/specs.ts +8 -12
- package/src/families/evm/speculos-deviceActions.ts +35 -7
- package/src/families/filecoin/speculos-deviceActions.ts +8 -7
- package/src/families/polkadot/speculos-deviceActions.ts +16 -5
- package/src/families/ripple/speculos-deviceActions.ts +28 -3
- package/src/families/solana/speculos-deviceActions.ts +8 -6
- package/src/families/stellar/api/horizon.ts +6 -10
- package/src/families/stellar/speculos-deviceActions.ts +11 -5
- package/src/families/tezos/speculos-deviceActions.ts +16 -9
- package/src/families/tron/speculos-deviceActions.ts +12 -4
- package/src/featureFlags/defaultFeatures.ts +0 -3
- package/src/hw/extractOnboardingState.test.ts +12 -29
- package/src/hw/extractOnboardingState.ts +9 -17
- package/lib/exchange/swap/getProviders.test.d.ts +0 -2
- package/lib/exchange/swap/getProviders.test.d.ts.map +0 -1
- package/lib/exchange/swap/getProviders.test.js +0 -519
- package/lib/exchange/swap/getProviders.test.js.map +0 -1
- package/lib/postOnboarding/PostOnboardingProvider.d.ts +0 -20
- package/lib/postOnboarding/PostOnboardingProvider.d.ts.map +0 -1
- package/lib/postOnboarding/PostOnboardingProvider.js +0 -33
- package/lib/postOnboarding/PostOnboardingProvider.js.map +0 -1
- package/lib/postOnboarding/actions.d.ts +0 -20
- package/lib/postOnboarding/actions.d.ts.map +0 -1
- package/lib/postOnboarding/actions.js +0 -37
- package/lib/postOnboarding/actions.js.map +0 -1
- package/lib/postOnboarding/hooks/index.d.ts +0 -6
- package/lib/postOnboarding/hooks/index.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/index.js +0 -22
- package/lib/postOnboarding/hooks/index.js.map +0 -1
- package/lib/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.d.ts +0 -8
- package/lib/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.js +0 -16
- package/lib/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.js.map +0 -1
- package/lib/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.test.d.ts +0 -2
- package/lib/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.test.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.test.js +0 -75
- package/lib/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.test.js.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingContext.d.ts +0 -3
- package/lib/postOnboarding/hooks/usePostOnboardingContext.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingContext.js +0 -10
- package/lib/postOnboarding/hooks/usePostOnboardingContext.js.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.d.ts +0 -8
- package/lib/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.js +0 -20
- package/lib/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.js.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.test.d.ts +0 -2
- package/lib/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.test.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.test.js +0 -64
- package/lib/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.test.js.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.d.ts +0 -12
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.js +0 -65
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.js.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.test.d.ts +0 -2
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.test.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.test.js +0 -129
- package/lib/postOnboarding/hooks/usePostOnboardingHubState.test.js.map +0 -1
- package/lib/postOnboarding/hooks/useStartPostOnboardingCallback.d.ts +0 -13
- package/lib/postOnboarding/hooks/useStartPostOnboardingCallback.d.ts.map +0 -1
- package/lib/postOnboarding/hooks/useStartPostOnboardingCallback.js +0 -34
- package/lib/postOnboarding/hooks/useStartPostOnboardingCallback.js.map +0 -1
- package/lib/postOnboarding/mock.d.ts +0 -8
- package/lib/postOnboarding/mock.d.ts.map +0 -1
- package/lib/postOnboarding/mock.js +0 -46
- package/lib/postOnboarding/mock.js.map +0 -1
- package/lib/postOnboarding/reducer.d.ts +0 -22
- package/lib/postOnboarding/reducer.d.ts.map +0 -1
- package/lib/postOnboarding/reducer.js +0 -71
- package/lib/postOnboarding/reducer.js.map +0 -1
- package/lib/postOnboarding/reducer.test.d.ts +0 -2
- package/lib/postOnboarding/reducer.test.d.ts.map +0 -1
- package/lib/postOnboarding/reducer.test.js +0 -251
- package/lib/postOnboarding/reducer.test.js.map +0 -1
- package/src/exchange/swap/getProviders.test.ts +0 -450
- package/src/postOnboarding/PostOnboardingProvider.tsx +0 -49
- package/src/postOnboarding/actions.ts +0 -40
- package/src/postOnboarding/hooks/index.ts +0 -5
- package/src/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.test.ts +0 -82
- package/src/postOnboarding/hooks/useAllPostOnboardingActionsCompleted.ts +0 -12
- package/src/postOnboarding/hooks/usePostOnboardingContext.ts +0 -9
- package/src/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.test.ts +0 -83
- package/src/postOnboarding/hooks/usePostOnboardingEntryPointVisibleOnWallet.ts +0 -22
- package/src/postOnboarding/hooks/usePostOnboardingHubState.test.ts +0 -184
- package/src/postOnboarding/hooks/usePostOnboardingHubState.ts +0 -56
- package/src/postOnboarding/hooks/useStartPostOnboardingCallback.ts +0 -38
- package/src/postOnboarding/mock.ts +0 -53
- package/src/postOnboarding/reducer.test.ts +0 -247
- package/src/postOnboarding/reducer.ts +0 -105
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { renderHook } from "@testing-library/react-hooks";
|
|
2
|
-
import {
|
|
3
|
-
postOnboardingDeviceModelIdSelector,
|
|
4
|
-
walletPostOnboardingEntryPointDismissedSelector,
|
|
5
|
-
} from "../reducer";
|
|
6
|
-
import { useAllPostOnboardingActionsCompleted } from "./useAllPostOnboardingActionsCompleted";
|
|
7
|
-
import { usePostOnboardingEntryPointVisibleOnWallet } from "./usePostOnboardingEntryPointVisibleOnWallet";
|
|
8
|
-
import { DeviceModelId } from "@ledgerhq/types-devices";
|
|
9
|
-
|
|
10
|
-
jest.mock("react-redux", () => ({
|
|
11
|
-
useSelector: (fun) => fun(),
|
|
12
|
-
}));
|
|
13
|
-
jest.mock("../reducer");
|
|
14
|
-
jest.mock("./useAllPostOnboardingActionsCompleted");
|
|
15
|
-
|
|
16
|
-
const mockedUseAllCompleted = jest.mocked(useAllPostOnboardingActionsCompleted);
|
|
17
|
-
const mockedDismissedSelector = jest.mocked(
|
|
18
|
-
walletPostOnboardingEntryPointDismissedSelector
|
|
19
|
-
);
|
|
20
|
-
const mockedDeviceModelIdSelector = jest.mocked(
|
|
21
|
-
postOnboardingDeviceModelIdSelector
|
|
22
|
-
);
|
|
23
|
-
|
|
24
|
-
describe("usePostOnboardingEntryPointVisibleOnWallet", () => {
|
|
25
|
-
beforeEach(() => {
|
|
26
|
-
mockedUseAllCompleted.mockClear();
|
|
27
|
-
mockedDismissedSelector.mockClear();
|
|
28
|
-
mockedDeviceModelIdSelector.mockClear();
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("should be false if deviceModelId is null", () => {
|
|
32
|
-
mockedUseAllCompleted.mockReturnValue(false);
|
|
33
|
-
mockedDismissedSelector.mockReturnValue(false);
|
|
34
|
-
mockedDeviceModelIdSelector.mockReturnValue(null);
|
|
35
|
-
|
|
36
|
-
const { result } = renderHook(() =>
|
|
37
|
-
usePostOnboardingEntryPointVisibleOnWallet()
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
expect(result.current).toBe(false);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it("should be false if the the entry point HAS been dismissed", () => {
|
|
44
|
-
mockedDismissedSelector.mockReturnValue(true);
|
|
45
|
-
mockedDeviceModelIdSelector.mockReturnValue(DeviceModelId.nanoX);
|
|
46
|
-
|
|
47
|
-
mockedUseAllCompleted.mockReturnValue(false);
|
|
48
|
-
const { result: res1 } = renderHook(() =>
|
|
49
|
-
usePostOnboardingEntryPointVisibleOnWallet()
|
|
50
|
-
);
|
|
51
|
-
expect(res1.current).toBe(false);
|
|
52
|
-
|
|
53
|
-
mockedUseAllCompleted.mockReturnValue(true);
|
|
54
|
-
const { result: res2 } = renderHook(() =>
|
|
55
|
-
usePostOnboardingEntryPointVisibleOnWallet()
|
|
56
|
-
);
|
|
57
|
-
expect(res2.current).toBe(false);
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
it("should be false if all actions are completed", () => {
|
|
61
|
-
mockedDismissedSelector.mockReturnValue(false);
|
|
62
|
-
mockedUseAllCompleted.mockReturnValue(true);
|
|
63
|
-
|
|
64
|
-
mockedDeviceModelIdSelector.mockReturnValue(DeviceModelId.nanoX);
|
|
65
|
-
const { result } = renderHook(() =>
|
|
66
|
-
usePostOnboardingEntryPointVisibleOnWallet()
|
|
67
|
-
);
|
|
68
|
-
|
|
69
|
-
expect(result.current).toBe(false);
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
it("should be true if the entry point HAS NOT been dismissed and all actions are NOT completed", () => {
|
|
73
|
-
mockedDismissedSelector.mockReturnValue(false);
|
|
74
|
-
mockedUseAllCompleted.mockReturnValue(false);
|
|
75
|
-
mockedDeviceModelIdSelector.mockReturnValue(DeviceModelId.nanoX);
|
|
76
|
-
|
|
77
|
-
const { result } = renderHook(() =>
|
|
78
|
-
usePostOnboardingEntryPointVisibleOnWallet()
|
|
79
|
-
);
|
|
80
|
-
|
|
81
|
-
expect(result.current).toBe(true);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { useSelector } from "react-redux";
|
|
2
|
-
import {
|
|
3
|
-
postOnboardingDeviceModelIdSelector,
|
|
4
|
-
walletPostOnboardingEntryPointDismissedSelector,
|
|
5
|
-
} from "../reducer";
|
|
6
|
-
import { useAllPostOnboardingActionsCompleted } from "./useAllPostOnboardingActionsCompleted";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @returns a boolean representing whether the post onboarding entry point
|
|
11
|
-
* should be visible on the wallet page.
|
|
12
|
-
* TODO: unit test this
|
|
13
|
-
*/
|
|
14
|
-
export function usePostOnboardingEntryPointVisibleOnWallet(): boolean {
|
|
15
|
-
const deviceModelId = useSelector(postOnboardingDeviceModelIdSelector);
|
|
16
|
-
const dismissed = useSelector(
|
|
17
|
-
walletPostOnboardingEntryPointDismissedSelector
|
|
18
|
-
);
|
|
19
|
-
const allCompleted = useAllPostOnboardingActionsCompleted();
|
|
20
|
-
|
|
21
|
-
return !!deviceModelId && !(dismissed || allCompleted);
|
|
22
|
-
}
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
import { useFeatureFlags } from "../../featureFlags";
|
|
2
|
-
import { hubStateSelector } from "../reducer";
|
|
3
|
-
import { usePostOnboardingContext } from "./usePostOnboardingContext";
|
|
4
|
-
import { getPostOnboardingAction, mockedFeatureIdToTest } from "../mock";
|
|
5
|
-
import { renderHook } from "@testing-library/react-hooks";
|
|
6
|
-
import { DeviceModelId } from "@ledgerhq/types-devices";
|
|
7
|
-
import { PostOnboardingActionId } from "@ledgerhq/types-live";
|
|
8
|
-
import { usePostOnboardingHubState } from "./usePostOnboardingHubState";
|
|
9
|
-
|
|
10
|
-
jest.mock("react-redux", () => ({
|
|
11
|
-
useSelector: (val) => val(),
|
|
12
|
-
}));
|
|
13
|
-
jest.mock("../../featureFlags");
|
|
14
|
-
jest.mock("./usePostOnboardingContext");
|
|
15
|
-
jest.mock("../reducer");
|
|
16
|
-
|
|
17
|
-
const mockedUseFeatureFlags = jest.mocked(useFeatureFlags);
|
|
18
|
-
const mockedGetFeatureWithMockFeatureEnabled = (enabled) => ({
|
|
19
|
-
getFeature: (id) => {
|
|
20
|
-
if (id === mockedFeatureIdToTest) return { enabled };
|
|
21
|
-
return { enabled: true };
|
|
22
|
-
},
|
|
23
|
-
overrideFeature: () => {},
|
|
24
|
-
resetFeature: () => {},
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
const mockedUsePostOnboardingContext = jest.mocked(usePostOnboardingContext);
|
|
28
|
-
|
|
29
|
-
const mockedHubStateSelector = jest.mocked(hubStateSelector);
|
|
30
|
-
|
|
31
|
-
const defaultHubState = {
|
|
32
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
33
|
-
actionsToComplete: [],
|
|
34
|
-
actionsCompleted: {},
|
|
35
|
-
lastActionCompleted: null,
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const stateAllCompleted = {
|
|
39
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
40
|
-
actionsToComplete: [
|
|
41
|
-
PostOnboardingActionId.claimMock,
|
|
42
|
-
PostOnboardingActionId.personalizeMock,
|
|
43
|
-
PostOnboardingActionId.migrateAssetsMock,
|
|
44
|
-
],
|
|
45
|
-
actionsCompleted: {
|
|
46
|
-
[PostOnboardingActionId.claimMock]: true,
|
|
47
|
-
[PostOnboardingActionId.personalizeMock]: true,
|
|
48
|
-
[PostOnboardingActionId.migrateAssetsMock]: true,
|
|
49
|
-
},
|
|
50
|
-
lastActionCompleted: PostOnboardingActionId.personalizeMock,
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const stateAllNotCompleted = {
|
|
54
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
55
|
-
actionsToComplete: [
|
|
56
|
-
PostOnboardingActionId.claimMock,
|
|
57
|
-
PostOnboardingActionId.personalizeMock,
|
|
58
|
-
PostOnboardingActionId.migrateAssetsMock,
|
|
59
|
-
],
|
|
60
|
-
actionsCompleted: {
|
|
61
|
-
[PostOnboardingActionId.claimMock]: false,
|
|
62
|
-
[PostOnboardingActionId.personalizeMock]: false,
|
|
63
|
-
[PostOnboardingActionId.migrateAssetsMock]: false,
|
|
64
|
-
},
|
|
65
|
-
lastActionCompleted: null,
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
describe("usePostOnboardingHubState", () => {
|
|
69
|
-
beforeEach(() => {
|
|
70
|
-
mockedUseFeatureFlags.mockReturnValue(
|
|
71
|
-
mockedGetFeatureWithMockFeatureEnabled(true)
|
|
72
|
-
);
|
|
73
|
-
mockedUsePostOnboardingContext.mockReturnValue({
|
|
74
|
-
getPostOnboardingActionsForDevice: () => [],
|
|
75
|
-
navigateToPostOnboardingHub: () => {},
|
|
76
|
-
getPostOnboardingAction,
|
|
77
|
-
});
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it("should return an empty state if the context isn't properly set (`getPostOnboardingAction` missing)", () => {
|
|
81
|
-
const state = stateAllCompleted;
|
|
82
|
-
mockedHubStateSelector.mockReturnValue(state);
|
|
83
|
-
mockedUsePostOnboardingContext.mockReturnValue({
|
|
84
|
-
getPostOnboardingActionsForDevice: () => [],
|
|
85
|
-
navigateToPostOnboardingHub: () => {},
|
|
86
|
-
getPostOnboardingAction: undefined,
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
const { result } = renderHook(() => usePostOnboardingHubState());
|
|
90
|
-
|
|
91
|
-
expect(result.current).toEqual({
|
|
92
|
-
deviceModelId: state.deviceModelId,
|
|
93
|
-
lastActionCompleted: null,
|
|
94
|
-
actionsState: [],
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
it("should return an empty state if the store is in an empty state", () => {
|
|
99
|
-
const state = defaultHubState;
|
|
100
|
-
mockedHubStateSelector.mockReturnValue(state);
|
|
101
|
-
|
|
102
|
-
const { result } = renderHook(() => usePostOnboardingHubState());
|
|
103
|
-
|
|
104
|
-
expect(result.current).toEqual({
|
|
105
|
-
deviceModelId: state.deviceModelId,
|
|
106
|
-
lastActionCompleted: null,
|
|
107
|
-
actionsState: [],
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
it("should not return actions that have a disabled feature flag ", () => {
|
|
112
|
-
const state = stateAllCompleted;
|
|
113
|
-
mockedHubStateSelector.mockReturnValue(state);
|
|
114
|
-
mockedUseFeatureFlags.mockReturnValue(
|
|
115
|
-
mockedGetFeatureWithMockFeatureEnabled(false)
|
|
116
|
-
);
|
|
117
|
-
|
|
118
|
-
const {
|
|
119
|
-
result: {
|
|
120
|
-
current: { actionsState, lastActionCompleted },
|
|
121
|
-
},
|
|
122
|
-
} = renderHook(() => usePostOnboardingHubState());
|
|
123
|
-
|
|
124
|
-
expect(
|
|
125
|
-
actionsState.find(
|
|
126
|
-
(action) => action.featureFlagId === mockedFeatureIdToTest
|
|
127
|
-
)
|
|
128
|
-
).toBe(undefined);
|
|
129
|
-
expect(lastActionCompleted).toBe(null);
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
it("should return actions that have a feature flag enabled", () => {
|
|
133
|
-
const state = stateAllCompleted;
|
|
134
|
-
mockedHubStateSelector.mockReturnValue(state);
|
|
135
|
-
mockedUseFeatureFlags.mockReturnValue(
|
|
136
|
-
mockedGetFeatureWithMockFeatureEnabled(true)
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
const {
|
|
140
|
-
result: {
|
|
141
|
-
current: { actionsState, lastActionCompleted },
|
|
142
|
-
},
|
|
143
|
-
} = renderHook(() => usePostOnboardingHubState());
|
|
144
|
-
|
|
145
|
-
expect(
|
|
146
|
-
actionsState.find(
|
|
147
|
-
(action) => action.featureFlagId === mockedFeatureIdToTest
|
|
148
|
-
)
|
|
149
|
-
).toBeTruthy();
|
|
150
|
-
expect(lastActionCompleted).toBeTruthy();
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
it("should return actions in their correct state (all actions completed)", () => {
|
|
154
|
-
const state = stateAllCompleted;
|
|
155
|
-
mockedHubStateSelector.mockReturnValue(state);
|
|
156
|
-
mockedUseFeatureFlags.mockReturnValue(
|
|
157
|
-
mockedGetFeatureWithMockFeatureEnabled(true)
|
|
158
|
-
);
|
|
159
|
-
|
|
160
|
-
const {
|
|
161
|
-
result: {
|
|
162
|
-
current: { actionsState },
|
|
163
|
-
},
|
|
164
|
-
} = renderHook(() => usePostOnboardingHubState());
|
|
165
|
-
|
|
166
|
-
expect(actionsState.every((action) => action.completed)).toBe(true);
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
it("should return actions in their correct state (no actions completed)", () => {
|
|
170
|
-
const state = stateAllNotCompleted;
|
|
171
|
-
mockedHubStateSelector.mockReturnValue(state);
|
|
172
|
-
mockedUseFeatureFlags.mockReturnValue(
|
|
173
|
-
mockedGetFeatureWithMockFeatureEnabled(true)
|
|
174
|
-
);
|
|
175
|
-
|
|
176
|
-
const {
|
|
177
|
-
result: {
|
|
178
|
-
current: { actionsState },
|
|
179
|
-
},
|
|
180
|
-
} = renderHook(() => usePostOnboardingHubState());
|
|
181
|
-
|
|
182
|
-
expect(actionsState.every((action) => action.completed)).toBe(false);
|
|
183
|
-
});
|
|
184
|
-
});
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { useSelector } from "react-redux";
|
|
2
|
-
import { useMemo } from "react";
|
|
3
|
-
import { PostOnboardingHubState } from "@ledgerhq/types-live";
|
|
4
|
-
import { useFeatureFlags } from "../../featureFlags";
|
|
5
|
-
import { hubStateSelector } from "../reducer";
|
|
6
|
-
import { usePostOnboardingContext } from "./usePostOnboardingContext";
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @returns an object representing the state that should be rendered on the post
|
|
10
|
-
* onboarding hub screen.
|
|
11
|
-
*
|
|
12
|
-
* This takes feature flagging into account so the logic is
|
|
13
|
-
* resistant to flags getting enabled/disabled over time (for a given disabled
|
|
14
|
-
* feature flag, the actions pointing to it will be excluded).
|
|
15
|
-
* TODO: unit test this
|
|
16
|
-
* */
|
|
17
|
-
export function usePostOnboardingHubState(): PostOnboardingHubState {
|
|
18
|
-
const hubState = useSelector(hubStateSelector);
|
|
19
|
-
const postOnboardingContext = usePostOnboardingContext();
|
|
20
|
-
const { getPostOnboardingAction } = postOnboardingContext;
|
|
21
|
-
const { getFeature } = useFeatureFlags();
|
|
22
|
-
return useMemo(() => {
|
|
23
|
-
if (!getPostOnboardingAction)
|
|
24
|
-
return {
|
|
25
|
-
deviceModelId: hubState.deviceModelId,
|
|
26
|
-
lastActionCompleted: null,
|
|
27
|
-
actionsState: [],
|
|
28
|
-
};
|
|
29
|
-
const actionsState = hubState.actionsToComplete
|
|
30
|
-
.map((actionId) => ({
|
|
31
|
-
...getPostOnboardingAction(actionId),
|
|
32
|
-
completed: !!hubState.actionsCompleted[actionId],
|
|
33
|
-
}))
|
|
34
|
-
.filter(
|
|
35
|
-
(actionWithState) =>
|
|
36
|
-
!actionWithState.featureFlagId ||
|
|
37
|
-
getFeature(actionWithState.featureFlagId)?.enabled
|
|
38
|
-
);
|
|
39
|
-
const lastActionCompleted = hubState.lastActionCompleted
|
|
40
|
-
? getPostOnboardingAction(hubState.lastActionCompleted)
|
|
41
|
-
: null;
|
|
42
|
-
|
|
43
|
-
const isLastActionCompletedEnabled =
|
|
44
|
-
lastActionCompleted &&
|
|
45
|
-
(!lastActionCompleted.featureFlagId ||
|
|
46
|
-
getFeature(lastActionCompleted.featureFlagId)?.enabled);
|
|
47
|
-
|
|
48
|
-
return {
|
|
49
|
-
deviceModelId: hubState.deviceModelId,
|
|
50
|
-
lastActionCompleted: isLastActionCompletedEnabled
|
|
51
|
-
? lastActionCompleted
|
|
52
|
-
: null,
|
|
53
|
-
actionsState,
|
|
54
|
-
};
|
|
55
|
-
}, [getFeature, hubState, getPostOnboardingAction]);
|
|
56
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { useDispatch } from "react-redux";
|
|
2
|
-
import { DeviceModelId } from "@ledgerhq/types-devices";
|
|
3
|
-
import { usePostOnboardingContext } from "./usePostOnboardingContext";
|
|
4
|
-
import { useCallback, useMemo } from "react";
|
|
5
|
-
import { initPostOnboarding } from "../actions";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Use this to initialize AND navigate to the post onboarding hub for a given
|
|
9
|
-
* device model.
|
|
10
|
-
*
|
|
11
|
-
* @param deviceModelId
|
|
12
|
-
* @returns a function that can be called to initialize the post
|
|
13
|
-
* onboarding for the given device model and navigate to the post onboarding
|
|
14
|
-
* hub.
|
|
15
|
-
* TODO: unit test this
|
|
16
|
-
*/
|
|
17
|
-
export function useStartPostOnboardingCallback(
|
|
18
|
-
deviceModelId: DeviceModelId,
|
|
19
|
-
mock = false
|
|
20
|
-
): () => void {
|
|
21
|
-
const dispatch = useDispatch();
|
|
22
|
-
const { getPostOnboardingActionsForDevice, navigateToPostOnboardingHub } =
|
|
23
|
-
usePostOnboardingContext();
|
|
24
|
-
const actions = useMemo(
|
|
25
|
-
() => getPostOnboardingActionsForDevice(deviceModelId, mock),
|
|
26
|
-
[deviceModelId, mock, getPostOnboardingActionsForDevice]
|
|
27
|
-
);
|
|
28
|
-
return useCallback(() => {
|
|
29
|
-
dispatch(
|
|
30
|
-
initPostOnboarding({
|
|
31
|
-
deviceModelId,
|
|
32
|
-
actionsIds: actions.map((action) => action.id),
|
|
33
|
-
})
|
|
34
|
-
);
|
|
35
|
-
if (actions.length === 0) return;
|
|
36
|
-
navigateToPostOnboardingHub();
|
|
37
|
-
}, [actions, deviceModelId, dispatch, navigateToPostOnboardingHub]);
|
|
38
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/** mocks for unit tests */
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
FeatureId,
|
|
5
|
-
PostOnboardingAction,
|
|
6
|
-
PostOnboardingActionId,
|
|
7
|
-
} from "@ledgerhq/types-live";
|
|
8
|
-
|
|
9
|
-
const MockIcon = (): null => null;
|
|
10
|
-
|
|
11
|
-
export const mockedFeatureIdToTest: FeatureId = "mockFeature";
|
|
12
|
-
|
|
13
|
-
export const claimTestMock: PostOnboardingAction = {
|
|
14
|
-
id: PostOnboardingActionId.claimMock,
|
|
15
|
-
Icon: MockIcon,
|
|
16
|
-
title: "Claim my NFT",
|
|
17
|
-
description: "A special NFT for you.",
|
|
18
|
-
tagLabel: "Free",
|
|
19
|
-
actionCompletedPopupLabel: "NFT claimed",
|
|
20
|
-
actionCompletedHubTitle: "Kickstart your Web3 journey.",
|
|
21
|
-
navigationParams: [],
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
export const personalizeTestMock: PostOnboardingAction = {
|
|
25
|
-
id: PostOnboardingActionId.personalizeMock,
|
|
26
|
-
Icon: MockIcon,
|
|
27
|
-
featureFlagId: mockedFeatureIdToTest,
|
|
28
|
-
title: `Personalize my device`,
|
|
29
|
-
description: "By customizing the screen.",
|
|
30
|
-
actionCompletedPopupLabel: "Device personalized",
|
|
31
|
-
actionCompletedHubTitle: "That screen is looking neat.",
|
|
32
|
-
navigationParams: [],
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export const migrateAssetsTestMock: PostOnboardingAction = {
|
|
36
|
-
id: PostOnboardingActionId.migrateAssetsMock,
|
|
37
|
-
Icon: MockIcon,
|
|
38
|
-
title: "Transfer assets to my Ledger",
|
|
39
|
-
description: "Easily secure assets from coinbase or another exchange.",
|
|
40
|
-
actionCompletedPopupLabel: "Assets transfered",
|
|
41
|
-
actionCompletedHubTitle: "Something about being a crypto pro.",
|
|
42
|
-
navigationParams: [],
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
export function getPostOnboardingAction(
|
|
46
|
-
id: PostOnboardingActionId
|
|
47
|
-
): PostOnboardingAction {
|
|
48
|
-
return {
|
|
49
|
-
[PostOnboardingActionId.claimMock]: claimTestMock,
|
|
50
|
-
[PostOnboardingActionId.personalizeMock]: personalizeTestMock,
|
|
51
|
-
[PostOnboardingActionId.migrateAssetsMock]: migrateAssetsTestMock,
|
|
52
|
-
}[id];
|
|
53
|
-
}
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
import { DeviceModelId } from "@ledgerhq/types-devices";
|
|
2
|
-
import {
|
|
3
|
-
PostOnboardingActionId,
|
|
4
|
-
PostOnboardingState,
|
|
5
|
-
} from "@ledgerhq/types-live";
|
|
6
|
-
import reducer, { initialState } from "./reducer";
|
|
7
|
-
|
|
8
|
-
import {
|
|
9
|
-
importPostOnboardingState,
|
|
10
|
-
initPostOnboarding,
|
|
11
|
-
setPostOnboardingActionCompleted,
|
|
12
|
-
clearPostOnboardingLastActionCompleted,
|
|
13
|
-
hidePostOnboardingWalletEntryPoint,
|
|
14
|
-
} from "./actions";
|
|
15
|
-
|
|
16
|
-
const initializationParamsA: Parameters<typeof initPostOnboarding> = [
|
|
17
|
-
{
|
|
18
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
19
|
-
actionsIds: [
|
|
20
|
-
PostOnboardingActionId.claimMock,
|
|
21
|
-
PostOnboardingActionId.migrateAssetsMock,
|
|
22
|
-
PostOnboardingActionId.personalizeMock,
|
|
23
|
-
],
|
|
24
|
-
},
|
|
25
|
-
];
|
|
26
|
-
|
|
27
|
-
// initialState -> importPostOnboardingState(...initializationParamsA)
|
|
28
|
-
const stateA0: PostOnboardingState = {
|
|
29
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
30
|
-
walletEntryPointDismissed: false,
|
|
31
|
-
actionsToComplete: [
|
|
32
|
-
PostOnboardingActionId.claimMock,
|
|
33
|
-
PostOnboardingActionId.migrateAssetsMock,
|
|
34
|
-
PostOnboardingActionId.personalizeMock,
|
|
35
|
-
],
|
|
36
|
-
actionsCompleted: {
|
|
37
|
-
[PostOnboardingActionId.claimMock]: false,
|
|
38
|
-
[PostOnboardingActionId.migrateAssetsMock]: false,
|
|
39
|
-
[PostOnboardingActionId.personalizeMock]: false,
|
|
40
|
-
},
|
|
41
|
-
lastActionCompleted: null,
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
// stateA0 -> setPostOnboardingActionCompleted(claimMock)
|
|
45
|
-
const stateA1: PostOnboardingState = {
|
|
46
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
47
|
-
walletEntryPointDismissed: false,
|
|
48
|
-
actionsToComplete: [
|
|
49
|
-
PostOnboardingActionId.claimMock,
|
|
50
|
-
PostOnboardingActionId.migrateAssetsMock,
|
|
51
|
-
PostOnboardingActionId.personalizeMock,
|
|
52
|
-
],
|
|
53
|
-
actionsCompleted: {
|
|
54
|
-
[PostOnboardingActionId.claimMock]: true, // stateA0 -> setPostOnboardingActionCompleted(claimMock)
|
|
55
|
-
[PostOnboardingActionId.migrateAssetsMock]: false,
|
|
56
|
-
[PostOnboardingActionId.personalizeMock]: false,
|
|
57
|
-
},
|
|
58
|
-
lastActionCompleted: PostOnboardingActionId.claimMock, // stateA0 -> setPostOnboardingActionCompleted(claimMock)
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
// stateA1 -> clearPostOnboardingLastActionCompleted()
|
|
62
|
-
const stateA2: PostOnboardingState = {
|
|
63
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
64
|
-
walletEntryPointDismissed: false,
|
|
65
|
-
actionsToComplete: [
|
|
66
|
-
PostOnboardingActionId.claimMock,
|
|
67
|
-
PostOnboardingActionId.migrateAssetsMock,
|
|
68
|
-
PostOnboardingActionId.personalizeMock,
|
|
69
|
-
],
|
|
70
|
-
actionsCompleted: {
|
|
71
|
-
[PostOnboardingActionId.claimMock]: true,
|
|
72
|
-
[PostOnboardingActionId.migrateAssetsMock]: false,
|
|
73
|
-
[PostOnboardingActionId.personalizeMock]: false,
|
|
74
|
-
},
|
|
75
|
-
lastActionCompleted: null, // stateA1 -> clearPostOnboardingLastActionCompleted()
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
// stateA2 -> setPostOnboardingActionCompleted(personalizeMock)
|
|
79
|
-
const stateA3: PostOnboardingState = {
|
|
80
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
81
|
-
walletEntryPointDismissed: false,
|
|
82
|
-
actionsToComplete: [
|
|
83
|
-
PostOnboardingActionId.claimMock,
|
|
84
|
-
PostOnboardingActionId.migrateAssetsMock,
|
|
85
|
-
PostOnboardingActionId.personalizeMock,
|
|
86
|
-
],
|
|
87
|
-
actionsCompleted: {
|
|
88
|
-
[PostOnboardingActionId.claimMock]: true,
|
|
89
|
-
[PostOnboardingActionId.migrateAssetsMock]: false,
|
|
90
|
-
[PostOnboardingActionId.personalizeMock]: true, // stateA2 -> setPostOnboardingActionCompleted(personalizeMock)
|
|
91
|
-
},
|
|
92
|
-
lastActionCompleted: PostOnboardingActionId.personalizeMock, // stateA2 -> setPostOnboardingActionCompleted(personalizeMock)
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
// stateA3 -> hidePostOnboardingWalletEntryPoint()
|
|
96
|
-
const stateA4: PostOnboardingState = {
|
|
97
|
-
deviceModelId: DeviceModelId.nanoX,
|
|
98
|
-
walletEntryPointDismissed: true, // stateA3 -> hidePostOnboardingWalletEntryPoint()
|
|
99
|
-
actionsToComplete: [
|
|
100
|
-
PostOnboardingActionId.claimMock,
|
|
101
|
-
PostOnboardingActionId.migrateAssetsMock,
|
|
102
|
-
PostOnboardingActionId.personalizeMock,
|
|
103
|
-
],
|
|
104
|
-
actionsCompleted: {
|
|
105
|
-
[PostOnboardingActionId.claimMock]: true,
|
|
106
|
-
[PostOnboardingActionId.migrateAssetsMock]: false,
|
|
107
|
-
[PostOnboardingActionId.personalizeMock]: true,
|
|
108
|
-
},
|
|
109
|
-
lastActionCompleted: PostOnboardingActionId.personalizeMock,
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
const initializationParamsB: Parameters<typeof initPostOnboarding> = [
|
|
113
|
-
{
|
|
114
|
-
deviceModelId: DeviceModelId.nanoS,
|
|
115
|
-
actionsIds: [PostOnboardingActionId.claimMock],
|
|
116
|
-
},
|
|
117
|
-
];
|
|
118
|
-
|
|
119
|
-
// initialState -> importPostOnboardingState(...initializationParamsB)
|
|
120
|
-
const stateB0 = {
|
|
121
|
-
deviceModelId: DeviceModelId.nanoS,
|
|
122
|
-
walletEntryPointDismissed: false,
|
|
123
|
-
actionsToComplete: [PostOnboardingActionId.claimMock],
|
|
124
|
-
actionsCompleted: { [PostOnboardingActionId.claimMock]: false },
|
|
125
|
-
lastActionCompleted: null,
|
|
126
|
-
};
|
|
127
|
-
|
|
128
|
-
// stateB0 -> setPostOnboardingActionCompleted(claimMock)
|
|
129
|
-
const stateB1 = {
|
|
130
|
-
deviceModelId: DeviceModelId.nanoS,
|
|
131
|
-
walletEntryPointDismissed: false,
|
|
132
|
-
actionsToComplete: [PostOnboardingActionId.claimMock],
|
|
133
|
-
actionsCompleted: { [PostOnboardingActionId.claimMock]: true },
|
|
134
|
-
lastActionCompleted: PostOnboardingActionId.claimMock,
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
const initializationParamsC: Parameters<typeof initPostOnboarding> = [
|
|
138
|
-
{
|
|
139
|
-
deviceModelId: DeviceModelId.nanoSP,
|
|
140
|
-
actionsIds: [],
|
|
141
|
-
},
|
|
142
|
-
];
|
|
143
|
-
|
|
144
|
-
// initialState -> importPostOnboardingState(...initializationParamsC)
|
|
145
|
-
const stateC0 = {
|
|
146
|
-
deviceModelId: DeviceModelId.nanoSP,
|
|
147
|
-
walletEntryPointDismissed: false,
|
|
148
|
-
actionsToComplete: [],
|
|
149
|
-
actionsCompleted: {},
|
|
150
|
-
lastActionCompleted: null,
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
describe("postOnboarding reducer (& action creators)", () => {
|
|
154
|
-
let state;
|
|
155
|
-
beforeEach(() => {
|
|
156
|
-
// reset state to initial state;
|
|
157
|
-
state = reducer(undefined, {});
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
it("should initialize the state properly", () => {
|
|
161
|
-
expect(state).toEqual(initialState);
|
|
162
|
-
});
|
|
163
|
-
|
|
164
|
-
it("should handle importPostOnboardingState", () => {
|
|
165
|
-
state = reducer(state, importPostOnboardingState({ newState: stateA0 }));
|
|
166
|
-
expect(state).toEqual(stateA0);
|
|
167
|
-
state = reducer(state, importPostOnboardingState({ newState: stateA1 }));
|
|
168
|
-
expect(state).toEqual(stateA1);
|
|
169
|
-
});
|
|
170
|
-
|
|
171
|
-
it("it should handle initPostOnboarding", () => {
|
|
172
|
-
state = reducer(state, initPostOnboarding(...initializationParamsA));
|
|
173
|
-
expect(state).toEqual(stateA0);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
it("it should handle setPostOnboardingActionCompleted", () => {
|
|
177
|
-
state = stateA0;
|
|
178
|
-
state = reducer(
|
|
179
|
-
state,
|
|
180
|
-
setPostOnboardingActionCompleted({
|
|
181
|
-
actionId: PostOnboardingActionId.claimMock,
|
|
182
|
-
})
|
|
183
|
-
);
|
|
184
|
-
expect(state).toEqual(stateA1);
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
it("it should handle clearPostOnboardingLastActionCompleted", () => {
|
|
188
|
-
state = stateA1;
|
|
189
|
-
state = reducer(state, clearPostOnboardingLastActionCompleted());
|
|
190
|
-
expect(state).toEqual(stateA2);
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
it("it should handle hidePostOnboardingWalletEntryPoint", () => {
|
|
194
|
-
state = stateA3;
|
|
195
|
-
state = reducer(state, hidePostOnboardingWalletEntryPoint());
|
|
196
|
-
expect(state).toEqual(stateA4);
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
it("it should handle successive actions properly", () => {
|
|
200
|
-
// initializing state with new device & set of actions
|
|
201
|
-
state = reducer(state, initPostOnboarding(...initializationParamsA));
|
|
202
|
-
expect(state).toEqual(stateA0);
|
|
203
|
-
|
|
204
|
-
// setting completed for claimMock
|
|
205
|
-
state = reducer(
|
|
206
|
-
state,
|
|
207
|
-
setPostOnboardingActionCompleted({
|
|
208
|
-
actionId: PostOnboardingActionId.claimMock,
|
|
209
|
-
})
|
|
210
|
-
);
|
|
211
|
-
expect(state).toEqual(stateA1);
|
|
212
|
-
|
|
213
|
-
// clearing last completed action
|
|
214
|
-
state = reducer(state, clearPostOnboardingLastActionCompleted());
|
|
215
|
-
expect(state).toEqual(stateA2);
|
|
216
|
-
|
|
217
|
-
// setting completed for personalizeMock
|
|
218
|
-
state = reducer(
|
|
219
|
-
state,
|
|
220
|
-
setPostOnboardingActionCompleted({
|
|
221
|
-
actionId: PostOnboardingActionId.personalizeMock,
|
|
222
|
-
})
|
|
223
|
-
);
|
|
224
|
-
expect(state).toEqual(stateA3);
|
|
225
|
-
|
|
226
|
-
// hiding wallet entrypoint
|
|
227
|
-
state = reducer(state, hidePostOnboardingWalletEntryPoint());
|
|
228
|
-
expect(state).toEqual(stateA4);
|
|
229
|
-
|
|
230
|
-
// initializing state with new device & set of actions
|
|
231
|
-
state = reducer(state, initPostOnboarding(...initializationParamsB));
|
|
232
|
-
expect(state).toEqual(stateB0);
|
|
233
|
-
|
|
234
|
-
// setting completed for claimMock
|
|
235
|
-
state = reducer(
|
|
236
|
-
state,
|
|
237
|
-
setPostOnboardingActionCompleted({
|
|
238
|
-
actionId: PostOnboardingActionId.claimMock,
|
|
239
|
-
})
|
|
240
|
-
);
|
|
241
|
-
expect(state).toEqual(stateB1);
|
|
242
|
-
|
|
243
|
-
// initializing state with new device & set of actions
|
|
244
|
-
state = reducer(state, initPostOnboarding(...initializationParamsC));
|
|
245
|
-
expect(state).toEqual(stateC0);
|
|
246
|
-
});
|
|
247
|
-
});
|