Refund referendum submission deposit (#12788)

* optinal submission deposit and migration

* refund submission deposit call, test, bench

* try runtime fixes

* assert for bench

* Only refund cancelled/approved referenda deposits

* update storage version

Co-authored-by: Gav <gavin@parity.io>
This commit is contained in:
Muharem Ismailov
2022-12-07 13:20:48 +01:00
committed by GitHub
parent 1657feae3b
commit 198faaa6f9
8 changed files with 593 additions and 241 deletions
+38
View File
@@ -443,6 +443,44 @@ fn refund_deposit_works() {
});
}
#[test]
fn refund_submission_deposit_works() {
new_test_ext().execute_with(|| {
// refund of non existing referendum fails.
let e = Error::<Test>::BadReferendum;
assert_noop!(Referenda::refund_submission_deposit(RuntimeOrigin::signed(1), 0), e);
// create a referendum.
let h = set_balance_proposal_bounded(1);
assert_ok!(Referenda::submit(
RuntimeOrigin::signed(1),
Box::new(RawOrigin::Root.into()),
h.clone(),
DispatchTime::At(10),
));
// refund of an ongoing referendum fails.
let e = Error::<Test>::BadStatus;
assert_noop!(Referenda::refund_submission_deposit(RuntimeOrigin::signed(3), 0), e);
// cancel referendum.
assert_ok!(Referenda::cancel(RuntimeOrigin::signed(4), 0));
// refund of canceled referendum works.
assert_ok!(Referenda::refund_submission_deposit(RuntimeOrigin::signed(3), 0));
// fails if already refunded.
let e = Error::<Test>::NoDeposit;
assert_noop!(Referenda::refund_submission_deposit(RuntimeOrigin::signed(2), 0), e);
// create second referendum.
assert_ok!(Referenda::submit(
RuntimeOrigin::signed(1),
Box::new(RawOrigin::Root.into()),
h,
DispatchTime::At(10),
));
// refund of a killed referendum fails.
assert_ok!(Referenda::kill(RuntimeOrigin::root(), 1));
let e = Error::<Test>::NoDeposit;
assert_noop!(Referenda::refund_submission_deposit(RuntimeOrigin::signed(2), 0), e);
});
}
#[test]
fn cancel_works() {
new_test_ext().execute_with(|| {