Skip to content

Commit 8b2ee29

Browse files
authored
Merge pull request #714 from jiyiola396-pixel/fix/issue-656-657-contract-regression-tests
Add contract regression tests for delegate no-op and future-dated top-up
2 parents 67462bf + ba2a6dd commit 8b2ee29

1 file changed

Lines changed: 69 additions & 0 deletions

File tree

contracts/streaming/src/test.rs

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1177,6 +1177,49 @@ fn test_top_up_immediately_after_creation() {
11771177
assert_eq!(stream.amount_per_second, expected_rate);
11781178
}
11791179

1180+
#[test]
1181+
fn test_top_up_before_start_time_updates_deposit_and_rate() {
1182+
let t = TestEnv::setup();
1183+
let now = 1_000_000u64;
1184+
t.set_time(now);
1185+
let client = t.client();
1186+
1187+
let params = CreateStreamParams {
1188+
recipient: t.recipient.clone(),
1189+
token: t.token_id.clone(),
1190+
total_amount: 1_000_0000000,
1191+
start_time: now + 500,
1192+
end_time: now + 1500,
1193+
cliff_time: now + 500,
1194+
cliff_amount: 0,
1195+
};
1196+
let total = params.total_amount;
1197+
1198+
t.token().approve(
1199+
&t.sender,
1200+
&t.contract_id,
1201+
&total,
1202+
&(t.env.ledger().sequence() + 500),
1203+
);
1204+
let stream_id = client.create_stream(&t.sender, &params);
1205+
1206+
let additional = 250_0000000i128;
1207+
t.token().approve(
1208+
&t.sender,
1209+
&t.contract_id,
1210+
&additional,
1211+
&(t.env.ledger().sequence() + 500),
1212+
);
1213+
client.top_up(&stream_id, &additional);
1214+
1215+
let stream = client.get_stream(&stream_id);
1216+
assert_eq!(stream.deposited_amount, total + additional);
1217+
assert_eq!(stream.start_time, params.start_time);
1218+
assert_eq!(stream.end_time, params.end_time);
1219+
assert_eq!(stream.linear_amount, total + additional);
1220+
assert_eq!(stream.amount_per_second, (total + additional) / 1000i128);
1221+
}
1222+
11801223
#[test]
11811224
fn test_top_up_at_cliff_time() {
11821225
let t = TestEnv::setup();
@@ -1525,6 +1568,32 @@ fn test_get_delegate_none_when_never_set() {
15251568
assert_eq!(client.get_delegate(&stream_id), None);
15261569
}
15271570

1571+
#[test]
1572+
fn test_remove_delegate_is_safe_noop_when_never_set() {
1573+
let t = TestEnv::setup();
1574+
let now = 1_000_000u64;
1575+
t.set_time(now);
1576+
let client = t.client();
1577+
let params = t.default_params(now);
1578+
let total = params.total_amount;
1579+
1580+
t.token().approve(
1581+
&t.sender,
1582+
&t.contract_id,
1583+
&total,
1584+
&(t.env.ledger().sequence() + 500),
1585+
);
1586+
let stream_id = client.create_stream(&t.sender, &params);
1587+
1588+
assert_eq!(client.get_delegate(&stream_id), None);
1589+
1590+
let result = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| {
1591+
client.remove_delegate(&stream_id);
1592+
}));
1593+
assert!(result.is_ok(), "remove_delegate should be a safe no-op");
1594+
assert_eq!(client.get_delegate(&stream_id), None);
1595+
}
1596+
15281597
#[test]
15291598
fn test_delegate_can_withdraw() {
15301599
let t = TestEnv::setup();

0 commit comments

Comments
 (0)