Skip to content
Merged
Show file tree
Hide file tree
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
4 changes: 4 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@ members = [
"orchestrator",
"cli",
"scenarios",

"testutils",

"integration_tests",
]
default-members = [
Expand All @@ -27,6 +30,7 @@ default-members = [
"data_migration",
"reporting",
"orchestrator",

]
resolver = "2"

Expand Down
1 change: 1 addition & 0 deletions bill_payments/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ remitwise-common = { path = "../remitwise-common" }
[dev-dependencies]
proptest = "1.10.0"
soroban-sdk = { version = "21.0.0", features = ["testutils"] }
testutils = { path = "../testutils" }


42 changes: 10 additions & 32 deletions bill_payments/src/test.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use testutils::{set_ledger_time, setup_test_env};
#[cfg(test)]
mod testsuit {
proptest! {
Expand Down Expand Up @@ -54,29 +55,11 @@ mod testsuit {
use soroban_sdk::Env;
use proptest::prelude::*;

fn set_time(env: &Env, timestamp: u64) {
let proto = env.ledger().protocol_version();

env.ledger().set(LedgerInfo {
protocol_version: proto,
sequence_number: 1,
timestamp,
network_id: [0; 32],
base_reserve: 10,
min_temp_entry_ttl: 1,
min_persistent_entry_ttl: 1,
max_entry_ttl: 100000,
});
}
// Removed local set_time in favor of testutils::set_ledger_time

#[test]
fn test_create_bill() {
let env = Env::default();
let contract_id = env.register_contract(None, BillPayments);
let client = BillPaymentsClient::new(&env, &contract_id);
let owner = <soroban_sdk::Address as AddressTrait>::generate(&env);

env.mock_all_auths();
fn test_create_bill_succeeds() {
setup_test_env!(env, BillPayments, client, owner);

let bill_id = client.create_bill(
&owner,
Expand All @@ -101,13 +84,8 @@ mod testsuit {
}

#[test]
fn test_create_bill_invalid_amount() {
let env = Env::default();
let contract_id = env.register_contract(None, BillPayments);
let client = BillPaymentsClient::new(&env, &contract_id);
let owner = <soroban_sdk::Address as AddressTrait>::generate(&env);

env.mock_all_auths();
fn test_create_bill_invalid_amount_fails() {
setup_test_env!(env, BillPayments, client, owner);
let result = client.try_create_bill(
&owner,
&String::from_str(&env, "Invalid"),
Expand Down Expand Up @@ -367,9 +345,9 @@ mod testsuit {
}

#[test]
fn test_get_overdue_bills() {
fn test_get_overdue_bills_succeeds() {
let env = Env::default();
set_time(&env, 2_000_000);
set_ledger_time(&env, 1, 2_000_000);

let contract_id = env.register_contract(None, BillPayments);
let client = BillPaymentsClient::new(&env, &contract_id);
Expand Down Expand Up @@ -729,9 +707,9 @@ mod testsuit {
}

#[test]
fn test_pay_overdue_bill() {
fn test_pay_overdue_bill_succeeds() {
let env = Env::default();
set_time(&env, 2_000_000); // Set time past due date
set_ledger_time(&env, 1, 2_000_000); // Set time past due date
let contract_id = env.register_contract(None, BillPayments);
let client = BillPaymentsClient::new(&env, &contract_id);
let owner = <soroban_sdk::Address as AddressTrait>::generate(&env);
Expand Down
14 changes: 7 additions & 7 deletions data_migration/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ mod tests {
use super::*;

#[test]
fn snapshot_checksum_roundtrip() {
fn test_snapshot_checksum_roundtrip_succeeds() {
let payload = SnapshotPayload::RemittanceSplit(RemittanceSplitExport {
owner: "GABC".into(),
spending_percent: 50,
Expand All @@ -343,7 +343,7 @@ mod tests {
}

#[test]
fn export_import_json() {
fn test_export_import_json_succeeds() {
let payload = SnapshotPayload::RemittanceSplit(RemittanceSplitExport {
owner: "GXYZ".into(),
spending_percent: 40,
Expand All @@ -359,7 +359,7 @@ mod tests {
}

#[test]
fn export_import_binary() {
fn test_export_import_binary_succeeds() {
let payload = SnapshotPayload::RemittanceSplit(RemittanceSplitExport {
owner: "GBIN".into(),
spending_percent: 25,
Expand All @@ -374,7 +374,7 @@ mod tests {
}

#[test]
fn checksum_mismatch_fails_import() {
fn test_checksum_mismatch_import_fails() {
let payload = SnapshotPayload::RemittanceSplit(RemittanceSplitExport {
owner: "GX".into(),
spending_percent: 100,
Expand All @@ -389,15 +389,15 @@ mod tests {
}

#[test]
fn version_compatibility() {
fn test_check_version_compatibility_succeeds() {
assert!(check_version_compatibility(1).is_ok());
assert!(check_version_compatibility(SCHEMA_VERSION).is_ok());
assert!(check_version_compatibility(0).is_err());
assert!(check_version_compatibility(SCHEMA_VERSION + 1).is_err());
}

#[test]
fn csv_export_import_goals() {
fn test_csv_export_import_goals_succeeds() {
let export = SavingsGoalsExport {
next_id: 2,
goals: vec![SavingsGoalExport {
Expand All @@ -418,7 +418,7 @@ mod tests {
}

#[test]
fn migration_event_serialization() {
fn test_migration_event_serialization_succeeds() {
let event = MigrationEvent::V1(MigrationEventV1 {
contract_id: "CABCD".into(),
migration_type: "export".into(),
Expand Down
1 change: 1 addition & 0 deletions family_wallet/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ remitwise-common = { path = "../remitwise-common" }

[dev-dependencies]
soroban-sdk = { version = "21.0.0", features = ["testutils"] }
testutils = { path = "../testutils" }

53 changes: 7 additions & 46 deletions family_wallet/src/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,12 @@ use soroban_sdk::{
token::{StellarAssetClient, TokenClient},
vec, Env,
};
use testutils::{set_ledger_time, setup_test_env};

#[test]
fn test_init_family_wallet() {
let env = Env::default();
env.mock_all_auths();
let contract_id = env.register_contract(None, FamilyWallet);
let client = FamilyWalletClient::new(&env, &contract_id);
fn test_initialize_wallet_succeeds() {
setup_test_env!(env, FamilyWallet, client, owner);

let owner = Address::generate(&env);
let member1 = Address::generate(&env);
let member2 = Address::generate(&env);
let initial_members = vec![&env, member1.clone(), member2.clone()];
Expand Down Expand Up @@ -807,16 +804,7 @@ fn test_instance_ttl_extended_on_init() {
let env = Env::default();
env.mock_all_auths();

env.ledger().set(LedgerInfo {
protocol_version: 20,
sequence_number: 100,
timestamp: 1000,
network_id: [0; 32],
base_reserve: 10,
min_temp_entry_ttl: 100,
min_persistent_entry_ttl: 100,
max_entry_ttl: 700_000,
});
set_ledger_time(&env, 100, 1000);

let contract_id = env.register_contract(None, FamilyWallet);
let client = FamilyWalletClient::new(&env, &contract_id);
Expand Down Expand Up @@ -846,16 +834,7 @@ fn test_instance_ttl_refreshed_on_add_member() {
let env = Env::default();
env.mock_all_auths();

env.ledger().set(LedgerInfo {
protocol_version: 20,
sequence_number: 100,
timestamp: 1000,
network_id: [0; 32],
base_reserve: 10,
min_temp_entry_ttl: 100,
min_persistent_entry_ttl: 100,
max_entry_ttl: 700_000,
});
set_ledger_time(&env, 100, 1000);

let contract_id = env.register_contract(None, FamilyWallet);
let client = FamilyWalletClient::new(&env, &contract_id);
Expand All @@ -868,16 +847,7 @@ fn test_instance_ttl_refreshed_on_add_member() {
// Advance ledger so TTL drops below threshold (17,280)
// After init at seq 100: live_until = 518,500
// At seq 510,000: TTL = 8,500 < 17,280 ✓
env.ledger().set(LedgerInfo {
protocol_version: 20,
sequence_number: 510_000,
timestamp: 500_000,
network_id: [0; 32],
base_reserve: 10,
min_temp_entry_ttl: 100,
min_persistent_entry_ttl: 100,
max_entry_ttl: 700_000,
});
set_ledger_time(&env, 510_000, 500_000);

// add_family_member calls extend_instance_ttl → re-extends TTL to 518,400
client.add_family_member(&owner, &member2, &FamilyRole::Member);
Expand All @@ -901,16 +871,7 @@ fn test_data_persists_across_repeated_operations() {
let env = Env::default();
env.mock_all_auths();

env.ledger().set(LedgerInfo {
protocol_version: 20,
sequence_number: 100,
timestamp: 1000,
network_id: [0; 32],
base_reserve: 10,
min_temp_entry_ttl: 100,
min_persistent_entry_ttl: 100,
max_entry_ttl: 700_000,
});
set_ledger_time(&env, 100, 1000);

let contract_id = env.register_contract(None, FamilyWallet);
let client = FamilyWalletClient::new(&env, &contract_id);
Expand Down
1 change: 1 addition & 0 deletions insurance/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@ remitwise-common = { path = "../remitwise-common" }
[dev-dependencies]
proptest = "1.10.0"
soroban-sdk = { version = "21.0.0", features = ["testutils"] }
testutils = { path = "../testutils" }


Loading
Loading