Skip to content

Commit bb1d0b9

Browse files
test: negative XVS balance (#193)
1 parent 02b8bea commit bb1d0b9

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

workspace/apps/perpetuals/contracts/src/tests/flow_tests/procotol_vault_redeem_tests.cairo

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1366,3 +1366,57 @@ fn test_redeem_cannot_be_called_except_by_perps_contract() {
13661366
owner: vault_config.deployed_vault.owning_account.address,
13671367
);
13681368
}
1369+
1370+
#[test]
1371+
#[should_panic(expected: 'ASSET_BALANCE_NEGATIVE')]
1372+
fn test_redeem_vault_shares_negative() {
1373+
let mut state: FlowTestBase = FlowTestBaseTrait::new();
1374+
let vault_user = state.new_user_with_position_id(333_u32.into());
1375+
let redeeming_user = state.new_user_with_position_id(555_u32.into());
1376+
let user = state.new_user_with_position_id(111_u32.into());
1377+
let vault_init_deposit = state
1378+
.facade
1379+
.deposit(vault_user.account, vault_user.position_id, 400_u64);
1380+
state.facade.process_deposit(vault_init_deposit);
1381+
let vault_config = state.facade.register_vault_share_spot_asset(vault_user);
1382+
1383+
state.facade.price_tick(@vault_config.asset_info, 1);
1384+
state.facade.process_deposit(state.facade.deposit(user.account, user.position_id, 10000_u64));
1385+
state
1386+
.facade
1387+
.process_deposit(
1388+
state.facade.deposit(redeeming_user.account, redeeming_user.position_id, 10000_u64),
1389+
);
1390+
state
1391+
.facade
1392+
.process_deposit(
1393+
state
1394+
.facade
1395+
.deposit_into_vault(
1396+
vault: vault_config,
1397+
amount_to_invest: 1000,
1398+
min_shares_to_receive: 500,
1399+
depositing_user: user,
1400+
receiving_user: user,
1401+
),
1402+
);
1403+
1404+
// Redeeming user position before redeem:
1405+
// 10000 x USDC @ 1usd
1406+
// 0 x vault_shares @ 1usd
1407+
// total value = 10000 + 0 = 10000
1408+
// total risk = 0
1409+
state
1410+
.facade
1411+
.redeem_from_vault(
1412+
vault: vault_config,
1413+
withdrawing_user: redeeming_user,
1414+
receiving_user: redeeming_user,
1415+
shares_to_burn_user: 400,
1416+
value_of_shares_user: 400,
1417+
shares_to_burn_vault: 400,
1418+
value_of_shares_vault: 400,
1419+
actual_shares_user: 400,
1420+
actual_collateral_user: 400,
1421+
);
1422+
}

0 commit comments

Comments
 (0)