@@ -1173,68 +1173,6 @@ mod tests {
11731173 client. request_deadline_extension ( & campaign_id, & contributor, & new_deadline) ;
11741174 }
11751175
1176- #[ test]
1177- fn test_migrate_copies_campaigns_and_is_idempotent ( ) {
1178- let env = Env :: default ( ) ;
1179- env. mock_all_auths ( ) ;
1180-
1181- let admin = Address :: generate ( & env) ;
1182- let creator = Address :: generate ( & env) ;
1183-
1184- // Deploy "old" contract and seed a campaign
1185- let old = deploy_contract ( & env) ;
1186- old. initialize ( & admin, & 100_i128 ) ;
1187- let deadline = env. ledger ( ) . timestamp ( ) + 1_000 ;
1188- let token_admin = Address :: generate ( & env) ;
1189- let token_id = env. register_stellar_asset_contract ( token_admin. clone ( ) ) ;
1190- let old_campaign_id = old. create_campaign (
1191- & creator,
1192- & soroban_sdk:: vec![ & env, token_id. clone( ) ] ,
1193- & 1_000_i128 ,
1194- & deadline,
1195- & String :: from_str ( & env, "old campaign" ) ,
1196- & 0_i128 ,
1197- ) ;
1198-
1199- // Deploy "new" contract
1200- let new_contract = deploy_contract ( & env) ;
1201- new_contract. initialize ( & admin, & 100_i128 ) ;
1202-
1203- // Verify old contract has the campaign
1204- assert_eq ! ( old. get_campaign_count( ) , 1 ) ;
1205- let old_campaign_data = old. get_campaign ( & old_campaign_id) ;
1206-
1207- // Admin pre-fetches the campaigns off-chain and passes them to migrate
1208- let source_ids = soroban_sdk:: vec![ & env, old_campaign_id] ;
1209- let campaigns_to_migrate = soroban_sdk:: vec![ & env, old_campaign_data. clone( ) ] ;
1210- let result = new_contract. try_migrate ( & admin, & old. address , & source_ids. clone ( ) , & campaigns_to_migrate. clone ( ) ) ;
1211- result. expect ( "migrate should not fail" ) ;
1212-
1213- // The new contract should have one campaign
1214- assert_eq ! ( new_contract. get_campaign_count( ) , 1 ) ;
1215- let migrated = new_contract. get_campaign ( & 0u64 ) ;
1216- assert_eq ! ( migrated. creator, creator) ;
1217- assert_eq ! ( migrated. target_amount, 1_000_i128 ) ;
1218-
1219- // Calling migrate again with the same source IDs should be idempotent
1220- new_contract. migrate ( & admin, & old. address , & source_ids, & campaigns_to_migrate) ;
1221- assert_eq ! ( new_contract. get_campaign_count( ) , 1 ) ;
1222- }
1223-
1224- #[ test]
1225- #[ should_panic( expected = "only admin can call migrate" ) ]
1226- fn test_migrate_rejects_non_admin ( ) {
1227- let env = Env :: default ( ) ;
1228- env. mock_all_auths ( ) ;
1229-
1230- let admin = Address :: generate ( & env) ;
1231- let intruder = Address :: generate ( & env) ;
1232-
1233- let old = deploy_contract ( & env) ;
1234- old. initialize ( & admin, & 100_i128 ) ;
1235- let new_contract = deploy_contract ( & env) ;
1236- new_contract. initialize ( & admin, & 100_i128 ) ;
12371176
1238- new_contract. migrate ( & intruder, & old. address , & soroban_sdk:: vec![ & env] , & soroban_sdk:: vec![ & env] ) ;
12391177 }
12401178}
0 commit comments