Repository navigation
Expand file tree
/
Copy pathpatch.txt
More file actions
62 lines (52 loc) · 2.25 KB
/
Copy pathpatch.txt
File metadata and controls
62 lines (52 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<<<<<<< HEAD
fn test_milestone_releases() {
let env = Env::default();
env.mock_all_auths();
let admin = Address::generate(&env);
let contract_id = env.register_contract(None, TreasuryContract);
let client = TreasuryContractClient::new(&env, &contract_id);
client.initialize(&soroban_sdk::String::from_str(&env, "org"), &admin);
let token = env
.register_stellar_asset_contract_v2(admin.clone())
.address();
let token_admin = token::StellarAssetClient::new(&env, &token);
let token_client = token::TokenClient::new(&env, &token);
let to = Address::generate(&env);
let mid = client.init_milestone_disbursement(&admin, &token, &to, &1000, &3);
assert_eq!(mid, 1);
// Deposit 1000 into treasury so we have funds
token_admin.mint(&admin, &1000);
client.deposit(&admin, &token, &1000);
// release milestone 1
client.release_next_milestone(&admin, &mid);
assert_eq!(token_client.balance(&to), 333); // 1000 / 3
// release milestone 2
client.release_next_milestone(&admin, &mid);
assert_eq!(token_client.balance(&to), 666);
// release milestone 3 (final, catches remainder)
client.release_next_milestone(&admin, &mid);
assert_eq!(token_client.balance(&to), 1000);
// releasing beyond fails
let res = client.try_release_next_milestone(&admin, &mid);
assert!(res.is_err());
}
=======
fn standard_events_emitted() {
// Configuration changes publish a TreasuryConfigUpdated event. Setting a
// (here placeholder) policy/budget address is enough to exercise the emit
// path; we avoid a subsequent withdraw on this env because a real policy
// gate is not wired up.
let h = setup("vault", 0);
h.client.set_policy(&h.admin, &h.admin);
assert_event(&h.env, "TreasuryConfigUpdated");
h.client.set_budget(&h.admin, &h.admin);
assert_event(&h.env, "TreasuryConfigUpdated");
// A successful withdraw (no policy/budget gates configured) publishes a
// TransferExecuted event.
let h2 = setup("vault", 1_000);
let recipient = Address::generate(&h2.env);
h2.client.deposit(&h2.admin, &h2.asset, &1_000);
h2.client.withdraw(&h2.admin, &h2.asset, &recipient, &100);
assert_event(&h2.env, "TransferExecuted");
}
>>>>>>> origin/main