UNPKG

@getclave/lifi-sdk

Version:

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

70 lines (69 loc) 3.87 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 getAllowance_1 = require("./getAllowance"); const publicClient_1 = require("./publicClient"); const defaultWalletAddress = '0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0'; const defaultSpenderAddress = '0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE'; const memeToken = { name: 'Memecoin', symbol: 'MEM', decimals: 18, address: '0x42dbbd5ae373fea2fc320f62d44c058522bb3758', chainId: 137, priceUSD: '', }; const defaultMemeAllowance = 123000000000000000000n; const retryTimes = 2; const timeout = 10000; (0, vitest_1.beforeAll)(setup_1.setupTestEnvironment); (0, vitest_1.describe)('allowance integration tests', { retry: retryTimes, timeout }, () => { (0, vitest_1.it)('should work for ERC20 on POL', async () => { const client = await (0, publicClient_1.getPublicClient)(memeToken.chainId); const allowance = await (0, getAllowance_1.getAllowance)(client, memeToken.address, defaultWalletAddress, defaultSpenderAddress); (0, vitest_1.expect)(allowance).toBeGreaterThanOrEqual(defaultMemeAllowance); }); (0, vitest_1.it)('should work for MATIC on POL', { retry: retryTimes, timeout }, async () => { const token = (0, data_types_1.findDefaultToken)(types_1.CoinKey.POL, types_1.ChainId.POL); const client = await (0, publicClient_1.getPublicClient)(token.chainId); const allowance = await (0, getAllowance_1.getAllowance)(client, token.address, defaultWalletAddress, defaultSpenderAddress); (0, vitest_1.expect)(allowance).toBe(0n); }); (0, vitest_1.it)('should return even with invalid data on POL', { retry: retryTimes, timeout }, async () => { const invalidToken = (0, data_types_1.findDefaultToken)(types_1.CoinKey.POL, types_1.ChainId.POL); invalidToken.address = '0x2170ed0880ac9a755fd29b2688956bd959f933f8'; const client = await (0, publicClient_1.getPublicClient)(invalidToken.chainId); const allowance = await (0, getAllowance_1.getAllowance)(client, invalidToken.address, defaultWalletAddress, defaultSpenderAddress); (0, vitest_1.expect)(allowance).toBe(0n); }); (0, vitest_1.it)('should handle empty lists with multicall', { retry: retryTimes, timeout }, async () => { const client = await (0, publicClient_1.getPublicClient)(137); const allowances = await (0, getAllowance_1.getAllowanceMulticall)(client, 137, [], defaultWalletAddress); (0, vitest_1.expect)(allowances.length).toBe(0); }); (0, vitest_1.it)('should handle token lists with more than 10 tokens', { retry: retryTimes, timeout }, async () => { const { tokens } = await (0, api_1.getTokens)({ chains: [types_1.ChainId.POL], }); const filteredTokens = tokens[types_1.ChainId.POL]; filteredTokens.unshift(memeToken); (0, vitest_1.expect)(filteredTokens?.length).toBeGreaterThanOrEqual(10); const tokenSpenders = filteredTokens?.map((token) => ({ token, spenderAddress: defaultSpenderAddress, })); if (tokenSpenders?.length) { const tokens = await (0, getAllowance_1.getTokenAllowanceMulticall)(defaultWalletAddress, tokenSpenders.slice(0, 10)); for (let i = 0; i < tokens.length; i++) { const token = tokens[i]; (0, vitest_1.expect)(token.allowance).toBeDefined(); } const token = tokens.find((token) => token.allowance); (0, vitest_1.expect)(token?.allowance).toBeGreaterThanOrEqual(defaultMemeAllowance); } }); });