-
Notifications
You must be signed in to change notification settings - Fork 15
/
service.test.ts
97 lines (83 loc) · 3.37 KB
/
service.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import { Service } from './service';
import * as common from '@protocolink/common';
import { expect } from 'chai';
import { mainnetTokens } from './tokens';
import omit from 'lodash/omit';
describe('AaveV2 Service', function () {
const chainIds = [common.ChainId.mainnet];
context('Test getReserveTokens', () => {
chainIds.forEach((chainId) => {
it(common.toNetworkId(chainId), async () => {
const service = new Service(chainId);
const { reserveTokens, reserveMap } = await service.getReserveTokens();
expect(reserveTokens).to.have.lengthOf.above(0);
expect(Object.keys(reserveMap)).to.have.lengthOf.above(0);
});
});
});
context('Test getSupplyTokens', function () {
chainIds.forEach((chainId) => {
it(common.toNetworkId(chainId), async function () {
const service = new Service(chainId);
const supplyTokens = await service.getSupplyTokens();
expect(supplyTokens).to.have.lengthOf.above(0);
expect(supplyTokens.every(({ isSupplyEnabled }) => isSupplyEnabled)).to.be.true;
});
});
});
context('Test getBorrowTokens', function () {
chainIds.forEach((chainId) => {
it(common.toNetworkId(chainId), async function () {
const service = new Service(chainId);
const borrowTokens = await service.getBorrowTokens();
expect(borrowTokens).to.have.lengthOf.above(0);
expect(borrowTokens.every(({ isBorrowEnabled }) => isBorrowEnabled)).to.be.true;
});
});
});
context('Test toAToken', function () {
const service = new Service(common.ChainId.mainnet);
const testCases = [
{ asset: mainnetTokens.WETH, expected: mainnetTokens.aWETH },
{ asset: mainnetTokens.USDC, expected: mainnetTokens.aUSDC },
];
testCases.forEach(({ asset, expected }) => {
it(`${asset.symbol} to ${expected.symbol}`, async function () {
const aToken = await service.toAToken(asset);
expect(aToken.toObject()).to.deep.eq(expected.toObject());
});
});
});
context('Test toAsset', function () {
const service = new Service(common.ChainId.mainnet);
const testCases = [
{ aToken: mainnetTokens.aWETH, expected: mainnetTokens.WETH },
{ aToken: mainnetTokens.aUSDC, expected: mainnetTokens.USDC },
];
testCases.forEach(({ aToken, expected }) => {
it(`${aToken.symbol} to ${expected.symbol}`, async function () {
const asset = await service.toAsset(aToken);
expect(JSON.stringify(omit(asset.toObject(), 'logoUri'))).to.eq(
JSON.stringify(omit(expected.toObject(), 'logoUri'))
);
});
});
});
context('Test getFlashLoanConfiguration', function () {
const service = new Service(common.ChainId.mainnet);
const testCases = [
{ assets: [mainnetTokens.WETH, mainnetTokens.USDC] },
{ assets: [mainnetTokens.WBTC, mainnetTokens.USDT] },
];
testCases.forEach(({ assets }, i) => {
it(`case ${i + 1}`, async function () {
const flashLoanConfiguration = await service.getFlashLoanConfiguration(assets);
expect(flashLoanConfiguration).to.have.keys('feeBps', 'assetInfos');
expect(flashLoanConfiguration.assetInfos).to.have.lengthOf.above(0);
for (const assetInfo of flashLoanConfiguration.assetInfos) {
expect(assetInfo).to.have.keys('isActive', 'availableToBorrow');
}
});
});
});
});