@@ -1272,6 +1272,89 @@ mod settlement_tests {
12721272 assert ! ( data. developer. is_none( ) ) ;
12731273 }
12741274
1275+ /// Snapshot: asserts the full `PaymentReceivedEvent` struct shape and values
1276+ /// in a single comparison, for the to_pool=true branch. Any future change to
1277+ /// the struct's fields or this call's emitted values will fail this test,
1278+ /// making accidental output-structure drift impossible to miss.
1279+ #[ test]
1280+ fn test_payment_received_event_snapshot_to_pool ( ) {
1281+ use soroban_sdk:: testutils:: Events as _;
1282+ use soroban_sdk:: { IntoVal , Symbol } ;
1283+
1284+ let env = Env :: default ( ) ;
1285+ env. mock_all_auths ( ) ;
1286+ let admin = Address :: generate ( & env) ;
1287+ let vault = Address :: generate ( & env) ;
1288+ let addr = env. register ( CalloraSettlement , ( ) ) ;
1289+ let client = CalloraSettlementClient :: new ( & env, & addr) ;
1290+ client. init ( & admin, & vault) ;
1291+
1292+ client. receive_payment ( & vault, & 750i128 , & true , & None ) ;
1293+
1294+ let events = env. events ( ) . all ( ) ;
1295+ let ev = events
1296+ . iter ( )
1297+ . find ( |e| {
1298+ !e. 1 . is_empty ( ) && {
1299+ let t: Symbol = e. 1 . get ( 0 ) . unwrap ( ) . into_val ( & env) ;
1300+ t == Symbol :: new ( & env, "payment_received" )
1301+ }
1302+ } )
1303+ . expect ( "expected payment_received event" ) ;
1304+
1305+ let data: crate :: PaymentReceivedEvent = ev. 2 . into_val ( & env) ;
1306+
1307+ let expected = crate :: PaymentReceivedEvent {
1308+ from_vault : vault. clone ( ) ,
1309+ amount : 750i128 ,
1310+ to_pool : true ,
1311+ developer : None ,
1312+ } ;
1313+
1314+ assert_eq ! ( data, expected) ;
1315+ }
1316+
1317+ /// Snapshot: asserts the full `PaymentReceivedEvent` struct shape and values
1318+ /// in a single comparison, for the to_pool=false (developer) branch.
1319+ #[ test]
1320+ fn test_payment_received_event_snapshot_to_developer ( ) {
1321+ use soroban_sdk:: testutils:: Events as _;
1322+ use soroban_sdk:: { IntoVal , Symbol } ;
1323+
1324+ let env = Env :: default ( ) ;
1325+ env. mock_all_auths ( ) ;
1326+ let admin = Address :: generate ( & env) ;
1327+ let vault = Address :: generate ( & env) ;
1328+ let developer = Address :: generate ( & env) ;
1329+ let addr = env. register ( CalloraSettlement , ( ) ) ;
1330+ let client = CalloraSettlementClient :: new ( & env, & addr) ;
1331+ client. init ( & admin, & vault) ;
1332+
1333+ client. receive_payment ( & vault, & 321i128 , & false , & Some ( developer. clone ( ) ) ) ;
1334+
1335+ let events = env. events ( ) . all ( ) ;
1336+ let ev = events
1337+ . iter ( )
1338+ . find ( |e| {
1339+ !e. 1 . is_empty ( ) && {
1340+ let t: Symbol = e. 1 . get ( 0 ) . unwrap ( ) . into_val ( & env) ;
1341+ t == Symbol :: new ( & env, "payment_received" )
1342+ }
1343+ } )
1344+ . expect ( "expected payment_received event" ) ;
1345+
1346+ let data: crate :: PaymentReceivedEvent = ev. 2 . into_val ( & env) ;
1347+
1348+ let expected = crate :: PaymentReceivedEvent {
1349+ from_vault : vault. clone ( ) ,
1350+ amount : 321i128 ,
1351+ to_pool : false ,
1352+ developer : Some ( developer. clone ( ) ) ,
1353+ } ;
1354+
1355+ assert_eq ! ( data, expected) ;
1356+ }
1357+
12751358 #[ test]
12761359 fn test_payment_received_and_balance_credited_events_to_developer ( ) {
12771360 use soroban_sdk:: testutils:: Events as _;
0 commit comments