@@ -9201,7 +9201,8 @@ mod tests {
92019201 let client = StellarSaveContractClient :: new ( & env, & contract_id) ;
92029202
92039203 let creator = Address :: generate ( & env) ;
9204- let group_id = client. create_group ( & creator, & 100 , & 3600 , & 3 ) ;
9204+ let token_address = env. register_stellar_asset_contract_v2 ( Address :: generate ( & env) ) . address ( ) ;
9205+ let group_id = client. create_group ( & creator, & 100 , & 3600 , & 3 , & token_address) ;
92059206
92069207 // Group is in Pending state by default, should fail
92079208 let result = client. try_transfer_payout ( & group_id, & creator, & 100 , & 0 ) ;
@@ -9678,7 +9679,8 @@ mod tests {
96789679 let client = StellarSaveContractClient :: new ( & env, & contract_id) ;
96799680
96809681 let creator = Address :: generate ( & env) ;
9681- let group_id = client. create_group ( & creator, & 100 , & 3600 , & 3 ) ;
9682+ let token_address = env. register_stellar_asset_contract_v2 ( Address :: generate ( & env) ) . address ( ) ;
9683+ let group_id = client. create_group ( & creator, & 100 , & 3600 , & 3 , & token_address) ;
96829684
96839685 client. join_group ( & group_id, & creator) ;
96849686
@@ -9705,7 +9707,8 @@ mod tests {
97059707 let client = StellarSaveContractClient :: new ( & env, & contract_id) ;
97069708
97079709 let creator = Address :: generate ( & env) ;
9708- let group_id = client. create_group ( & creator, & 100 , & 3600 , & 3 ) ;
9710+ let token_address = env. register_stellar_asset_contract_v2 ( Address :: generate ( & env) ) . address ( ) ;
9711+ let group_id = client. create_group ( & creator, & 100 , & 3600 , & 3 , & token_address) ;
97099712
97109713 client. join_group ( & group_id, & creator) ;
97119714
@@ -11146,4 +11149,49 @@ mod tests {
1114611149 // Query a group_id that was never created
1114711150 client. get_token_config ( & 9999 ) ;
1114811151 }
11152+
11153+ // Task 5.1: Unit tests for get_token_config (Requirements 2.3, 2.4)
11154+
11155+ /// Verifies that get_token_config returns the correct TokenConfig after a group is created
11156+ /// with a mock token. Requirements 2.3.
11157+ #[ test]
11158+ fn test_get_token_config_success ( ) {
11159+ let env = Env :: default ( ) ;
11160+ env. mock_all_auths ( ) ;
11161+
11162+ let contract_id = env. register ( StellarSaveContract , ( ) ) ;
11163+ let client = StellarSaveContractClient :: new ( & env, & contract_id) ;
11164+
11165+ // Deploy a mock SEP-41 token (Stellar Asset Contract)
11166+ let token_admin = Address :: generate ( & env) ;
11167+ let token_address = env
11168+ . register_stellar_asset_contract_v2 ( token_admin)
11169+ . address ( ) ;
11170+
11171+ let creator = Address :: generate ( & env) ;
11172+
11173+ // Create a group with the mock token
11174+ let group_id = client. create_group ( & creator, & 100 , & 3600 , & 5 , & token_address) ;
11175+
11176+ // Retrieve the token config
11177+ let token_config = client. get_token_config ( & group_id) ;
11178+
11179+ // Verify the stored token address matches what was provided
11180+ assert_eq ! ( token_config. token_address, token_address) ;
11181+ // Stellar Asset Contracts report 7 decimals
11182+ assert_eq ! ( token_config. token_decimals, 7 ) ;
11183+ }
11184+
11185+ /// Verifies that get_token_config returns GroupNotFound for an unknown group_id.
11186+ /// Requirements 2.4.
11187+ #[ test]
11188+ #[ should_panic( expected = "Error(Contract, #1001)" ) ]
11189+ fn test_get_token_config_not_found ( ) {
11190+ let env = Env :: default ( ) ;
11191+ let contract_id = env. register ( StellarSaveContract , ( ) ) ;
11192+ let client = StellarSaveContractClient :: new ( & env, & contract_id) ;
11193+
11194+ // Query a group_id that was never created
11195+ client. get_token_config ( & 9999 ) ;
11196+ }
1114911197}
0 commit comments