Skip to content

Commit 01ef43c

Browse files
Merge pull request #552 from obswrld/test/settlement-receive-payment-snapshot
test(settlement): add full struct snapshot tests for PaymentReceivedEvent
2 parents 1c7a953 + 531a4c9 commit 01ef43c

1 file changed

Lines changed: 83 additions & 0 deletions

File tree

contracts/settlement/src/test.rs

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)