import { describe, it, expect, vi } from 'vitest'; import { fetchBalanceCall } from './fetch-balance'; import { PublicActions } from 'viem'; describe('fetchBalanceCall', () => { it('should fetch balance and allowance correctly', async () => { const mockClient: PublicActions = { multicall: vi.fn(async ({}) => { return [ { result: '1000', status: 'success' }, // Mock balanceOf result { result: '0', status: 'success' }, // Mock allowance result ]; }), } as unknown as PublicActions; const chainId = 1; const token = '0xTokenAddress'; const user = '0xUserAddress'; const result = await fetchBalanceCall(mockClient, chainId, token, user); expect(result.balance).toBe(BigInt(1000)); expect(result.allowance).toBe(BigInt(0)); }); it('should return undefined for balance and allowance if results are null', async () => { const mockClient: PublicActions = { multicall: vi.fn(async ({}) => { return [ { result: null, status: 'error' }, // Mock balanceOf result { result: null, status: 'error' }, // Mock allowance result ]; }), } as unknown as PublicActions; const chainId = 1; const token = '0xTokenAddress'; const user = '0xUserAddress'; const result = await fetchBalanceCall(mockClient, chainId, token, user); expect(result.balance).toBeUndefined(); expect(result.allowance).toBeUndefined(); }); });