mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 15:41:02 +00:00
Alliance pallet: retirement notice call (#11970)
* Alliance pallet: retirement notice * add alliance pallet to benchmark list for dev chain * fix type * ".git/.scripts/bench-bot.sh" pallet dev pallet_alliance * ".git/.scripts/bench-bot.sh" pallet dev pallet_alliance * link weight generated by bench for retirement_notice method * migration to clear UpForKicking storage prefix * rename migration from v1 to v0_to_v1 * Apply suggestions from code review Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * rename `retirement-notice to give-retirement-notice * Apply suggestions from code review Co-authored-by: Squirrel <gilescope@gmail.com> * review fixes: update doc, saturating add, BlockNumber type alias * add suffix to duratin consts *_IN_BLOCKS * ".git/.scripts/bench-bot.sh" pallet dev pallet_alliance * add negative tests (#11995) * add negative tests * remove tests powerless asserts checking against announcment origin * assert bad origin from announcement origin checks Co-authored-by: muharem <ismailov.m.h@gmail.com> Co-authored-by: command-bot <> Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Squirrel <gilescope@gmail.com>
This commit is contained in:
@@ -19,7 +19,7 @@
|
||||
|
||||
use sp_runtime::traits::Hash;
|
||||
|
||||
use frame_support::{assert_noop, assert_ok, Hashable};
|
||||
use frame_support::{assert_noop, assert_ok, error::BadOrigin, Hashable};
|
||||
use frame_system::{EventRecord, Phase};
|
||||
|
||||
use super::*;
|
||||
@@ -241,6 +241,9 @@ fn set_rule_works() {
|
||||
fn announce_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
let cid = test_cid();
|
||||
|
||||
assert_noop!(Alliance::announce(Origin::signed(2), cid.clone()), BadOrigin);
|
||||
|
||||
assert_ok!(Alliance::announce(Origin::signed(3), cid.clone()));
|
||||
assert_eq!(Alliance::announcements(), vec![cid.clone()]);
|
||||
|
||||
@@ -390,48 +393,111 @@ fn elevate_ally_works() {
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn retire_works() {
|
||||
fn give_retirement_notice_work() {
|
||||
new_test_ext().execute_with(|| {
|
||||
let proposal = make_kick_member_proposal(2);
|
||||
let proposal_len: u32 = proposal.using_encoded(|p| p.len() as u32);
|
||||
assert_ok!(Alliance::propose(
|
||||
Origin::signed(1),
|
||||
3,
|
||||
Box::new(proposal.clone()),
|
||||
proposal_len
|
||||
));
|
||||
assert_noop!(Alliance::retire(Origin::signed(2)), Error::<Test, ()>::UpForKicking);
|
||||
|
||||
assert_noop!(Alliance::retire(Origin::signed(4)), Error::<Test, ()>::NotMember);
|
||||
assert_noop!(
|
||||
Alliance::give_retirement_notice(Origin::signed(4)),
|
||||
Error::<Test, ()>::NotMember
|
||||
);
|
||||
|
||||
assert_eq!(Alliance::members(MemberRole::Fellow), vec![3]);
|
||||
assert_ok!(Alliance::give_retirement_notice(Origin::signed(3)));
|
||||
assert_eq!(Alliance::members(MemberRole::Fellow), Vec::<u64>::new());
|
||||
assert_eq!(Alliance::members(MemberRole::Retiring), vec![3]);
|
||||
System::assert_last_event(mock::Event::Alliance(
|
||||
crate::Event::MemberRetirementPeriodStarted { member: (3) },
|
||||
));
|
||||
|
||||
assert_noop!(
|
||||
Alliance::give_retirement_notice(Origin::signed(3)),
|
||||
Error::<Test, ()>::AlreadyRetiring
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn retire_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_noop!(
|
||||
Alliance::retire(Origin::signed(2)),
|
||||
Error::<Test, ()>::RetirementNoticeNotGiven
|
||||
);
|
||||
|
||||
assert_noop!(
|
||||
Alliance::retire(Origin::signed(4)),
|
||||
Error::<Test, ()>::RetirementNoticeNotGiven
|
||||
);
|
||||
|
||||
assert_eq!(Alliance::members(MemberRole::Fellow), vec![3]);
|
||||
assert_ok!(Alliance::give_retirement_notice(Origin::signed(3)));
|
||||
assert_noop!(
|
||||
Alliance::retire(Origin::signed(3)),
|
||||
Error::<Test, ()>::RetirementPeriodNotPassed
|
||||
);
|
||||
System::set_block_number(System::block_number() + RetirementPeriod::get());
|
||||
assert_ok!(Alliance::retire(Origin::signed(3)));
|
||||
assert_eq!(Alliance::members(MemberRole::Fellow), Vec::<u64>::new());
|
||||
System::assert_last_event(mock::Event::Alliance(crate::Event::MemberRetired {
|
||||
member: (3),
|
||||
unreserved: None,
|
||||
}));
|
||||
|
||||
// Move time on:
|
||||
System::set_block_number(System::block_number() + RetirementPeriod::get());
|
||||
|
||||
assert_powerless(Origin::signed(3));
|
||||
});
|
||||
}
|
||||
|
||||
fn assert_powerless(user: Origin) {
|
||||
//vote / veto with a valid propsal
|
||||
let cid = test_cid();
|
||||
let proposal = make_proposal(42);
|
||||
|
||||
assert_noop!(Alliance::init_members(user.clone(), vec![], vec![], vec![]), BadOrigin);
|
||||
|
||||
assert_noop!(Alliance::set_rule(user.clone(), cid.clone()), BadOrigin);
|
||||
|
||||
assert_noop!(Alliance::retire(user.clone()), Error::<Test, ()>::RetirementNoticeNotGiven);
|
||||
|
||||
assert_noop!(Alliance::give_retirement_notice(user.clone()), Error::<Test, ()>::NotMember);
|
||||
|
||||
assert_noop!(Alliance::elevate_ally(user.clone(), 4), BadOrigin);
|
||||
|
||||
assert_noop!(Alliance::kick_member(user.clone(), 1), BadOrigin);
|
||||
|
||||
assert_noop!(Alliance::nominate_ally(user.clone(), 4), Error::<Test, ()>::NoVotingRights);
|
||||
|
||||
assert_noop!(
|
||||
Alliance::propose(user.clone(), 5, Box::new(proposal), 1000),
|
||||
Error::<Test, ()>::NoVotingRights
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn kick_member_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
let proposal = make_kick_member_proposal(2);
|
||||
let proposal_len: u32 = proposal.using_encoded(|p| p.len() as u32);
|
||||
assert_ok!(Alliance::propose(
|
||||
Origin::signed(1),
|
||||
3,
|
||||
Box::new(proposal.clone()),
|
||||
proposal_len
|
||||
));
|
||||
assert_eq!(Alliance::up_for_kicking(2), true);
|
||||
assert_eq!(Alliance::members(MemberRole::Founder), vec![1, 2]);
|
||||
assert_noop!(Alliance::kick_member(Origin::signed(4), 4), BadOrigin);
|
||||
|
||||
assert_noop!(Alliance::kick_member(Origin::signed(2), 4), Error::<Test, ()>::NotMember);
|
||||
|
||||
<DepositOf<Test, ()>>::insert(2, 25);
|
||||
assert_eq!(Alliance::members(MemberRole::Founder), vec![1, 2]);
|
||||
assert_ok!(Alliance::kick_member(Origin::signed(2), 2));
|
||||
assert_eq!(Alliance::members(MemberRole::Founder), vec![1]);
|
||||
assert_eq!(<DepositOf<Test, ()>>::get(2), None);
|
||||
System::assert_last_event(mock::Event::Alliance(crate::Event::MemberKicked {
|
||||
member: (2),
|
||||
slashed: Some(25),
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn add_unscrupulous_items_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_noop!(Alliance::add_unscrupulous_items(Origin::signed(2), vec![]), BadOrigin);
|
||||
|
||||
assert_ok!(Alliance::add_unscrupulous_items(
|
||||
Origin::signed(3),
|
||||
vec![
|
||||
@@ -455,6 +521,8 @@ fn add_unscrupulous_items_works() {
|
||||
#[test]
|
||||
fn remove_unscrupulous_items_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_noop!(Alliance::remove_unscrupulous_items(Origin::signed(2), vec![]), BadOrigin);
|
||||
|
||||
assert_noop!(
|
||||
Alliance::remove_unscrupulous_items(
|
||||
Origin::signed(3),
|
||||
|
||||
Reference in New Issue
Block a user