/ test / finance / CreditToken / Base.t.sol
Base.t.sol
  1  pragma solidity >=0.6.0;
  2  
  3  import "truffle/Assert.sol";
  4  //import "truffle/DeployedAddresses.sol";
  5  import "../../../contracts/deployment/Deployer.sol";
  6  import "../../../contracts/finance/credit/CreditProvider.sol";
  7  import "../../../contracts/finance/OptionsExchange.sol";
  8  import "../../../contracts/finance/collateral/CollateralManager.sol";
  9  import "../../../contracts/finance/credit/CreditToken.sol";
 10  import "../../../contracts/finance/UnderlyingVault.sol";
 11  import "../../../contracts/finance/Incentivized.sol";
 12  import "../../../contracts/finance/OptionTokenFactory.sol";
 13  import "../../../contracts/finance/PendingExposureRouter.sol";
 14  
 15  import "../../../contracts/feeds/DEXFeedFactory.sol";
 16  import "../../../contracts/pools/LinearLiquidityPoolFactory.sol";
 17  import "../../../contracts/pools/LinearAnySlopeInterpolator.sol";
 18  
 19  import "../../../contracts/finance/credit/UnderlyingCreditProviderFactory.sol";
 20  import "../../../contracts/finance/credit/UnderlyingCreditTokenFactory.sol";
 21  import "../../../contracts/governance/ProtocolSettings.sol";
 22  import "../../../contracts/governance/ProposalsManager.sol";
 23  import "../../../contracts/governance/GovToken.sol";
 24  import "../../common/actors/CreditHolder.t.sol";
 25  import "../../common/mock/ERC20Mock.t.sol";
 26  import "../../common/mock/EthFeedMock.t.sol";
 27  import "../../common/mock/TimeProviderMock.t.sol";
 28  import "../../common/mock/UniswapV2RouterMock.t.sol";
 29  
 30  contract Base {
 31      
 32      TimeProviderMock time;
 33      ProtocolSettings settings;
 34      CreditProvider creditProvider;
 35      CreditToken creditToken;
 36      ERC20Mock erc20;
 37      
 38      CreditHolder issuer;
 39      CreditHolder alpha;
 40      CreditHolder beta;
 41      
 42      uint cBase = 1e8; // comparison base
 43      uint timeBase = 1 hours;
 44  
 45  
 46      /*
 47  
 48      await d.setContractAddress("ProtocolSettings", settings.address);
 49        await d.setContractAddress("TimeProvider", timeProvider.address);
 50        await d.setContractAddress("CreditProvider", creditProvider.address);
 51        await d.addAlias("CreditIssuer", "CreditProvider");
 52        await d.setContractAddress("CreditToken", ct.address);
 53        
 54        await d.setContractAddress("YieldTracker", yt.address);
 55        await d.setContractAddress("MetavaultHedgingManagerFactory", mvHedgingManagerFactory.address);
 56        await d.setContractAddress("D8xHedgingManagerFactory", d8xHedgingManagerFactory.address);
 57        await d.setContractAddress("ProtocolReader", pr.address);
 58        await d.setContractAddress("PendingExposureRouter", per.address);
 59  
 60        */
 61  
 62      function setUp() public {
 63      //function beforeEachDeploy() public {
 64          Deployer deployer = new Deployer(address(this));
 65  
 66          //deployer.reset();
 67          //if (!deployer.hasKey("CreditIssuer")) {
 68          deployer.setContractAddress("CreditIssuer", address(new CreditHolder()));
 69          //}
 70          
 71          deployer.setContractAddress("ProtocolSettings", address(new ProtocolSettings(true)));
 72          deployer.setContractAddress("TimeProvider", address(new TimeProviderMock()));
 73          deployer.setContractAddress("CreditProvider", address(new CreditProvider()));
 74          deployer.setContractAddress("CreditToken", address(new CreditToken()));
 75          
 76          deployer.setContractAddress("ProposalsManager", address(new ProposalsManager()));
 77          deployer.setContractAddress("GovToken", address(new GovToken(address(0))));
 78          deployer.setContractAddress("CollateralManager", address(new CollateralManager()));
 79          deployer.setContractAddress("OptionsExchange", address(new OptionsExchange()));
 80          deployer.setContractAddress("OptionTokenFactory", address(new OptionTokenFactory()));
 81          deployer.setContractAddress("UnderlyingVault", address(new UnderlyingVault()));
 82          deployer.setContractAddress("Incentivized", address(new Incentivized()));
 83          deployer.setContractAddress("UnderlyingCreditProviderFactory", address(new UnderlyingCreditProviderFactory()));
 84          deployer.setContractAddress("UnderlyingCreditTokenFactory", address(new UnderlyingCreditTokenFactory()));
 85          deployer.setContractAddress("LinearLiquidityPoolFactory", address(new LinearLiquidityPoolFactory()));
 86          deployer.setContractAddress("DEXFeedFactory", address(new DEXFeedFactory()));
 87          deployer.setContractAddress("Interpolator", address(new LinearAnySlopeInterpolator()));
 88          deployer.setContractAddress("PendingExposureRouter", address(new PendingExposureRouter()));
 89  
 90  
 91  
 92          deployer.setContractAddress("StablecoinA", address(new ERC20Mock(18)), false);
 93  
 94  
 95          deployer.deploy(address(this));
 96          
 97          time = TimeProviderMock(deployer.getContractAddress("TimeProvider"));
 98          settings = ProtocolSettings(deployer.getContractAddress("ProtocolSettings"));
 99          creditProvider = CreditProvider(deployer.getContractAddress("CreditProvider"));
100          creditToken = CreditToken(deployer.getContractAddress("CreditToken"));
101          erc20 = ERC20Mock(deployer.getContractAddress("StablecoinA"));
102          
103          erc20.reset();
104  
105          settings.setAllowedToken(address(erc20), 1, 1);
106          
107          issuer = CreditHolder(deployer.getContractAddress("CreditIssuer"));
108          alpha = new CreditHolder();
109          beta = new CreditHolder();
110  
111          issuer.setCreditToken(address(creditToken));
112          alpha.setCreditToken(address(creditToken));
113          beta.setCreditToken(address(creditToken));
114  
115          time.setTimeOffset(0);
116      }
117  
118      function addErc20Stock(uint value) internal {
119          
120          erc20.issue(address(this), value);
121          erc20.approve(address(creditProvider), value);
122          creditProvider.depositTokens(address(this), address(erc20), value);
123      }
124  }