@@ -1572,6 +1572,56 @@ fn test_liquidate_under_threshold_transfers_bonus_and_refund() {
15721572 ) ;
15731573}
15741574
1575+ #[ test]
1576+ fn test_liquidation_frees_outstanding_for_approve_loan ( ) {
1577+ let env = Env :: default ( ) ;
1578+ env. mock_all_auths_allowing_non_root_auth ( ) ;
1579+
1580+ let ( manager, nft_client, pool_client, token_id, _token_admin) = setup_test ( & env) ;
1581+ let borrower_one = Address :: generate ( & env) ;
1582+ let borrower_two = Address :: generate ( & env) ;
1583+ let liquidator = Address :: generate ( & env) ;
1584+
1585+ let history_hash = soroban_sdk:: BytesN :: from_array ( & env, & [ 0u8 ; 32 ] ) ;
1586+ nft_client. mint (
1587+ & borrower_one,
1588+ & 650 ,
1589+ & history_hash,
1590+ & String :: from_str ( & env, "ipfs://QmTest" ) ,
1591+ & None ,
1592+ ) ;
1593+ nft_client. mint (
1594+ & borrower_two,
1595+ & 650 ,
1596+ & history_hash,
1597+ & String :: from_str ( & env, "ipfs://QmTest" ) ,
1598+ & None ,
1599+ ) ;
1600+
1601+ let stellar_token = StellarAssetClient :: new ( & env, & token_id) ;
1602+ stellar_token. mint ( & pool_client, & 10_000 ) ;
1603+ stellar_token. mint ( & borrower_one, & 20_000 ) ;
1604+
1605+ manager. set_liquidation_threshold ( & 14_500 ) ;
1606+
1607+ let first_loan = manager. request_loan ( & borrower_one, & 6_000 , & 17_280 ) ;
1608+ let second_loan = manager. request_loan ( & borrower_two, & 6_000 , & 17_280 ) ;
1609+ manager. approve_loan ( & first_loan) ;
1610+ manager. deposit_collateral ( & first_loan, & 8_500 ) ;
1611+
1612+ let blocked_before_liquidation = manager. try_approve_loan ( & second_loan) ;
1613+ assert_eq ! (
1614+ blocked_before_liquidation,
1615+ Err ( Ok ( LoanError :: InsufficientPoolLiquidity ) )
1616+ ) ;
1617+
1618+ manager. liquidate ( & liquidator, & first_loan) ;
1619+
1620+ assert_eq ! ( manager. get_loan( & first_loan) . status, LoanStatus :: Liquidated ) ;
1621+ manager. approve_loan ( & second_loan) ;
1622+ assert_eq ! ( manager. get_loan( & second_loan) . status, LoanStatus :: Approved ) ;
1623+ }
1624+
15751625#[ test]
15761626fn test_liquidate_rejects_healthy_collateral_ratio ( ) {
15771627 let env = Env :: default ( ) ;
0 commit comments