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