UNPKG

@getclave/lifi-sdk

Version:

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

79 lines (78 loc) 4.45 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 api_1 = require("../../services/api"); const setup_1 = require("../../tests/setup"); const getEVMBalance_1 = require("./getEVMBalance"); const defaultWalletAddress = '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'; const retryTimes = 2; const timeout = 10000; (0, vitest_1.beforeAll)(setup_1.setupTestEnvironment); (0, vitest_1.describe)('getBalances integration tests', () => { const loadAndCompareTokenAmounts = async (walletAddress, tokens) => { const tokenBalances = await (0, getEVMBalance_1.getEVMBalance)(walletAddress, tokens); (0, vitest_1.expect)(tokenBalances.length).toEqual(tokens.length); for (let i = 0; i < tokens.length; i++) { const token = tokens[i]; const tokenBalance = tokenBalances[i]; // contain token properties (0, vitest_1.expect)(token.address).toEqual(tokenBalance.address); // set amount (0, vitest_1.expect)(tokenBalance.amount).toBeDefined(); (0, vitest_1.expect)(tokenBalance.amount).toBeGreaterThanOrEqual(0); // contain block number (0, vitest_1.expect)(tokenBalance.blockNumber).toBeDefined(); (0, vitest_1.expect)(tokenBalance.blockNumber).toBeGreaterThan(0); } }; (0, vitest_1.it)('should work for ERC20 on POL', { retry: retryTimes, timeout }, async () => { const walletAddress = defaultWalletAddress; const tokens = [ (0, data_types_1.findDefaultToken)(types_1.CoinKey.USDC, types_1.ChainId.POL), (0, data_types_1.findDefaultToken)(types_1.CoinKey.USDT, types_1.ChainId.POL), ]; await loadAndCompareTokenAmounts(walletAddress, tokens); }); (0, vitest_1.it)('should work for MATIC on POL', { retry: retryTimes, timeout }, async () => { const walletAddress = defaultWalletAddress; const tokens = [ (0, data_types_1.findDefaultToken)(types_1.CoinKey.POL, types_1.ChainId.POL), (0, data_types_1.findDefaultToken)(types_1.CoinKey.DAI, types_1.ChainId.POL), ]; await loadAndCompareTokenAmounts(walletAddress, tokens); }); (0, vitest_1.it)('should return even with invalid data on POL', { retry: retryTimes, timeout }, async () => { const walletAddress = defaultWalletAddress; const invalidToken = (0, data_types_1.findDefaultToken)(types_1.CoinKey.POL, types_1.ChainId.POL); invalidToken.address = '0x2170ed0880ac9a755fd29b2688956bd959f933f8'; const tokens = [(0, data_types_1.findDefaultToken)(types_1.CoinKey.USDC, types_1.ChainId.POL), invalidToken]; const tokenBalances = await (0, getEVMBalance_1.getEVMBalance)(walletAddress, tokens); (0, vitest_1.expect)(tokenBalances.length).toBe(2); // invalid tokens should be returned with balance 0 const invalidBalance = tokenBalances.find((token) => token.address === invalidToken.address); (0, vitest_1.expect)(invalidBalance).toBeDefined(); (0, vitest_1.expect)(invalidBalance.amount).toBeUndefined(); }); (0, vitest_1.it)('should fallback to a direct call if only one token is requested', { retry: retryTimes, timeout }, async () => { const walletAddress = defaultWalletAddress; const tokens = [(0, data_types_1.findDefaultToken)(types_1.CoinKey.DAI, types_1.ChainId.BSC)]; await loadAndCompareTokenAmounts(walletAddress, tokens); }); (0, vitest_1.it)('should handle empty lists', { retry: retryTimes, timeout }, async () => { const walletAddress = defaultWalletAddress; const tokens = []; await loadAndCompareTokenAmounts(walletAddress, tokens); }); (0, vitest_1.it)('should handle token lists with more than 100 tokens', { retry: retryTimes, timeout }, async () => { const walletAddress = defaultWalletAddress; const { tokens } = await (0, api_1.getTokens)({ chains: [types_1.ChainId.OPT], }); (0, vitest_1.expect)(tokens[types_1.ChainId.OPT]?.length).toBeGreaterThan(100); if (tokens[types_1.ChainId.OPT]?.length) { await loadAndCompareTokenAmounts(walletAddress, tokens[types_1.ChainId.OPT].slice(0, 150)); // chunk limit is 100 } }); });