Add execute_with to TestExternalities (#3793)

This function executes the given closure in a context where the test
externalities are set. This makes the srml tests easier to write, as the
test externalities need to be created anyway.
This commit is contained in:
Bastian Köcher
2019-10-10 15:01:30 +02:00
committed by GitHub
parent 34c7338211
commit 4dbc9265ee
44 changed files with 2369 additions and 2645 deletions
+38 -40
View File
@@ -594,7 +594,7 @@ mod tests {
use primitives::H256;
use sr_primitives::{
Perbill, testing::Header, BuildStorage,
traits::{BlakeTwo256, IdentityLookup, Block as BlockT}, set_and_run_with_externalities
traits::{BlakeTwo256, IdentityLookup, Block as BlockT},
};
use crate as elections;
@@ -770,7 +770,7 @@ mod tests {
#[test]
fn params_should_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
System::set_block_number(1);
assert_eq!(Elections::desired_members(), 2);
assert_eq!(Elections::term_duration(), 5);
@@ -790,7 +790,7 @@ mod tests {
#[test]
fn simple_candidate_submission_should_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_eq!(Elections::candidates(), Vec::<u64>::new());
assert!(Elections::is_candidate(&1).is_err());
assert!(Elections::is_candidate(&2).is_err());
@@ -817,7 +817,7 @@ mod tests {
#[test]
fn simple_candidate_submission_with_no_votes_should_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_eq!(Elections::candidates(), Vec::<u64>::new());
assert_ok!(Elections::submit_candidacy(Origin::signed(1)));
@@ -844,7 +844,7 @@ mod tests {
#[test]
fn dupe_candidate_submission_should_not_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_eq!(Elections::candidates(), Vec::<u64>::new());
assert_ok!(Elections::submit_candidacy(Origin::signed(1)));
assert_eq!(Elections::candidates(), vec![1]);
@@ -858,7 +858,7 @@ mod tests {
#[test]
fn member_candidacy_submission_should_not_work() {
// critically important to make sure that outgoing candidates and losers are not mixed up.
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::vote(Origin::signed(2), vec![5], 20));
@@ -878,7 +878,7 @@ mod tests {
#[test]
fn poor_candidate_submission_should_not_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_eq!(Elections::candidates(), Vec::<u64>::new());
assert_noop!(
Elections::submit_candidacy(Origin::signed(7)),
@@ -889,7 +889,7 @@ mod tests {
#[test]
fn simple_voting_should_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_eq!(Elections::candidates(), Vec::<u64>::new());
assert_eq!(balances(&2), (20, 0));
@@ -903,7 +903,7 @@ mod tests {
#[test]
fn can_vote_with_custom_stake() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_eq!(Elections::candidates(), Vec::<u64>::new());
assert_eq!(balances(&2), (20, 0));
@@ -917,7 +917,7 @@ mod tests {
#[test]
fn can_update_votes_and_stake() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_eq!(balances(&2), (20, 0));
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
@@ -938,7 +938,7 @@ mod tests {
#[test]
fn cannot_vote_for_no_candidate() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_noop!(
Elections::vote(Origin::signed(2), vec![], 20),
"cannot vote when no candidates or members exist"
@@ -949,7 +949,7 @@ mod tests {
#[test]
fn can_vote_for_old_members_even_when_no_new_candidates() {
// let allowed_votes = candidates_count as usize + Self::members().len()
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -967,7 +967,7 @@ mod tests {
#[test]
fn cannot_vote_for_more_than_candidates() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -980,7 +980,7 @@ mod tests {
#[test]
fn cannot_vote_for_less_than_ed() {
set_and_run_with_externalities(&mut ExtBuilder::default().voter_bond(8).build(), || {
ExtBuilder::default().voter_bond(8).build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -993,7 +993,7 @@ mod tests {
#[test]
fn can_vote_for_more_than_total_balance_but_moot() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -1006,7 +1006,7 @@ mod tests {
#[test]
fn remove_voter_should_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().voter_bond(8).build(), || {
ExtBuilder::default().voter_bond(8).build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::vote(Origin::signed(2), vec![5], 20));
@@ -1031,14 +1031,14 @@ mod tests {
#[test]
fn non_voter_remove_should_not_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_noop!(Elections::remove_voter(Origin::signed(3)), "must be a voter");
});
}
#[test]
fn dupe_remove_should_fail() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::vote(Origin::signed(2), vec![5], 20));
@@ -1051,7 +1051,7 @@ mod tests {
#[test]
fn removed_voter_should_not_be_counted() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));
@@ -1071,7 +1071,7 @@ mod tests {
#[test]
fn reporter_must_be_voter() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_noop!(
Elections::report_defunct_voter(Origin::signed(1), 2),
"reporter must be a voter",
@@ -1081,7 +1081,7 @@ mod tests {
#[test]
fn can_detect_defunct_voter() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -1116,7 +1116,7 @@ mod tests {
#[test]
fn report_voter_should_work_and_earn_reward() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -1148,8 +1148,7 @@ mod tests {
#[test]
fn report_voter_should_slash_when_bad_report() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -1174,13 +1173,12 @@ mod tests {
assert_eq!(balances(&4), (35, 5));
assert_eq!(balances(&5), (45, 3));
});
});
}
#[test]
fn simple_voting_rounds_should_work() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));
@@ -1215,7 +1213,7 @@ mod tests {
#[test]
fn defunct_voter_will_be_counted() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
// This guy's vote is pointless for this round.
@@ -1243,7 +1241,7 @@ mod tests {
#[test]
fn only_desired_seats_are_chosen() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));
@@ -1264,7 +1262,7 @@ mod tests {
#[test]
fn phragmen_should_not_self_vote() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -1279,7 +1277,7 @@ mod tests {
#[test]
fn runners_up_should_be_kept() {
set_and_run_with_externalities(&mut ExtBuilder::default().desired_runners_up(2).build(), || {
ExtBuilder::default().desired_runners_up(2).build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));
@@ -1306,7 +1304,7 @@ mod tests {
#[test]
fn runners_up_should_be_next_candidates() {
set_and_run_with_externalities(&mut ExtBuilder::default().desired_runners_up(2).build(), || {
ExtBuilder::default().desired_runners_up(2).build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));
@@ -1333,7 +1331,7 @@ mod tests {
#[test]
fn runners_up_lose_bond_once_outgoing() {
set_and_run_with_externalities(&mut ExtBuilder::default().desired_runners_up(1).build(), || {
ExtBuilder::default().desired_runners_up(1).build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(2)));
@@ -1364,7 +1362,7 @@ mod tests {
#[test]
fn current_members_are_always_implicitly_next_candidate() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -1400,7 +1398,7 @@ mod tests {
fn election_state_is_uninterrupted() {
// what I mean by uninterrupted:
// given no input or stimulants the same members are re-elected.
set_and_run_with_externalities(&mut ExtBuilder::default().desired_runners_up(2).build(), || {
ExtBuilder::default().desired_runners_up(2).build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));
@@ -1433,7 +1431,7 @@ mod tests {
#[test]
fn remove_members_triggers_election() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
@@ -1459,7 +1457,7 @@ mod tests {
#[test]
fn seats_should_be_released_when_no_vote() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));
@@ -1493,7 +1491,7 @@ mod tests {
#[test]
fn outgoing_will_get_the_bond_back() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_eq!(balances(&5), (50, 0));
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
@@ -1519,7 +1517,7 @@ mod tests {
#[test]
fn losers_will_lose_the_bond() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));
@@ -1542,7 +1540,7 @@ mod tests {
#[test]
fn incoming_outgoing_are_reported() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(5)));
@@ -1587,7 +1585,7 @@ mod tests {
#[test]
fn invalid_votes_are_moot() {
set_and_run_with_externalities(&mut ExtBuilder::default().build(), || {
ExtBuilder::default().build().execute_with(|| {
assert_ok!(Elections::submit_candidacy(Origin::signed(4)));
assert_ok!(Elections::submit_candidacy(Origin::signed(3)));