Skip to content

Commit 7762f1f

Browse files
committed
feat: small test refactor
1 parent 1ea92ec commit 7762f1f

File tree

2 files changed

+186
-69
lines changed

2 files changed

+186
-69
lines changed

tests/deployments/HorizonDeployment.t.sol

Lines changed: 116 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,48 +3,135 @@ pragma solidity ^0.8.0;
33

44
import {Ownable} from '../../src/contracts/dependencies/openzeppelin/contracts/Ownable.sol';
55
import {Default} from '../../scripts/DeployAaveV3MarketBatched.sol';
6-
import {MarketReport, ContractsReport, MarketConfig} from '../../src/deployments/interfaces/IMarketReportTypes.sol';
7-
import {MarketReportUtils} from '../../src/deployments/contracts/utilities/MarketReportUtils.sol';
6+
import '../../src/deployments/interfaces/IMarketReportTypes.sol';
87
import {IMetadataReporter} from '../../src/deployments/interfaces/IMetadataReporter.sol';
98
import {Test} from 'forge-std/Test.sol';
109

11-
contract HorizonDeploymentTest is Test, Default {
12-
MarketReport internal marketReport;
13-
ContractsReport internal contracts;
10+
abstract contract HorizonDeploymentBaseTest is Test {
11+
IPoolAddressesProvider internal poolAddressesProvider;
12+
IPoolAddressesProviderRegistry internal poolAddressesProviderRegistry;
13+
IAaveOracle internal aaveOracle;
14+
IWrappedTokenGatewayV3 internal wrappedTokenGateway;
15+
IPool internal poolProxy;
16+
ICollector internal treasury;
17+
IRevenueSplitter internal revenueSplitter;
18+
IDefaultInterestRateStrategyV2 internal defaultInterestRateStrategy;
19+
IEmissionManager internal emissionManager;
20+
IRewardsController internal rewardsControllerProxy;
1421

15-
function setUp() public {
16-
vm.createSelectFork('mainnet');
22+
address internal poolAdmin;
23+
MarketConfig internal config;
1724

18-
string memory reportFilePath = run();
19-
IMetadataReporter metadataReporter = IMetadataReporter(
20-
_deployFromArtifacts('MetadataReporter.sol:MetadataReporter')
25+
struct HorizonDeployment {
26+
address poolAddressesProvider;
27+
address poolAddressesProviderRegistry;
28+
address aaveOracle;
29+
address wrappedTokenGateway;
30+
address poolProxy;
31+
address treasury;
32+
address revenueSplitter;
33+
address defaultInterestRateStrategy;
34+
address emissionManager;
35+
address rewardsControllerProxy;
36+
}
37+
38+
function initEnvironment(
39+
HorizonDeployment memory deployment,
40+
address poolAdmin_,
41+
MarketConfig memory config_
42+
) internal {
43+
poolAddressesProvider = IPoolAddressesProvider(deployment.poolAddressesProvider);
44+
poolAddressesProviderRegistry = IPoolAddressesProviderRegistry(
45+
deployment.poolAddressesProviderRegistry
46+
);
47+
aaveOracle = IAaveOracle(deployment.aaveOracle);
48+
wrappedTokenGateway = IWrappedTokenGatewayV3(deployment.wrappedTokenGateway);
49+
poolProxy = IPool(deployment.poolProxy);
50+
treasury = ICollector(deployment.treasury);
51+
revenueSplitter = IRevenueSplitter(deployment.revenueSplitter);
52+
defaultInterestRateStrategy = IDefaultInterestRateStrategyV2(
53+
deployment.defaultInterestRateStrategy
2154
);
22-
marketReport = metadataReporter.parseMarketReport(reportFilePath);
23-
contracts = MarketReportUtils.toContractsReport(marketReport);
55+
emissionManager = IEmissionManager(deployment.emissionManager);
56+
rewardsControllerProxy = IRewardsController(deployment.rewardsControllerProxy);
57+
poolAdmin = poolAdmin_;
58+
config = config_;
2459
}
2560

2661
function test_HorizonInput() public {
27-
(, MarketConfig memory config, , ) = _getMarketInput(address(0));
28-
assertEq(contracts.poolAddressesProvider.getMarketId(), config.marketId);
62+
assertEq(poolAddressesProvider.getMarketId(), config.marketId);
2963
assertEq(
30-
contracts.poolAddressesProviderRegistry.getAddressesProviderAddressById(config.providerId),
31-
marketReport.poolAddressesProvider
64+
poolAddressesProviderRegistry.getAddressesProviderAddressById(config.providerId),
65+
address(poolAddressesProvider)
3266
);
33-
assertEq(contracts.aaveOracle.BASE_CURRENCY_UNIT(), 10 ** config.oracleDecimals);
34-
assertEq(address(contracts.wrappedTokenGateway.WETH()), config.wrappedNativeToken);
35-
assertEq(contracts.poolProxy.FLASHLOAN_PREMIUM_TOTAL(), config.flashLoanPremiumTotal);
36-
assertEq(
37-
contracts.poolProxy.FLASHLOAN_PREMIUM_TO_PROTOCOL(),
38-
config.flashLoanPremiumToProtocol
39-
);
40-
assertEq(contracts.treasury.isFundsAdmin(AAVE_DAO_EXECUTOR), true);
41-
assertEq(contracts.revenueSplitter.RECIPIENT_A(), marketReport.treasury);
42-
assertEq(contracts.revenueSplitter.RECIPIENT_B(), config.treasuryPartner);
43-
assertEq(contracts.revenueSplitter.SPLIT_PERCENTAGE_RECIPIENT_A(), config.treasurySplitPercent);
67+
assertEq(aaveOracle.BASE_CURRENCY_UNIT(), 10 ** config.oracleDecimals);
68+
assertEq(address(wrappedTokenGateway.WETH()), config.wrappedNativeToken);
69+
assertEq(poolProxy.FLASHLOAN_PREMIUM_TOTAL(), config.flashLoanPremiumTotal);
70+
assertEq(poolProxy.FLASHLOAN_PREMIUM_TO_PROTOCOL(), config.flashLoanPremiumToProtocol);
71+
assertEq(treasury.isFundsAdmin(poolAdmin), true);
72+
assertEq(revenueSplitter.RECIPIENT_A(), address(treasury));
73+
assertEq(revenueSplitter.RECIPIENT_B(), config.treasuryPartner);
74+
assertEq(revenueSplitter.SPLIT_PERCENTAGE_RECIPIENT_A(), config.treasurySplitPercent);
4475
}
4576

4677
function test_RewardsController() public {
47-
assertEq(contracts.rewardsControllerProxy.EMISSION_MANAGER(), marketReport.emissionManager);
48-
assertEq(Ownable(address(contracts.emissionManager)).owner(), AAVE_DAO_EXECUTOR);
78+
assertEq(rewardsControllerProxy.EMISSION_MANAGER(), address(emissionManager));
79+
assertEq(Ownable(address(emissionManager)).owner(), poolAdmin);
80+
}
81+
}
82+
83+
contract HorizonDeploymentMainnetTest is HorizonDeploymentBaseTest {
84+
function setUp() public virtual {
85+
vm.createSelectFork('mainnet');
4986
}
5087
}
88+
89+
contract HorizonDeploymentTest is HorizonDeploymentMainnetTest, Default {
90+
function setUp() public virtual override {
91+
super.setUp();
92+
93+
string memory reportFilePath = run();
94+
IMetadataReporter metadataReporter = IMetadataReporter(
95+
_deployFromArtifacts('MetadataReporter.sol:MetadataReporter')
96+
);
97+
MarketReport memory marketReport = metadataReporter.parseMarketReport(reportFilePath);
98+
99+
HorizonDeployment memory deployment = HorizonDeployment({
100+
poolAddressesProvider: marketReport.poolAddressesProvider,
101+
poolAddressesProviderRegistry: marketReport.poolAddressesProviderRegistry,
102+
aaveOracle: marketReport.aaveOracle,
103+
wrappedTokenGateway: marketReport.wrappedTokenGateway,
104+
poolProxy: marketReport.poolProxy,
105+
treasury: marketReport.treasury,
106+
revenueSplitter: marketReport.revenueSplitter,
107+
defaultInterestRateStrategy: marketReport.defaultInterestRateStrategy,
108+
emissionManager: marketReport.emissionManager,
109+
rewardsControllerProxy: marketReport.rewardsControllerProxy
110+
});
111+
112+
(Roles memory roles, MarketConfig memory config, , ) = _getMarketInput(address(0));
113+
initEnvironment(deployment, roles.poolAdmin, config);
114+
}
115+
}
116+
117+
// contract HorizonDeploymentForkTest is HorizonDeploymentMainnetTest, HorizonInput {
118+
// function setUp() public {
119+
// super.setUp();
120+
121+
// HorizonDeployment memory deployment = HorizonDeployment({
122+
// poolAddressesProvider: , // todo
123+
// poolAddressesProviderRegistry: , // todo
124+
// aaveOracle: , // todo
125+
// wrappedTokenGateway: , // todo
126+
// poolProxy: , // todo
127+
// treasury: , // todo
128+
// revenueSplitter: , // todo
129+
// defaultInterestRateStrategy: , // todo
130+
// emissionManager: , // todo
131+
// rewardsController: , // todo
132+
// });
133+
134+
// (Roles memory roles, MarketConfig memory config, ,) = _getMarketInput(address(0));
135+
// initEnvironment(deployment, roles.poolAdmin, config);
136+
// }
137+
// }

tests/deployments/HorizonPhaseOneListing.t.sol

Lines changed: 70 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,8 @@ pragma solidity ^0.8.0;
33

44
import {Test, Vm} from 'forge-std/Test.sol';
55
import {DataTypes} from '../../src/contracts/protocol/libraries/types/DataTypes.sol';
6-
import {MarketReport, ContractsReport} from '../../src/deployments/interfaces/IMarketReportTypes.sol';
6+
import {MarketReport} from '../../src/deployments/interfaces/IMarketReportTypes.sol';
77
import {Default} from '../../scripts/DeployAaveV3MarketBatched.sol';
8-
import {MarketReportUtils} from '../../src/deployments/contracts/utilities/MarketReportUtils.sol';
98
import {DeployHorizonPhaseOnePayload} from '../../scripts/misc/DeployHorizonPhaseOnePayload.sol';
109
import {ReserveConfiguration} from '../../src/contracts/protocol/libraries/configuration/ReserveConfiguration.sol';
1110
import {IMetadataReporter} from '../../src/deployments/interfaces/IMetadataReporter.sol';
@@ -220,7 +219,7 @@ abstract contract HorizonListingBaseTest is Test {
220219
}
221220
}
222221

223-
contract HorizonListingMainnetTest is HorizonListingBaseTest {
222+
abstract contract HorizonListingMainnetTest is HorizonListingBaseTest {
224223
address internal constant ADVANCED_MULTISIG = 0x4444dE8a4AA3401a3AEC584de87B0f21E3e601CA;
225224
address internal constant LISTING_EXECUTOR = 0xf046907a4371F7F027113bf751F3347459a08b71;
226225

@@ -424,27 +423,73 @@ contract HorizonListingMainnetTest is HorizonListingBaseTest {
424423

425424
function setUp() public virtual {
426425
vm.createSelectFork('mainnet');
426+
(
427+
address _pool,
428+
address _revenueSplitter,
429+
address _defaultInterestRateStrategy,
430+
address _aToken,
431+
address _rwaAToken,
432+
address _variableDebtToken
433+
) = loadDeployment();
434+
initEnvironment(
435+
_pool,
436+
_revenueSplitter,
437+
_defaultInterestRateStrategy,
438+
_aToken,
439+
_rwaAToken,
440+
_variableDebtToken
441+
);
427442
}
428443

444+
function loadDeployment()
445+
internal
446+
virtual
447+
returns (address, address, address, address, address, address);
448+
429449
function getListingExecutor() internal pure override returns (address) {
430450
return LISTING_EXECUTOR;
431451
}
432-
}
433452

434-
contract HorizonPhaseOneListingTest is HorizonListingMainnetTest, Default {
435-
MarketReport internal marketReport;
436-
ContractsReport internal contracts;
453+
function test_listingExecutor() public {
454+
check_listingExecutor();
455+
}
437456

438-
function setUp() public override {
439-
super.setUp();
457+
function test_listing_GHO() public {
458+
test_listing(GHO_ADDRESS, GHO_TOKEN_LISTING_PARAMS);
459+
}
460+
461+
function test_listing_USDC() public {
462+
test_listing(USDC_ADDRESS, USDC_TOKEN_LISTING_PARAMS);
463+
}
440464

465+
function test_listing_RLUSD() public {
466+
test_listing(RLUSD_ADDRESS, RLUSD_TOKEN_LISTING_PARAMS);
467+
}
468+
469+
function test_listing_USTB() public {
470+
test_listing(USTB_ADDRESS, USTB_TOKEN_LISTING_PARAMS);
471+
}
472+
473+
function test_listing_USCC() public {
474+
test_listing(USCC_ADDRESS, USCC_TOKEN_LISTING_PARAMS);
475+
}
476+
477+
function test_listing_USYC() public {
478+
test_listing(USYC_ADDRESS, USYC_TOKEN_LISTING_PARAMS);
479+
}
480+
}
481+
contract HorizonPhaseOneListingTest is HorizonListingMainnetTest, Default {
482+
function loadDeployment()
483+
internal
484+
override
485+
returns (address, address, address, address, address, address)
486+
{
441487
string memory reportFilePath = run();
442488

443489
IMetadataReporter metadataReporter = IMetadataReporter(
444490
_deployFromArtifacts('MetadataReporter.sol:MetadataReporter')
445491
);
446-
marketReport = metadataReporter.parseMarketReport(reportFilePath);
447-
contracts = MarketReportUtils.toContractsReport(marketReport);
492+
MarketReport memory marketReport = metadataReporter.parseMarketReport(reportFilePath);
448493

449494
address horizonPhaseOneListing = new DeployHorizonPhaseOnePayload().run(reportFilePath);
450495

@@ -461,7 +506,7 @@ contract HorizonPhaseOneListingTest is HorizonListingMainnetTest, Default {
461506
);
462507
require(success, 'Failed to execute transaction');
463508

464-
initEnvironment(
509+
return (
465510
marketReport.poolProxy,
466511
marketReport.revenueSplitter,
467512
marketReport.defaultInterestRateStrategy,
@@ -470,32 +515,17 @@ contract HorizonPhaseOneListingTest is HorizonListingMainnetTest, Default {
470515
marketReport.variableDebtToken
471516
);
472517
}
473-
474-
function test_listingExecutor() public {
475-
check_listingExecutor();
476-
}
477-
478-
function test_listing_GHO() public {
479-
test_listing(GHO_ADDRESS, GHO_TOKEN_LISTING_PARAMS);
480-
}
481-
482-
function test_listing_USDC() public {
483-
test_listing(USDC_ADDRESS, USDC_TOKEN_LISTING_PARAMS);
484-
}
485-
486-
function test_listing_RLUSD() public {
487-
test_listing(RLUSD_ADDRESS, RLUSD_TOKEN_LISTING_PARAMS);
488-
}
489-
490-
function test_listing_USTB() public {
491-
test_listing(USTB_ADDRESS, USTB_TOKEN_LISTING_PARAMS);
492-
}
493-
494-
function test_listing_USCC() public {
495-
test_listing(USCC_ADDRESS, USCC_TOKEN_LISTING_PARAMS);
496-
}
497-
498-
function test_listing_USYC() public {
499-
test_listing(USYC_ADDRESS, USYC_TOKEN_LISTING_PARAMS);
500-
}
501518
}
519+
520+
// contract HorizonListingForkTest is HorizonListingMainnetTest {
521+
// function loadDeployment() internal override returns (address, address, address, address, address, address) {
522+
// address _pool = ; // todo
523+
// address _revenueSplitter = ; // todo
524+
// address _defaultInterestRateStrategy = ; // todo
525+
// address _aToken = ; // todo
526+
// address _rwaAToken = ; // todo
527+
// address _variableDebtToken = ; // todo
528+
529+
// return (_pool, _revenueSplitter, _defaultInterestRateStrategy, _aToken, _rwaAToken, _variableDebtToken);
530+
// }
531+
// }

0 commit comments

Comments
 (0)