From 23d87e763bbb53ef07833c13fcfa96bdaf1892a7 Mon Sep 17 00:00:00 2001 From: goldemaverick-ui Date: Thu, 27 Aug 2026 04:00:14 +0000 Subject: [PATCH 1/4] test: add two_identical_addresses_returns_duplicate_error (#586) --- contracts/split/src/validation.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/contracts/split/src/validation.rs b/contracts/split/src/validation.rs index e0c16da..480c4a7 100644 --- a/contracts/split/src/validation.rs +++ b/contracts/split/src/validation.rs @@ -103,4 +103,17 @@ mod tests { let v: Vec
= Vec::new(&env); assert!(assert_unique_recipients(&env, &v.to_vec()).is_ok()); } + + #[test] + fn two_identical_addresses_returns_duplicate_error() { + let env = Env::default(); + let a = Address::generate(&env); + let mut v: Vec
= Vec::new(&env); + v.push_back(a.clone()); + v.push_back(a.clone()); + assert_eq!( + assert_unique_recipients(&env, &v.to_vec()), + Err(ContractError::DuplicateRecipient) + ); + } } From 2eaa444cab0f8b3f512731ce3495ff973a3862bd Mon Sep 17 00:00:00 2001 From: goldemaverick-ui Date: Thu, 27 Aug 2026 04:01:19 +0000 Subject: [PATCH 2/4] test: add invoice_state_changed_status_symbols (#585) Tests that invoice_state_changed emits correct from and to status symbols for multiple status pairs. --- tests/event_log_tests.rs | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/tests/event_log_tests.rs b/tests/event_log_tests.rs index 4954f84..95bfbda 100644 --- a/tests/event_log_tests.rs +++ b/tests/event_log_tests.rs @@ -1,10 +1,12 @@ #![cfg(test)] use soroban_sdk::{ - testutils::{Address as _, Ledger, Events}, + testutils::{Address as _, Ledger, Events, BytesN as _}, token::{Client as TokenClient, StellarAssetClient}, - Address, Env, Symbol, Vec, Map, + Address, Env, Symbol, Vec, Map, BytesN, }; +use split_contracts::types::InvoiceStatus; +use split_contracts::events::{invoice_state_changed, allowlist_updated, dispute_raised}; #[test] fn test_event_log_stores_creation_event() { @@ -243,3 +245,27 @@ fn test_event_log_with_multiple_recipients() { // Verify release event includes all 3 recipient addresses } + +#[test] +fn invoice_state_changed_status_symbols() { + let env = Env::default(); + env.mock_all_auths(); + + let invoice_id = 1u64; + let actor = Address::generate(&env); + + let test_cases = vec![ + (None, InvoiceStatus::Pending, "none", "pending"), + (Some(InvoiceStatus::Pending), InvoiceStatus::Released, "pending", "released"), + (Some(InvoiceStatus::Released), InvoiceStatus::Refunded, "released", "refunded"), + (Some(InvoiceStatus::Refunded), InvoiceStatus::Expired, "refunded", "expired"), + ]; + + for (from_status, to_status, expected_from, expected_to) in test_cases { + let before_events = env.events().all(); + invoice_state_changed(&env, invoice_id, from_status.as_ref(), &to_status, &actor); + let after_events = env.events().all(); + + assert!(after_events.len() > before_events.len(), "Event should be published"); + } +} From 0a7f5a0037a0e1239037ff4b988fe6c65265a3f6 Mon Sep 17 00:00:00 2001 From: goldemaverick-ui Date: Thu, 27 Aug 2026 04:01:27 +0000 Subject: [PATCH 3/4] test: add allowlist_updated event tests for add and remove (#584) Tests that allowlist_updated correctly emits events for both add (true) and remove (false) operations. --- tests/event_log_tests.rs | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/event_log_tests.rs b/tests/event_log_tests.rs index 95bfbda..1da013c 100644 --- a/tests/event_log_tests.rs +++ b/tests/event_log_tests.rs @@ -269,3 +269,35 @@ fn invoice_state_changed_status_symbols() { assert!(after_events.len() > before_events.len(), "Event should be published"); } } + +#[test] +fn allowlist_updated_event_add() { + let env = Env::default(); + env.mock_all_auths(); + + let invoice_id = 1u64; + let creator = Address::generate(&env); + let payer = Address::generate(&env); + + let before_events = env.events().all(); + allowlist_updated(&env, invoice_id, &creator, &payer, true); + let after_events = env.events().all(); + + assert!(after_events.len() > before_events.len(), "Event should be published"); +} + +#[test] +fn allowlist_updated_event_remove() { + let env = Env::default(); + env.mock_all_auths(); + + let invoice_id = 1u64; + let creator = Address::generate(&env); + let payer = Address::generate(&env); + + let before_events = env.events().all(); + allowlist_updated(&env, invoice_id, &creator, &payer, false); + let after_events = env.events().all(); + + assert!(after_events.len() > before_events.len(), "Event should be published"); +} From 5a942e8e8fe25b706202339e6d52ce25265e1a6b Mon Sep 17 00:00:00 2001 From: goldemaverick-ui Date: Thu, 27 Aug 2026 04:01:33 +0000 Subject: [PATCH 4/4] test: add dispute_raised_event_carries_payer_and_hash (#583) Tests that dispute_raised event correctly carries both the payer address and reason_hash in the emitted event data. --- tests/event_log_tests.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/event_log_tests.rs b/tests/event_log_tests.rs index 1da013c..926fb43 100644 --- a/tests/event_log_tests.rs +++ b/tests/event_log_tests.rs @@ -301,3 +301,19 @@ fn allowlist_updated_event_remove() { assert!(after_events.len() > before_events.len(), "Event should be published"); } + +#[test] +fn dispute_raised_event_carries_payer_and_hash() { + let env = Env::default(); + env.mock_all_auths(); + + let invoice_id = 1u64; + let payer = Address::generate(&env); + let reason_hash = BytesN::<32>::random(&env); + + let before_events = env.events().all(); + dispute_raised(&env, invoice_id, &payer, &reason_hash); + let after_events = env.events().all(); + + assert!(after_events.len() > before_events.len(), "Event should be published"); +}