Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 83 additions & 0 deletions contracts/settlement/src/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1252,6 +1252,89 @@ mod settlement_tests {
assert!(data.developer.is_none());
}

/// Snapshot: asserts the full `PaymentReceivedEvent` struct shape and values
/// in a single comparison, for the to_pool=true branch. Any future change to
/// the struct's fields or this call's emitted values will fail this test,
/// making accidental output-structure drift impossible to miss.
#[test]
fn test_payment_received_event_snapshot_to_pool() {
use soroban_sdk::testutils::Events as _;
use soroban_sdk::{IntoVal, Symbol};

let env = Env::default();
env.mock_all_auths();
let admin = Address::generate(&env);
let vault = Address::generate(&env);
let addr = env.register(CalloraSettlement, ());
let client = CalloraSettlementClient::new(&env, &addr);
client.init(&admin, &vault);

client.receive_payment(&vault, &750i128, &true, &None);

let events = env.events().all();
let ev = events
.iter()
.find(|e| {
!e.1.is_empty() && {
let t: Symbol = e.1.get(0).unwrap().into_val(&env);
t == Symbol::new(&env, "payment_received")
}
})
.expect("expected payment_received event");

let data: crate::PaymentReceivedEvent = ev.2.into_val(&env);

let expected = crate::PaymentReceivedEvent {
from_vault: vault.clone(),
amount: 750i128,
to_pool: true,
developer: None,
};

assert_eq!(data, expected);
}

/// Snapshot: asserts the full `PaymentReceivedEvent` struct shape and values
/// in a single comparison, for the to_pool=false (developer) branch.
#[test]
fn test_payment_received_event_snapshot_to_developer() {
use soroban_sdk::testutils::Events as _;
use soroban_sdk::{IntoVal, Symbol};

let env = Env::default();
env.mock_all_auths();
let admin = Address::generate(&env);
let vault = Address::generate(&env);
let developer = Address::generate(&env);
let addr = env.register(CalloraSettlement, ());
let client = CalloraSettlementClient::new(&env, &addr);
client.init(&admin, &vault);

client.receive_payment(&vault, &321i128, &false, &Some(developer.clone()));

let events = env.events().all();
let ev = events
.iter()
.find(|e| {
!e.1.is_empty() && {
let t: Symbol = e.1.get(0).unwrap().into_val(&env);
t == Symbol::new(&env, "payment_received")
}
})
.expect("expected payment_received event");

let data: crate::PaymentReceivedEvent = ev.2.into_val(&env);

let expected = crate::PaymentReceivedEvent {
from_vault: vault.clone(),
amount: 321i128,
to_pool: false,
developer: Some(developer.clone()),
};

assert_eq!(data, expected);
}

#[test]
fn test_payment_received_and_balance_credited_events_to_developer() {
use soroban_sdk::testutils::Events as _;
Expand Down
Loading