diff --git a/contracts/splitter/src/lib.rs b/contracts/splitter/src/lib.rs index 044a5e3..6388a7f 100644 --- a/contracts/splitter/src/lib.rs +++ b/contracts/splitter/src/lib.rs @@ -598,6 +598,10 @@ impl Splitter { Ok(load(&env, id)?.recipients.len()) } + pub fn get_shares(env: Env, id: u64) -> Result, Error> { + Ok(load(&env, id)?.shares) + } + #[must_use] pub fn held_tokens(env: Env, id: u64) -> Vec
{ env.storage() diff --git a/contracts/splitter/src/test.rs b/contracts/splitter/src/test.rs index 355f6d5..2533347 100644 --- a/contracts/splitter/src/test.rs +++ b/contracts/splitter/src/test.rs @@ -84,6 +84,32 @@ fn recipient_count_panics_on_missing_split() { assert_eq!(result, Err(Ok(Error::SplitNotFound))); } +#[test] +fn get_shares_returns_only_shares() { + let s = setup(); + let creator = Address::generate(&s.env); + let a = Address::generate(&s.env); + let b = Address::generate(&s.env); + let c = Address::generate(&s.env); + + let id = s.client.create_split( + &creator, + &vec![&s.env, acct(&a), acct(&b), acct(&c)], + &vec![&s.env, 5_000, 3_000, 2_000], + &None, + ); + + let shares = s.client.get_shares(&id); + assert_eq!(shares, vec![&s.env, 5_000u32, 3_000u32, 2_000u32]); +} + +#[test] +fn get_shares_panics_on_missing_split() { + let s = setup(); + let result = s.client.try_get_shares(&999_999u64); + assert_eq!(result, Err(Ok(Error::SplitNotFound))); +} + #[test] fn rejects_invalid_splits() { let s = setup();