mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-29 05:37:58 +00:00
Tidy Democracy (#10867)
* add test * Assorted refactorings * complete test * saturating math * final check * use `default` Co-authored-by: Gav Wood <gavin@parity.io>
This commit is contained in:
@@ -158,7 +158,7 @@ fn conviction_should_be_honored_in_delegation() {
|
||||
// If transactor voted, delegated vote is overwritten.
|
||||
new_test_ext().execute_with(|| {
|
||||
let r = begin_referendum();
|
||||
// Delegate, undelegate and vote.
|
||||
// Delegate and vote.
|
||||
assert_ok!(Democracy::delegate(Origin::signed(2), 1, Conviction::Locked6x, 20));
|
||||
assert_ok!(Democracy::vote(Origin::signed(1), r, aye(1)));
|
||||
// Delegated vote is huge.
|
||||
@@ -177,3 +177,42 @@ fn split_vote_delegation_should_be_ignored() {
|
||||
assert_eq!(tally(r), Tally { ayes: 1, nays: 0, turnout: 10 });
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn redelegation_keeps_lock() {
|
||||
// If transactor voted, delegated vote is overwritten.
|
||||
new_test_ext().execute_with(|| {
|
||||
let r = begin_referendum();
|
||||
// Delegate and vote.
|
||||
assert_ok!(Democracy::delegate(Origin::signed(2), 1, Conviction::Locked6x, 20));
|
||||
assert_ok!(Democracy::vote(Origin::signed(1), r, aye(1)));
|
||||
// Delegated vote is huge.
|
||||
assert_eq!(tally(r), Tally { ayes: 121, nays: 0, turnout: 30 });
|
||||
|
||||
let mut prior_lock = vote::PriorLock::default();
|
||||
|
||||
// Locked balance of delegator exists
|
||||
assert_eq!(VotingOf::<Test>::get(2).locked_balance(), 20);
|
||||
assert_eq!(VotingOf::<Test>::get(2).prior(), &prior_lock);
|
||||
|
||||
// Delegate someone else at a lower conviction and amount
|
||||
assert_ok!(Democracy::delegate(Origin::signed(2), 3, Conviction::None, 10));
|
||||
|
||||
// 6x prior should appear w/ locked balance.
|
||||
prior_lock.accumulate(98, 20);
|
||||
assert_eq!(VotingOf::<Test>::get(2).prior(), &prior_lock);
|
||||
assert_eq!(VotingOf::<Test>::get(2).locked_balance(), 20);
|
||||
// Unlock shouldn't work
|
||||
assert_ok!(Democracy::unlock(Origin::signed(2), 2));
|
||||
assert_eq!(VotingOf::<Test>::get(2).prior(), &prior_lock);
|
||||
assert_eq!(VotingOf::<Test>::get(2).locked_balance(), 20);
|
||||
|
||||
fast_forward_to(100);
|
||||
|
||||
// Now unlock can remove the prior lock and reduce the locked amount.
|
||||
assert_eq!(VotingOf::<Test>::get(2).prior(), &prior_lock);
|
||||
assert_ok!(Democracy::unlock(Origin::signed(2), 2));
|
||||
assert_eq!(VotingOf::<Test>::get(2).prior(), &vote::PriorLock::default());
|
||||
assert_eq!(VotingOf::<Test>::get(2).locked_balance(), 10);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user