Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions tests/unitary/controller/test_admin_percentage.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from tests.utils.constants import WAD

COLLATERAL = 10**21
DEBT = 10**18
RATE = 10**11
TIME_DELTA = 86400


def test_default_behavior_no_fees(controller, market_type):
expected_fee = WAD if market_type == "mint" else 0
assert controller.admin_percentage() == expected_fee
3 changes: 3 additions & 0 deletions tests/unitary/controller/test_collect_fees.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
def test_default_behavior_no_fees(controller):
"""Naive check to make sure the function is exported, actual test is in the internal tests."""
assert controller.collect_fees() == 0
59 changes: 59 additions & 0 deletions tests/unitary/controller/test_internal_collect_fees.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
import pytest

import boa

from tests.utils import filter_logs, max_approve
from tests.utils.constants import MIN_TICKS, WAD

COLLATERAL = 10**21
DEBT = 10**18
RATE = 10**11
TIME_DELTA = 86400


@pytest.mark.parametrize("pct", range(1, 101))
def test_default_behavior(
controller,
amm,
borrowed_token,
collateral_token,
factory,
pct,
market_type,
):
controller.eval(f"core.admin_percentage = {WAD * pct // 100}")
boa.deal(collateral_token, boa.env.eoa, COLLATERAL)
max_approve(collateral_token, controller)
controller.create_loan(COLLATERAL, DEBT, MIN_TICKS)

amm.eval(f"self.rate = {RATE}")
amm.eval("self.rate_time = block.timestamp")
boa.env.time_travel(TIME_DELTA)

expected_fees = DEBT * TIME_DELTA * RATE // 10**18 * pct // 100

fee_receiver = factory.fee_receiver()
receiver_balance_before = borrowed_token.balanceOf(fee_receiver)
controller_balance_before = borrowed_token.balanceOf(controller)

amount = controller.collect_fees()

if pct > 0:
assert expected_fees > 0
assert amount > 0
else:
assert amount == 0

logs = filter_logs(controller, "CollectFees")
assert len(logs) == 1
assert logs[0].amount == amount
assert logs[0].new_supply == controller.eval("core._total_debt.initial_debt")

receiver_balance_after = borrowed_token.balanceOf(fee_receiver)
controller_balance_after = borrowed_token.balanceOf(controller)
assert receiver_balance_after - receiver_balance_before == amount
assert controller_balance_before - controller_balance_after == amount

assert controller.admin_fees() == 0
assert controller.eval("core.collected") == amount
assert amount == expected_fees
38 changes: 0 additions & 38 deletions tests/unitary/lending/lend_controller/test_admin_percentage_lc.py

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ def snapshot(controller, vault):
"lent": controller.lent(),
"repaid": controller.repaid(),
"collected": controller.collected(),
"processed": controller.processed(),
"asset_balance": vault.net_deposits(),
}

Expand All @@ -34,7 +33,7 @@ def test_increases_after_deposit(controller, vault, borrowed_token):

assert after["borrowed"] == before["borrowed"] + DEPOSIT
assert after["asset_balance"] == before["asset_balance"] + DEBT
expect_same(before, after, "lent", "repaid", "collected", "processed")
expect_same(before, after, "lent", "repaid", "collected")


def test_decreases_after_withdraw(
Expand All @@ -53,7 +52,7 @@ def test_decreases_after_withdraw(

assert after["borrowed"] == before["borrowed"] - DEPOSIT
assert after["asset_balance"] == before["asset_balance"] - DEPOSIT
expect_same(before, after, "lent", "repaid", "collected", "processed")
expect_same(before, after, "lent", "repaid", "collected")


def test_decreases_after_create(controller, vault, collateral_token):
Expand All @@ -66,7 +65,6 @@ def test_decreases_after_create(controller, vault, collateral_token):

assert after["borrowed"] == before["borrowed"] - DEBT
assert after["lent"] == before["lent"] + DEBT
assert after["processed"] == before["processed"] + DEBT
expect_same(before, after, "repaid", "collected", "asset_balance")


Expand All @@ -81,7 +79,6 @@ def test_decreases_after_borrow_more(controller, vault, collateral_token):

assert after["borrowed"] == before["borrowed"] - DEBT
assert after["lent"] == before["lent"] + DEBT
assert after["processed"] == before["processed"] + DEBT
expect_same(before, after, "repaid", "collected", "asset_balance")


Expand All @@ -97,7 +94,7 @@ def test_increases_after_repay(controller, vault, collateral_token, borrowed_tok

assert after["borrowed"] == before["borrowed"] + DEBT
assert after["repaid"] == before["repaid"] + DEBT
expect_same(before, after, "lent", "collected", "asset_balance", "processed")
expect_same(before, after, "lent", "collected", "asset_balance")


def test_collect_fees_reduces_balance(
Expand Down Expand Up @@ -128,5 +125,4 @@ def test_collect_fees_reduces_balance(
assert amount > 0
assert after["collected"] == before["collected"] + amount
assert after["borrowed"] == before["borrowed"] - amount
assert after["processed"] == after["repaid"] + controller.total_debt()
expect_same(before, after, "lent", "repaid", "asset_balance")
23 changes: 0 additions & 23 deletions tests/unitary/lending/lend_controller/test_borrow_more_lc.py

This file was deleted.

72 changes: 0 additions & 72 deletions tests/unitary/lending/lend_controller/test_collect_fees_lc.py

This file was deleted.

18 changes: 0 additions & 18 deletions tests/unitary/lending/lend_controller/test_create_loan_lc.py

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@
@pytest.mark.parametrize("new_fee", [0, WAD // 2])
def test_default_behavior(admin, controller, new_fee):
controller.set_admin_percentage(new_fee, sender=admin)
logs = filter_logs(controller, "SetAdminFee")
assert len(logs) == 1 and logs[-1].admin_fee == new_fee
assert controller.admin_fee() == new_fee
logs = filter_logs(controller, "SetAdminPercentage")
assert len(logs) == 1 and logs[-1].admin_percentage == new_fee
assert controller.admin_percentage() == new_fee


def test_more_than_max(admin, controller):
with boa.reverts(dev="admin fee higher than 100%"):
with boa.reverts(dev="admin percentage higher than 100%"):
controller.set_admin_percentage(WAD + 1, sender=admin)


Expand Down
1 change: 1 addition & 0 deletions tests/unitary/lending/vault/test_convert_to_assets_v.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# TODO test isn't rigorous enough
def test_convert_to_assets(vault, controller, amm, make_debt):
"""Test _convert_to_assets with is_floor=True and False."""
shares = 100 * 10**18
Expand Down
32 changes: 1 addition & 31 deletions tests/unitary/lending/vault/test_preview_redeem_v.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import boa
import pytest


Expand All @@ -10,7 +9,7 @@ def seed_liquidity():
return 0


def test_preview_redeem(vault, controller, amm, borrowed_token, deposit_into_vault):
def test_preview_redeem(vault, borrowed_token, deposit_into_vault):
"""Test previewRedeem returns correct assets for given shares."""
assets = 100 * 10 ** borrowed_token.decimals()
deposit_into_vault(assets=assets)
Expand All @@ -20,32 +19,3 @@ def test_preview_redeem(vault, controller, amm, borrowed_token, deposit_into_vau
assert vault.previewRedeem(shares) == vault.eval(
f"self._convert_to_assets({shares})"
)


def test_preview_redeem_assert_revert(
vault, controller, amm, borrowed_token, deposit_into_vault
):
"""Test previewRedeem reverts when assets > borrowed_balance."""
# Create vault state by depositing
deposit_into_vault()

# Try to preview redeem more than available borrowed_balance
borrowed_balance = controller.available_balance()
shares = vault.convertToShares(borrowed_balance + 1) # More than available

# Should revert due to assert in previewRedeem
with boa.reverts():
vault.previewRedeem(shares)


def test_preview_redeem_zero_supply(vault, controller, amm, borrowed_token):
"""Test previewRedeem when totalSupply is 0."""
# Vault has no shares
assert vault.totalSupply() == 0

# Should return 0 for any shares
assert vault.previewRedeem(0) == 0

# Should revert for non-zero shares
with boa.reverts():
vault.previewRedeem(1)
19 changes: 1 addition & 18 deletions tests/unitary/lending/vault/test_preview_withdraw_v.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import boa
import pytest


Expand All @@ -10,27 +9,11 @@ def seed_liquidity():
return 0


def test_preview_withdraw(vault, controller, amm, borrowed_token, deposit_into_vault):
def test_preview_withdraw(vault, borrowed_token, deposit_into_vault):
"""Test previewWithdraw returns correct shares for given assets."""
assets = 100 * 10 ** borrowed_token.decimals()
deposit_into_vault(assets=assets)

assert vault.previewWithdraw(assets) == vault.eval(
f"self._convert_to_shares({assets}, False)"
)


def test_preview_withdraw_assert_revert(
vault, controller, amm, borrowed_token, deposit_into_vault
):
"""Test previewWithdraw reverts when assets > borrowed_balance."""
# Create vault state by depositing
deposit_into_vault()

# Try to preview withdraw more than available borrowed_balance
borrowed_balance = controller.available_balance()
assets = borrowed_balance + 1 # More than available

# Should revert due to assert in previewWithdraw
with boa.reverts():
vault.previewWithdraw(assets)