@@ -3,59 +3,50 @@ import { describe, expect, it, vi, beforeEach } from 'vitest';
33import { useWalletManager } from '../../hooks/useWalletManager' ;
44import { StellarWalletsKit } from '@creit.tech/stellar-wallets-kit' ;
55
6- vi . mock ( '@creit.tech/stellar-wallets-kit' , ( ) => ( {
7- StellarWalletsKit : vi . fn ( function ( ) {
8- return { } ;
9- } ) ,
10- WalletNetwork : { TESTNET : 'TESTNET' , PUBLIC : 'PUBLIC' } ,
11- FreighterModule : vi . fn ( function ( ) {
12- return { } ;
13- } ) ,
14- xBullModule : vi . fn ( function ( ) {
15- return { } ;
16- } ) ,
17- LobstrModule : vi . fn ( function ( ) {
18- return { } ;
19- } ) ,
20- FREIGHTER_ID : 'freighter' ,
21- LOBSTR_ID : 'lobstr' ,
22- } ) ) ;
6+ const mockSetWallet = vi . fn ( ) ;
7+ const mockGetAddress = vi . fn ( ) ;
8+ const mockGetSupportedWallets = vi . fn ( ) ;
9+ const mockDisconnect = vi . fn ( ) ;
10+ const mockSignTransaction = vi . fn ( ) ;
11+
12+ vi . mock ( '@creit.tech/stellar-wallets-kit' , ( ) => {
13+ class MockStellarWalletsKit {
14+ setWallet = mockSetWallet ;
15+ getAddress = mockGetAddress ;
16+ getSupportedWallets = mockGetSupportedWallets ;
17+ disconnect = mockDisconnect ;
18+ signTransaction = mockSignTransaction ;
19+ }
20+
21+ return {
22+ StellarWalletsKit : MockStellarWalletsKit ,
23+ WalletNetwork : { TESTNET : 'TESTNET' , PUBLIC : 'PUBLIC' } ,
24+ FreighterModule : vi . fn ( ) ,
25+ xBullModule : vi . fn ( ) ,
26+ LobstrModule : vi . fn ( ) ,
27+ FREIGHTER_ID : 'freighter' ,
28+ LOBSTR_ID : 'lobstr' ,
29+ } ;
30+ } ) ;
31+
32+ const mockNotifyWalletEventHook = vi . fn ( ) ;
2333
2434vi . mock ( '../../hooks/useNotification' , ( ) => ( {
2535 useNotification : ( ) => ( {
26- notifyWalletEvent : vi . fn ( ) ,
36+ notifyWalletEvent : mockNotifyWalletEventHook ,
2737 } ) ,
2838} ) ) ;
2939
30- interface MockKitInstance {
31- setWallet : ReturnType < typeof vi . fn > ;
32- getAddress : ReturnType < typeof vi . fn > ;
33- getSupportedWallets : ReturnType < typeof vi . fn > ;
34- disconnect : ReturnType < typeof vi . fn > ;
35- signTransaction : ReturnType < typeof vi . fn > ;
36- }
37-
3840describe ( 'useWalletManager' , ( ) => {
39- let mockKitInstance : MockKitInstance ;
40-
4141 beforeEach ( ( ) => {
4242 vi . clearAllMocks ( ) ;
4343 localStorage . clear ( ) ;
44- mockKitInstance = {
45- setWallet : vi . fn ( ) ,
46- getAddress : vi . fn ( ) ,
47- getSupportedWallets : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
48- disconnect : vi . fn ( ) ,
49- signTransaction : vi . fn ( ) ,
50- } ;
51- vi . mocked ( StellarWalletsKit ) . mockImplementation (
52- ( ) => mockKitInstance as unknown as StellarWalletsKit
53- ) ;
44+ mockGetSupportedWallets . mockResolvedValue ( [ ] ) ;
5445 } ) ;
5546
5647 it ( 'initializes and attempts silent reconnect if wallet in localStorage' , async ( ) => {
5748 localStorage . setItem ( 'payd:last_wallet_name' , 'freighter' ) ;
58- mockKitInstance . getAddress . mockResolvedValue ( { address : 'G123' } ) ;
49+ mockGetAddress . mockResolvedValue ( { address : 'G123' } ) ;
5950
6051 const { result } = renderHook ( ( ) => useWalletManager ( ) ) ;
6152
@@ -73,11 +64,12 @@ describe('useWalletManager', () => {
7364 } ) ;
7465
7566 it ( 'handles manual connect sequence appropriately' , async ( ) => {
76- mockKitInstance . getSupportedWallets . mockResolvedValue ( [
67+ mockGetSupportedWallets . mockResolvedValue ( [
7768 { id : 'freighter' , name : 'Freighter' , isAvailable : true } ,
7869 ] ) ;
7970
8071 const { result } = renderHook ( ( ) => useWalletManager ( ) ) ;
72+ await waitFor ( ( ) => expect ( result . current . isInitialized ) . toBe ( true ) ) ;
8173
8274 await act ( async ( ) => {
8375 await result . current . connect ( ) ;
@@ -88,7 +80,7 @@ describe('useWalletManager', () => {
8880 } ) ;
8981 expect ( result . current . walletOptions . length ) . toBe ( 1 ) ;
9082
91- mockKitInstance . getAddress . mockResolvedValue ( { address : 'G456' } ) ;
83+ mockGetAddress . mockResolvedValue ( { address : 'G456' } ) ;
9284
9385 await act ( async ( ) => {
9486 await result . current . connectWithWallet ( 'freighter' ) ;
0 commit comments