generated from bgd-labs/bgd-forge-template
-
Notifications
You must be signed in to change notification settings - Fork 31
/
Copy pathAaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229.t.sol
130 lines (110 loc) · 4.41 KB
/
AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229.t.sol
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import {IERC20} from 'solidity-utils/contracts/oz-common/interfaces/IERC20.sol';
import {MiscPolygon} from 'aave-address-book/MiscPolygon.sol';
import {AaveV2Polygon, AaveV2PolygonAssets} from 'aave-address-book/AaveV2Polygon.sol';
import {AaveV3Polygon, AaveV3PolygonAssets} from 'aave-address-book/AaveV3Polygon.sol';
import {ProtocolV3TestBase} from 'aave-helpers/ProtocolV3TestBase.sol';
import {AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229} from './AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229.sol';
/**
* @dev Test for AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229
* command: make test-contract filter=AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229
*/
contract AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229_Test is
ProtocolV3TestBase
{
event Bridge(address token, uint256 amount);
AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229 internal proposal;
function setUp() public {
vm.createSelectFork(vm.rpcUrl('polygon'), 52745691);
proposal = new AaveV3Polygon_TreasuryManagementGSMFundingRWAStrategyPreparationsPart1_20231229();
}
function test_execute() public {
assertGt(
IERC20(AaveV2PolygonAssets.USDC_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
0,
'aUSDC not greater than 0'
);
assertGt(
IERC20(AaveV2PolygonAssets.USDT_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
0,
'aUSDT not greater than 0'
);
assertGt(
IERC20(AaveV2PolygonAssets.DAI_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
0,
'aDAI not greater than 0'
);
assertGt(
IERC20(AaveV3PolygonAssets.USDC_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
0,
'amPolUSDC not greater than 0'
);
assertGt(
IERC20(AaveV3PolygonAssets.USDT_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
0,
'amPolUSDT not greater than 0'
);
uint256 balanceADaiV3Before = IERC20(AaveV3PolygonAssets.DAI_A_TOKEN).balanceOf(
address(AaveV3Polygon.COLLECTOR)
);
assertGt(balanceADaiV3Before, 0, 'amPolDAI not greater than 0');
vm.expectEmit(true, true, true, true, MiscPolygon.AAVE_POL_ETH_BRIDGE);
emit Bridge(AaveV3PolygonAssets.USDC_UNDERLYING, 3057435069425); // $3,057,435.069425
vm.expectEmit(true, true, true, true, MiscPolygon.AAVE_POL_ETH_BRIDGE);
emit Bridge(AaveV3PolygonAssets.DAI_UNDERLYING, 1097534794305085978960689); // $1,097,534.794305085978960689
vm.expectEmit(true, true, true, true, MiscPolygon.AAVE_POL_ETH_BRIDGE);
emit Bridge(AaveV3PolygonAssets.USDT_UNDERLYING, 869442691714); // $869,442.691714
executePayload(vm, address(proposal));
assertApproxEqAbs(
IERC20(AaveV2PolygonAssets.USDC_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
10e6,
20e6,
'aUSDC token greater than 0'
);
assertApproxEqAbs(
IERC20(AaveV2PolygonAssets.USDT_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
10e6,
5e6,
'aUSDT token greater than 0'
);
assertApproxEqAbs(
IERC20(AaveV2PolygonAssets.DAI_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
10e18,
5 ether,
'aDAI token greater than 0'
);
assertEq(
IERC20(AaveV3PolygonAssets.USDC_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
10e6,
'amPolUSDC token greater than 0'
);
assertApproxEqAbs(
IERC20(AaveV3PolygonAssets.USDT_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
10e6,
1,
'amPolUSDT token greater than 0'
);
assertApproxEqAbs(
IERC20(AaveV3PolygonAssets.DAI_A_TOKEN).balanceOf(address(AaveV3Polygon.COLLECTOR)),
balanceADaiV3Before - proposal.AAVE_V3_DAI_TO_WITHDRAW(),
1,
'amPolDAI difference greater than 1'
);
assertEq(
IERC20(AaveV3PolygonAssets.USDC_UNDERLYING).balanceOf(address(AaveV3Polygon.COLLECTOR)),
0,
'USDC token greater than 0'
);
assertEq(
IERC20(AaveV3PolygonAssets.USDT_UNDERLYING).balanceOf(address(AaveV3Polygon.COLLECTOR)),
0,
'USDT token greater than 0'
);
assertEq(
IERC20(AaveV3PolygonAssets.DAI_UNDERLYING).balanceOf(address(AaveV3Polygon.COLLECTOR)),
0,
'DAI token greater than 0'
);
}
}