mirror of
				https://github.com/Instadapp/aave-protocol-v2.git
				synced 2024-07-29 21:47:30 +00:00 
			
		
		
		
	- Added extra test of repayWithCollateral() on self-liquidation.
This commit is contained in:
		
							parent
							
								
									3aa0dbc570
								
							
						
					
					
						commit
						56ddeceb94
					
				| 
						 | 
				
			
			@ -247,7 +247,7 @@ makeSuite('LendingPool. repayWithCollateral()', (testEnv: TestEnv) => {
 | 
			
		|||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('User tries to repay with his collateral a currency he havent borrow', async () => {
 | 
			
		||||
  it('Revert expected. User 3 tries to repay with his collateral a currency he havent borrow', async () => {
 | 
			
		||||
    const {pool, weth, dai, users, mockSwapAdapter} = testEnv;
 | 
			
		||||
    const user = users[2];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -267,7 +267,7 @@ makeSuite('LendingPool. repayWithCollateral()', (testEnv: TestEnv) => {
 | 
			
		|||
    ).to.be.revertedWith('revert CURRRENCY_NOT_BORROWED');
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  it('User tries to repay with his collateral all his variable debt and part of the stable', async () => {
 | 
			
		||||
  it('User 3 tries to repay with his collateral all his variable debt and part of the stable', async () => {
 | 
			
		||||
    const {pool, weth, usdc, users, mockSwapAdapter, oracle} = testEnv;
 | 
			
		||||
    const user = users[2];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -402,8 +402,7 @@ makeSuite('LendingPool. repayWithCollateral()', (testEnv: TestEnv) => {
 | 
			
		|||
    );
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  // WIP
 | 
			
		||||
  it('User tries to repay a bigger amount that what can be swapped of a particular collateral, repaying only the maximum allowed by that collateral', async () => {
 | 
			
		||||
  it('User 4 tries to repay a bigger amount that what can be swapped of a particular collateral, repaying only the maximum allowed by that collateral', async () => {
 | 
			
		||||
    const {pool, weth, dai, users, mockSwapAdapter, oracle} = testEnv;
 | 
			
		||||
    const user = users[3];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -435,13 +434,8 @@ makeSuite('LendingPool. repayWithCollateral()', (testEnv: TestEnv) => {
 | 
			
		|||
      testEnv
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    console.log('BEFORE');
 | 
			
		||||
    console.log(wethUserDataBefore.currentATokenBalance.toString());
 | 
			
		||||
    console.log(daiUserDataBefore.currentVariableDebt.toString());
 | 
			
		||||
    console.log(daiUserDataBefore.currentStableDebt.toString());
 | 
			
		||||
 | 
			
		||||
    await mockSwapAdapter.setAmountToReturn(amountToRepay);
 | 
			
		||||
    const txReceipt = await waitForTx(
 | 
			
		||||
    await waitForTx(
 | 
			
		||||
      await pool
 | 
			
		||||
        .connect(user.signer)
 | 
			
		||||
        .repayWithCollateral(
 | 
			
		||||
| 
						 | 
				
			
			@ -463,9 +457,39 @@ makeSuite('LendingPool. repayWithCollateral()', (testEnv: TestEnv) => {
 | 
			
		|||
 | 
			
		||||
    const {userData: daiUserDataAfter} = await getContractsData(dai.address, user.address, testEnv);
 | 
			
		||||
 | 
			
		||||
    console.log('AFTER');
 | 
			
		||||
    console.log(wethUserDataAfter.currentATokenBalance.toString());
 | 
			
		||||
    console.log(daiUserDataAfter.currentVariableDebt.toString());
 | 
			
		||||
    console.log(daiUserDataAfter.currentStableDebt.toString());
 | 
			
		||||
    const collateralPrice = await oracle.getAssetPrice(weth.address);
 | 
			
		||||
    const principalPrice = await oracle.getAssetPrice(dai.address);
 | 
			
		||||
 | 
			
		||||
    const collateralConfig = await pool.getReserveConfigurationData(weth.address);
 | 
			
		||||
 | 
			
		||||
    const collateralDecimals = collateralConfig.decimals.toString();
 | 
			
		||||
    const principalDecimals = (
 | 
			
		||||
      await pool.getReserveConfigurationData(dai.address)
 | 
			
		||||
    ).decimals.toString();
 | 
			
		||||
    const collateralLiquidationBonus = collateralConfig.liquidationBonus.toString();
 | 
			
		||||
 | 
			
		||||
    const expectedDebtCovered = new BigNumber(collateralPrice.toString())
 | 
			
		||||
      .times(new BigNumber(wethUserDataBefore.currentATokenBalance.toString()))
 | 
			
		||||
      .times(new BigNumber(10).pow(principalDecimals))
 | 
			
		||||
      .div(
 | 
			
		||||
        new BigNumber(principalPrice.toString()).times(new BigNumber(10).pow(collateralDecimals))
 | 
			
		||||
      )
 | 
			
		||||
      .div(new BigNumber(collateralLiquidationBonus).div(10000).toString())
 | 
			
		||||
      .decimalPlaces(0, BigNumber.ROUND_DOWN);
 | 
			
		||||
 | 
			
		||||
    const expectedVariableDebtIncrease = calcExpectedVariableDebtTokenBalance(
 | 
			
		||||
      daiReserveDataBefore,
 | 
			
		||||
      daiUserDataBefore,
 | 
			
		||||
      new BigNumber(repayWithCollateralTimestamp)
 | 
			
		||||
    ).minus(daiUserDataBefore.currentVariableDebt);
 | 
			
		||||
 | 
			
		||||
    expect(daiUserDataAfter.currentVariableDebt).to.be.bignumber.equal(
 | 
			
		||||
      new BigNumber(daiUserDataBefore.currentVariableDebt)
 | 
			
		||||
        .minus(expectedDebtCovered.toString())
 | 
			
		||||
        .plus(expectedVariableDebtIncrease),
 | 
			
		||||
      'INVALID_VARIABLE_DEBT_POSITION'
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    expect(wethUserDataAfter.currentATokenBalance).to.be.bignumber.equal(0);
 | 
			
		||||
  });
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user