UNPKG

@getclave/lifi-sdk

Version:

LI.FI Any-to-Any Cross-Chain-Swap SDK

121 lines (120 loc) 6.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const data_types_1 = require("@lifi/data-types"); const types_1 = require("@lifi/types"); const vitest_1 = require("vitest"); const balance = require("./balance"); const mockedGetTokenBalance = vitest_1.vi.spyOn(balance, 'getTokenBalance'); const mockedGetTokenBalances = vitest_1.vi.spyOn(balance, 'getTokenBalances'); const mockedGetTokenBalancesForChains = vitest_1.vi.spyOn(balance, 'getTokenBalancesByChain'); (0, vitest_1.describe)('Balance service tests', () => { (0, vitest_1.beforeEach)(() => { vitest_1.vi.clearAllMocks(); }); const SOME_TOKEN = { ...(0, data_types_1.findDefaultToken)(types_1.CoinKey.USDC, types_1.ChainId.DAI), priceUSD: '', }; const SOME_WALLET_ADDRESS = 'some wallet address'; (0, vitest_1.describe)('getTokenBalance', () => { (0, vitest_1.describe)('user input is invalid', () => { (0, vitest_1.it)('should throw Error because of missing walletAddress', async () => { await (0, vitest_1.expect)(balance.getTokenBalance('', SOME_TOKEN)).rejects.toThrow('Missing walletAddress.'); }); (0, vitest_1.it)('should throw Error because of invalid token', async () => { await (0, vitest_1.expect)(balance.getTokenBalance(SOME_WALLET_ADDRESS, { address: 'some wrong stuff', chainId: 'not a chain Id', })).rejects.toThrow('Invalid tokens passed.'); }); }); (0, vitest_1.describe)('user input is valid', () => { (0, vitest_1.it)('should call the balance service', async () => { const balanceResponse = { ...SOME_TOKEN, amount: 123n, blockNumber: 1n, }; mockedGetTokenBalance.mockReturnValue(Promise.resolve(balanceResponse)); const result = await balance.getTokenBalance(SOME_WALLET_ADDRESS, SOME_TOKEN); (0, vitest_1.expect)(mockedGetTokenBalance).toHaveBeenCalledTimes(1); (0, vitest_1.expect)(result).toEqual(balanceResponse); }); }); }); (0, vitest_1.describe)('getTokenBalances', () => { (0, vitest_1.describe)('user input is invalid', () => { (0, vitest_1.it)('should throw Error because of missing walletAddress', async () => { await (0, vitest_1.expect)(balance.getTokenBalances('', [SOME_TOKEN])).rejects.toThrow('Missing walletAddress.'); }); (0, vitest_1.it)('should throw Error because of an invalid token', async () => { await (0, vitest_1.expect)(balance.getTokenBalances(SOME_WALLET_ADDRESS, [ SOME_TOKEN, { not: 'a token' }, ])).rejects.toThrow('Invalid tokens passed.'); }); (0, vitest_1.it)('should return empty token list as it is', async () => { mockedGetTokenBalances.mockReturnValue(Promise.resolve([])); const result = await balance.getTokenBalances(SOME_WALLET_ADDRESS, []); (0, vitest_1.expect)(result).toEqual([]); (0, vitest_1.expect)(mockedGetTokenBalances).toHaveBeenCalledTimes(1); }); }); (0, vitest_1.describe)('user input is valid', () => { (0, vitest_1.it)('should call the balance service', async () => { const balanceResponse = [ { ...SOME_TOKEN, amount: 123n, blockNumber: 1n, }, ]; mockedGetTokenBalances.mockReturnValue(Promise.resolve(balanceResponse)); const result = await balance.getTokenBalances(SOME_WALLET_ADDRESS, [ SOME_TOKEN, ]); (0, vitest_1.expect)(mockedGetTokenBalances).toHaveBeenCalledTimes(1); (0, vitest_1.expect)(result).toEqual(balanceResponse); }); }); }); (0, vitest_1.describe)('getTokenBalancesForChains', () => { (0, vitest_1.describe)('user input is invalid', () => { (0, vitest_1.it)('should throw Error because of missing walletAddress', async () => { await (0, vitest_1.expect)(balance.getTokenBalancesByChain('', { [types_1.ChainId.DAI]: [SOME_TOKEN] })).rejects.toThrow('Missing walletAddress.'); }); (0, vitest_1.it)('should throw Error because of an invalid token', async () => { await (0, vitest_1.expect)(balance.getTokenBalancesByChain(SOME_WALLET_ADDRESS, { [types_1.ChainId.DAI]: [{ not: 'a token' }], })).rejects.toThrow('Invalid tokens passed.'); }); (0, vitest_1.it)('should return empty token list as it is', async () => { mockedGetTokenBalancesForChains.mockReturnValue(Promise.resolve([])); const result = await balance.getTokenBalancesByChain(SOME_WALLET_ADDRESS, { [types_1.ChainId.DAI]: [], }); (0, vitest_1.expect)(result).toEqual([]); (0, vitest_1.expect)(mockedGetTokenBalancesForChains).toHaveBeenCalledTimes(1); }); }); (0, vitest_1.describe)('user input is valid', () => { (0, vitest_1.it)('should call the balance service', async () => { const balanceResponse = { [types_1.ChainId.DAI]: [ { ...SOME_TOKEN, amount: 123n, blockNumber: 1n, }, ], }; mockedGetTokenBalancesForChains.mockReturnValue(Promise.resolve(balanceResponse)); const result = await balance.getTokenBalancesByChain(SOME_WALLET_ADDRESS, { [types_1.ChainId.DAI]: [SOME_TOKEN], }); (0, vitest_1.expect)(mockedGetTokenBalancesForChains).toHaveBeenCalledTimes(1); (0, vitest_1.expect)(result).toEqual(balanceResponse); }); }); }); });