@@ -6,6 +6,7 @@ import type { ChainManager } from '@mycelium-sdk/core/tools/ChainManager';
66import type { ApiClient } from '@mycelium-sdk/core/tools/ApiClient' ;
77import type { SmartWallet } from '@mycelium-sdk/core/wallet/base/wallets/SmartWallet' ;
88import type {
9+ AddressBalance ,
910 ProtocolsSecurityConfig ,
1011 VaultInfo ,
1112 VaultBalance ,
@@ -63,6 +64,14 @@ describe('ProxyProtocol integration tests', () => {
6364 earned90dUpdatedAt : '2024-01-01T00:00:00Z' ,
6465 } ;
6566
67+ const createMockAddressBalance = ( perVault : VaultBalance [ ] ) : AddressBalance => ( {
68+ overall : {
69+ currentBalance : 1000 ,
70+ actualCurrentBalance : 1000 ,
71+ } ,
72+ perVault,
73+ } ) ;
74+
6675 beforeEach ( ( ) => {
6776 vi . clearAllMocks ( ) ;
6877 vi . resetAllMocks ( ) ;
@@ -380,14 +389,9 @@ describe('ProxyProtocol integration tests', () => {
380389 } ) ;
381390
382391 it ( 'should withdraw specified amount from vault' , async ( ) => {
383- const mockEarningBalances : VaultBalance [ ] = [
384- {
385- vaultInfo : mockVaultInfo ,
386- balance : mockProxyBalance ,
387- } ,
388- ] ;
389-
390- vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue ( mockEarningBalances ) ;
392+ vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue (
393+ createMockAddressBalance ( [ { vaultInfo : mockVaultInfo , balance : mockProxyBalance } ] ) ,
394+ ) ;
391395
392396 const mockOperationData : TransactionData = {
393397 to : mockVaultInfo . vaultAddress ,
@@ -419,14 +423,9 @@ describe('ProxyProtocol integration tests', () => {
419423 } ) ;
420424
421425 it ( 'should withdraw all balance when amount is not specified' , async ( ) => {
422- const mockEarningBalances : VaultBalance [ ] = [
423- {
424- vaultInfo : mockVaultInfo ,
425- balance : mockProxyBalance ,
426- } ,
427- ] ;
428-
429- vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue ( mockEarningBalances ) ;
426+ vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue (
427+ createMockAddressBalance ( [ { vaultInfo : mockVaultInfo , balance : mockProxyBalance } ] ) ,
428+ ) ;
430429
431430 const mockOperationData : TransactionData = {
432431 to : mockVaultInfo . vaultAddress ,
@@ -464,29 +463,21 @@ describe('ProxyProtocol integration tests', () => {
464463 } ) ;
465464
466465 it ( 'should throw error when vault balance not found in earning balances' , async ( ) => {
467- const mockEarningBalances : VaultBalance [ ] = [
468- {
469- vaultInfo : { ...mockVaultInfo , id : 'different-vault' } ,
470- balance : mockProxyBalance ,
471- } ,
472- ] ;
473-
474- vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue ( mockEarningBalances ) ;
466+ vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue (
467+ createMockAddressBalance ( [
468+ { vaultInfo : { ...mockVaultInfo , id : 'different-vault' } , balance : mockProxyBalance } ,
469+ ] ) ,
470+ ) ;
475471
476472 await expect ( proxyProtocol . withdraw ( mockVaultInfo , smartWallet , '500' ) ) . rejects . toThrow (
477473 'No earning balance found' ,
478474 ) ;
479475 } ) ;
480476
481477 it ( 'should throw error when API fails to return withdraw operations' , async ( ) => {
482- const mockEarningBalances : VaultBalance [ ] = [
483- {
484- vaultInfo : mockVaultInfo ,
485- balance : mockProxyBalance ,
486- } ,
487- ] ;
488-
489- vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue ( mockEarningBalances ) ;
478+ vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue (
479+ createMockAddressBalance ( [ { vaultInfo : mockVaultInfo , balance : mockProxyBalance } ] ) ,
480+ ) ;
490481
491482 ( apiClient . sendRequest as ReturnType < typeof vi . fn > ) . mockResolvedValue ( {
492483 success : false ,
@@ -499,14 +490,9 @@ describe('ProxyProtocol integration tests', () => {
499490 } ) ;
500491
501492 it ( 'should log operation after successful withdrawal' , async ( ) => {
502- const mockEarningBalances : VaultBalance [ ] = [
503- {
504- vaultInfo : mockVaultInfo ,
505- balance : mockProxyBalance ,
506- } ,
507- ] ;
508-
509- vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue ( mockEarningBalances ) ;
493+ vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue (
494+ createMockAddressBalance ( [ { vaultInfo : mockVaultInfo , balance : mockProxyBalance } ] ) ,
495+ ) ;
510496
511497 const mockOperationData : TransactionData = {
512498 to : mockVaultInfo . vaultAddress ,
@@ -541,14 +527,10 @@ describe('ProxyProtocol integration tests', () => {
541527 it ( 'should withdraw with paymaster token when paymaster token equals withdraw token' , async ( ) => {
542528 const paymasterToken = mockVaultInfo . tokenAddress ;
543529 const mockPublicClient = chainManager . getPublicClient ( 8453 ) ;
544- const mockEarningBalances : VaultBalance [ ] = [
545- {
546- vaultInfo : mockVaultInfo ,
547- balance : mockProxyBalance ,
548- } ,
549- ] ;
550530
551- vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue ( mockEarningBalances ) ;
531+ vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue (
532+ createMockAddressBalance ( [ { vaultInfo : mockVaultInfo , balance : mockProxyBalance } ] ) ,
533+ ) ;
552534
553535 // Mock balance check for gas reserve
554536 vi . mocked ( mockPublicClient . readContract as ReturnType < typeof vi . fn > ) . mockResolvedValue (
@@ -591,14 +573,10 @@ describe('ProxyProtocol integration tests', () => {
591573 it ( 'should throw error when wallet balance is insufficient for gas payment' , async ( ) => {
592574 const paymasterToken = mockVaultInfo . tokenAddress ;
593575 const mockPublicClient = chainManager . getPublicClient ( 8453 ) ;
594- const mockEarningBalances : VaultBalance [ ] = [
595- {
596- vaultInfo : mockVaultInfo ,
597- balance : mockProxyBalance ,
598- } ,
599- ] ;
600576
601- vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue ( mockEarningBalances ) ;
577+ vi . mocked ( smartWallet . getEarnBalances ) . mockResolvedValue (
578+ createMockAddressBalance ( [ { vaultInfo : mockVaultInfo , balance : mockProxyBalance } ] ) ,
579+ ) ;
602580
603581 // Mock balance that's too low for gas reserve
604582 vi . mocked ( mockPublicClient . readContract as ReturnType < typeof vi . fn > ) . mockResolvedValue (
@@ -618,16 +596,13 @@ describe('ProxyProtocol integration tests', () => {
618596
619597 it ( 'should fetch and return earning balances of a user by a provided address' , async ( ) => {
620598 const walletAddress = '0x1234567890123456789012345678901234567890' as Address ;
621- const mockBalances : VaultBalance [ ] = [
622- {
623- vaultInfo : mockVaultInfo ,
624- balance : mockProxyBalance ,
625- } ,
626- ] ;
599+ const mockAddressBalance = createMockAddressBalance ( [
600+ { vaultInfo : mockVaultInfo , balance : mockProxyBalance } ,
601+ ] ) ;
627602
628603 ( apiClient . sendRequest as ReturnType < typeof vi . fn > ) . mockResolvedValue ( {
629604 success : true ,
630- data : mockBalances ,
605+ data : mockAddressBalance ,
631606 } ) ;
632607
633608 const result = await proxyProtocol . getBalances ( walletAddress ) ;
@@ -638,21 +613,18 @@ describe('ProxyProtocol integration tests', () => {
638613 userAddress : walletAddress ,
639614 } ) ;
640615
641- expect ( result ) . toEqual ( mockBalances ) ;
616+ expect ( result ) . toEqual ( mockAddressBalance ) ;
642617 } ) ;
643618
644619 it ( 'should fetch balances for specific protocol ID' , async ( ) => {
645620 const walletAddress = '0x1234567890123456789012345678901234567890' as Address ;
646- const mockBalances : VaultBalance [ ] = [
647- {
648- vaultInfo : mockVaultInfo ,
649- balance : mockProxyBalance ,
650- } ,
651- ] ;
621+ const mockAddressBalance = createMockAddressBalance ( [
622+ { vaultInfo : mockVaultInfo , balance : mockProxyBalance } ,
623+ ] ) ;
652624
653625 ( apiClient . sendRequest as ReturnType < typeof vi . fn > ) . mockResolvedValue ( {
654626 success : true ,
655- data : mockBalances ,
627+ data : mockAddressBalance ,
656628 } ) ;
657629
658630 await proxyProtocol . getBalances ( walletAddress , 'spark' ) ;
0 commit comments