@getclave/lifi-sdk
Version:
LI.FI Any-to-Any Cross-Chain-Swap SDK
70 lines (69 loc) • 3.87 kB
JavaScript
"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);
}
});
});