|
| 1 | +# You can access update_total_debt using |
| 2 | + |
| 3 | +import boa |
| 4 | +import pytest |
| 5 | +from textwrap import dedent |
| 6 | + |
| 7 | +from tests.utils.constants import WAD |
| 8 | + |
| 9 | + |
| 10 | +BORROW_CAP = 10**9 |
| 11 | + |
| 12 | + |
| 13 | +@pytest.fixture(scope="module", autouse=True) |
| 14 | +def expose_internal(controller): |
| 15 | + controller.inject_function( |
| 16 | + dedent(""" |
| 17 | + @external |
| 18 | + def update_total_debt(d_debt: uint256, rate_mul: uint256, is_increase: bool) -> core.IController.Loan: |
| 19 | + return core._update_total_debt(d_debt, rate_mul, is_increase) |
| 20 | + """) |
| 21 | + ) |
| 22 | + |
| 23 | + |
| 24 | +def test_default_behavior(controller): |
| 25 | + controller.eval("core._total_debt.initial_debt = 0") |
| 26 | + controller.eval(f"core._total_debt.rate_mul = {WAD}") |
| 27 | + controller.eval(f"core.borrow_cap = {BORROW_CAP}") |
| 28 | + |
| 29 | + controller.inject.update_total_debt(BORROW_CAP - 1, WAD, True) |
| 30 | + current_debt = controller.eval("core._total_debt.initial_debt") |
| 31 | + assert current_debt == BORROW_CAP - 1 |
| 32 | + |
| 33 | + controller.inject.update_total_debt(1, WAD, True) |
| 34 | + current_debt = controller.eval("core._total_debt.initial_debt") |
| 35 | + assert current_debt == BORROW_CAP |
| 36 | + |
| 37 | + |
| 38 | +def test_exceeding_borrow_cap_reverts(controller): |
| 39 | + controller.eval(f"core._total_debt.rate_mul = {WAD}") |
| 40 | + controller.eval(f"core.borrow_cap = {BORROW_CAP}") |
| 41 | + controller.eval(f"core._total_debt.initial_debt = {BORROW_CAP}") |
| 42 | + |
| 43 | + with boa.reverts("Borrow cap exceeded"): |
| 44 | + controller.inject.update_total_debt(1, WAD, True) |
| 45 | + |
| 46 | + current_debt = controller.eval("core._total_debt.initial_debt") |
| 47 | + assert current_debt == BORROW_CAP |
0 commit comments