@@ -831,3 +831,51 @@ fn test_get_admin_returns_initialized_admin() {
831831
832832 assert_eq ! ( pool_client. get_admin( ) , admin) ;
833833}
834+
835+ #[ test]
836+ fn test_get_depositor_yield_no_deposit ( ) {
837+ let env = Env :: default ( ) ;
838+ env. mock_all_auths ( ) ;
839+
840+ let admin = Address :: generate ( & env) ;
841+ let ( token_id, _, _) = create_token_contract ( & env, & admin) ;
842+ let pool_id = env. register ( LendingPool , ( ) ) ;
843+ let pool_client = LendingPoolClient :: new ( & env, & pool_id) ;
844+ pool_client. initialize ( & admin) ;
845+
846+ let provider = Address :: generate ( & env) ;
847+ assert_eq ! (
848+ pool_client. get_depositor_yield( & provider, & token_id) ,
849+ ( 0 , 0 )
850+ ) ;
851+ }
852+
853+ #[ test]
854+ fn test_get_depositor_yield_reflects_accrued_interest ( ) {
855+ let env = Env :: default ( ) ;
856+ env. mock_all_auths ( ) ;
857+
858+ let admin = Address :: generate ( & env) ;
859+ let ( token_id, stellar_asset_client, _) = create_token_contract ( & env, & admin) ;
860+ let pool_id = env. register ( LendingPool , ( ) ) ;
861+ let pool_client = LendingPoolClient :: new ( & env, & pool_id) ;
862+ pool_client. initialize ( & admin) ;
863+ pool_client. set_withdrawal_cooldown ( & 0 ) ;
864+
865+ let provider = Address :: generate ( & env) ;
866+ stellar_asset_client. mint ( & provider, & 1000 ) ;
867+ pool_client. deposit ( & provider, & token_id, & 1000 ) ;
868+
869+ // Before any yield: asset_value == deposit amount.
870+ let ( shares, asset_value) = pool_client. get_depositor_yield ( & provider, & token_id) ;
871+ assert_eq ! ( shares, 1000 ) ;
872+ assert_eq ! ( asset_value, 1000 ) ;
873+
874+ // Simulate interest repaid into the pool (increases pool balance without
875+ // minting new shares, so each share is now worth more).
876+ stellar_asset_client. mint ( & pool_id, & 200 ) ;
877+
878+ let ( shares2, asset_value2) = pool_client. get_depositor_yield ( & provider, & token_id) ;
879+ assert_eq ! ( shares2, 1000 ) ;
880+ assert_eq ! ( asset_value2, 1200 ) ; // 1000 shares * 1200 assets / 1000 total_shares
881+ }
0 commit comments