@@ -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