Alliance pallet: split force_set_members call (#12179)

* Alliance pallet: split force_set_members call

* use counts for event

* ".git/.scripts/bench-bot.sh" pallet dev pallet_alliance

Co-authored-by: command-bot <>
This commit is contained in:
Muharem Ismailov
2022-09-05 17:08:50 +02:00
committed by GitHub
parent b6f67b08ed
commit f919894c84
8 changed files with 358 additions and 512 deletions
+71 -115
View File
@@ -26,19 +26,57 @@ use crate::mock::*;
type AllianceMotionEvent = pallet_collective::Event<Test, pallet_collective::Instance1>;
#[test]
fn force_set_members_works() {
fn init_members_works() {
new_test_ext().execute_with(|| {
// alliance must be reset first, no witness data
assert_noop!(
Alliance::init_members(Origin::root(), vec![8], vec![], vec![],),
Error::<Test, ()>::AllianceAlreadyInitialized,
);
// give a retirement notice to check later a retiring member not removed
assert_ok!(Alliance::give_retirement_notice(Origin::signed(2)));
assert!(Alliance::is_member_of(&2, MemberRole::Retiring));
// disband the Alliance to init new
assert_ok!(Alliance::disband(Origin::root(), DisbandWitness::new(2, 0)));
// fails without root
assert_noop!(Alliance::init_members(Origin::signed(1), vec![], vec![], vec![]), BadOrigin);
// founders missing, other members given
assert_noop!(
Alliance::init_members(Origin::root(), vec![], vec![4], vec![2],),
Error::<Test, ()>::FoundersMissing,
);
// success call
assert_ok!(Alliance::init_members(Origin::root(), vec![8, 5], vec![4], vec![2],));
// assert new set of voting members
assert_eq!(Alliance::voting_members_sorted(), vec![4, 5, 8]);
// assert new members member
assert!(Alliance::is_founder(&8));
assert!(Alliance::is_founder(&5));
assert!(Alliance::is_fellow(&4));
assert!(Alliance::is_ally(&2));
// assert a retiring member from previous Alliance not removed
assert!(Alliance::is_member_of(&2, MemberRole::Retiring));
System::assert_last_event(mock::Event::Alliance(crate::Event::MembersInitialized {
founders: vec![5, 8],
fellows: vec![4],
allies: vec![2],
}));
})
}
#[test]
fn disband_works() {
new_test_ext().execute_with(|| {
// ensure alliance is set
assert_eq!(Alliance::voting_members_sorted(), vec![1, 2, 3]);
// creating and proposing proposals
let (proposal, proposal_len, hash) = make_remark_proposal(42);
assert_ok!(Alliance::propose(Origin::signed(1), 3, Box::new(proposal), proposal_len));
let (k_proposal, k_proposal_len, k_hash) = make_kick_member_proposal(2);
assert_ok!(Alliance::propose(Origin::signed(1), 3, Box::new(k_proposal), k_proposal_len));
let mut proposals = vec![hash, k_hash];
// give a retirement notice to check later a retiring member not removed
assert_ok!(Alliance::give_retirement_notice(Origin::signed(2)));
assert!(Alliance::is_member_of(&2, MemberRole::Retiring));
@@ -50,124 +88,46 @@ fn force_set_members_works() {
assert_eq!(Balances::free_balance(9), 15);
assert!(Alliance::is_member_of(&9, MemberRole::Ally));
// ensure proposal is listed as active proposal
assert_eq!(<Test as Config>::ProposalProvider::proposals(), proposals);
assert_eq!(<Test as Config>::ProposalProvider::proposals_count(), 2);
// fails without root
assert_noop!(Alliance::disband(Origin::signed(1), Default::default()), BadOrigin);
// bad witness data checks
assert_noop!(
Alliance::force_set_members(
Origin::signed(1),
vec![],
vec![],
vec![],
Default::default()
),
BadOrigin
Alliance::disband(Origin::root(), Default::default(),),
Error::<Test, ()>::BadWitness
);
// nothing to do, witness data is default, new members not provided.
assert_ok!(Alliance::force_set_members(
Origin::root(),
vec![],
vec![],
vec![],
Default::default()
));
// alliance must be reset first, no witness data.
assert_noop!(
Alliance::force_set_members(
Origin::root(),
vec![8],
vec![],
vec![],
Default::default()
),
Error::<Test, ()>::AllianceAlreadyInitialized,
);
// wrong witness data checks
assert_noop!(
Alliance::force_set_members(
Origin::root(),
vec![],
vec![],
vec![],
ForceSetWitness::new(1, 3, 1)
),
Alliance::disband(Origin::root(), DisbandWitness::new(1, 1)),
Error::<Test, ()>::BadWitness,
);
assert_noop!(
Alliance::force_set_members(
Origin::root(),
vec![],
vec![],
vec![],
ForceSetWitness::new(2, 1, 1)
),
Alliance::disband(Origin::root(), DisbandWitness::new(2, 0)),
Error::<Test, ()>::BadWitness,
);
assert_noop!(
Alliance::force_set_members(
Origin::root(),
vec![],
vec![],
vec![],
ForceSetWitness::new(1, 3, 0)
),
Error::<Test, ()>::BadWitness,
);
// founders missing, other members given
assert_noop!(
Alliance::force_set_members(
Origin::root(),
vec![],
vec![4],
vec![2],
ForceSetWitness::new(2, 3, 1)
),
Error::<Test, ()>::FoundersMissing,
);
// success call
assert_ok!(Alliance::force_set_members(
Origin::root(),
vec![8, 5],
vec![4],
vec![2],
ForceSetWitness::new(2, 3, 1)
));
assert_ok!(Alliance::disband(Origin::root(), DisbandWitness::new(2, 1)));
// assert new set of voting members
assert_eq!(Alliance::voting_members_sorted(), vec![4, 5, 8]);
// assert new ally member
assert!(Alliance::is_ally(&2));
// assert a retiring member from previous Alliance not removed
assert!(Alliance::is_member_of(&2, MemberRole::Retiring));
// assert old alliance disband.
// assert members disband
assert!(!Alliance::is_member(&1));
assert!(!Alliance::is_member(&3));
assert!(!Alliance::is_member(&9));
assert!(!Alliance::is_initialized());
// assert a retiring member from the previous Alliance not removed
assert!(Alliance::is_member_of(&2, MemberRole::Retiring));
// deposit unreserved
assert_eq!(Balances::free_balance(9), 40);
// all proposals are removed
assert_eq!(<Test as Config>::ProposalProvider::proposals(), vec![]);
assert_eq!(<Test as Config>::ProposalProvider::proposals_count(), 0);
// assert events
proposals.sort();
assert_prev_event(mock::Event::Alliance(crate::Event::AllianceDisbanded {
members: vec![1, 3, 9],
proposals,
System::assert_last_event(mock::Event::Alliance(crate::Event::AllianceDisbanded {
voting_members: 2,
ally_members: 1,
unreserved: 1,
}));
System::assert_last_event(mock::Event::Alliance(crate::Event::MembersInitialized {
founders: vec![5, 8],
fellows: vec![4],
allies: vec![2],
}));
// the Alliance must be set first
assert_noop!(
Alliance::disband(Origin::root(), DisbandWitness::new(100, 100)),
Error::<Test, ()>::AllianceNotYetInitialized,
);
})
}
@@ -588,14 +548,10 @@ fn assert_powerless(user: Origin) {
let cid = test_cid();
let (proposal, _, _) = make_kick_member_proposal(42);
assert_noop!(Alliance::init_members(user.clone(), vec![], vec![], vec![],), BadOrigin);
assert_noop!(
Alliance::force_set_members(
user.clone(),
vec![],
vec![],
vec![],
ForceSetWitness { voting_members: 3, ..Default::default() }
),
Alliance::disband(user.clone(), DisbandWitness { voting_members: 3, ..Default::default() }),
BadOrigin
);