-
Notifications
You must be signed in to change notification settings - Fork 155
Expand file tree
/
Copy pathuse-active-wallet.spec.ts
More file actions
112 lines (89 loc) · 3.47 KB
/
Copy pathuse-active-wallet.spec.ts
File metadata and controls
112 lines (89 loc) · 3.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import { renderHook } from "@testing-library/react-native"
import { AccountType, ActiveWalletStatus } from "@app/types/wallet.types"
import { useActiveWallet } from "@app/hooks/use-active-wallet"
const mockActiveAccount = jest.fn()
const mockAccounts = jest.fn()
const mockSetActiveAccountId = jest.fn()
const mockCustodialState = jest.fn()
const mockSelfCustodialState = jest.fn()
jest.mock("@app/hooks/use-account-registry", () => ({
useAccountRegistry: () => ({
activeAccount: mockActiveAccount(),
accounts: mockAccounts(),
setActiveAccountId: mockSetActiveAccountId,
}),
}))
jest.mock("@app/hooks/use-self-custodial-rollback", () => ({
useSelfCustodialRollback: jest.fn(),
}))
jest.mock("@app/custodial/providers/wallet-provider", () => ({
useCustodialWallet: () => mockCustodialState(),
}))
jest.mock("@app/self-custodial/providers/wallet-provider", () => ({
useSelfCustodialWallet: () => mockSelfCustodialState(),
}))
const custodialReady = {
wallets: [],
status: ActiveWalletStatus.Ready,
accountType: AccountType.Custodial,
}
const selfCustodialReady = {
wallets: [],
status: ActiveWalletStatus.Ready,
accountType: AccountType.SelfCustodial,
}
const selfCustodialUnavailable = {
wallets: [],
status: ActiveWalletStatus.Unavailable,
accountType: AccountType.SelfCustodial,
}
describe("useActiveWallet", () => {
beforeEach(() => {
jest.clearAllMocks()
mockCustodialState.mockReturnValue(custodialReady)
mockSelfCustodialState.mockReturnValue(selfCustodialUnavailable)
mockAccounts.mockReturnValue([])
})
it("returns custodial state when active account is custodial", () => {
mockActiveAccount.mockReturnValue({
id: "custodial-default",
type: AccountType.Custodial,
})
const { result } = renderHook(() => useActiveWallet())
expect(result.current.status).toBe(ActiveWalletStatus.Ready)
expect(result.current.accountType).toBe(AccountType.Custodial)
expect(result.current.isReady).toBe(true)
expect(result.current.isSelfCustodial).toBe(false)
expect(result.current.needsBackendAuth).toBe(true)
})
it("returns self-custodial state when active account is self-custodial", () => {
mockActiveAccount.mockReturnValue({
id: "sc-default",
type: AccountType.SelfCustodial,
})
mockSelfCustodialState.mockReturnValue(selfCustodialReady)
const { result } = renderHook(() => useActiveWallet())
expect(result.current.status).toBe(ActiveWalletStatus.Ready)
expect(result.current.accountType).toBe(AccountType.SelfCustodial)
expect(result.current.isReady).toBe(true)
expect(result.current.isSelfCustodial).toBe(true)
expect(result.current.needsBackendAuth).toBe(false)
})
it("isSelfCustodial is false when self-custodial but unavailable", () => {
mockActiveAccount.mockReturnValue({
id: "sc-default",
type: AccountType.SelfCustodial,
})
mockSelfCustodialState.mockReturnValue(selfCustodialUnavailable)
const { result } = renderHook(() => useActiveWallet())
expect(result.current.isSelfCustodial).toBe(false)
})
it("returns unavailable custodial placeholder when no active account", () => {
mockActiveAccount.mockReturnValue(undefined)
const { result } = renderHook(() => useActiveWallet())
expect(result.current.status).toBe(ActiveWalletStatus.Unavailable)
expect(result.current.accountType).toBe(AccountType.Custodial)
expect(result.current.isReady).toBe(false)
expect(result.current.needsBackendAuth).toBe(true)
})
})