@@ -3,48 +3,135 @@ pragma solidity ^0.8.0;
33
44import {Ownable} from '../../src/contracts/dependencies/openzeppelin/contracts/Ownable.sol ' ;
55import {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 ' ;
87import {IMetadataReporter} from '../../src/deployments/interfaces/IMetadataReporter.sol ' ;
98import {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+ // }
0 commit comments