mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 05:11:09 +00:00
Migrate membership, nicks, scored-pool and session to decl_error (#4463)
* Migrate membership, nicks, scored-pool and session to decl_error * Fix tests * Update frame/scored-pool/src/tests.rs Co-Authored-By: Shawn Tabrizi <shawntabrizi@gmail.com> * Remove InsufficientBalance error from scored-pool * Replace Error::<Test, DefaultInstance> with Error::<Test, _> Co-authored-by: Shawn Tabrizi <shawntabrizi@gmail.com>
This commit is contained in:
committed by
Shawn Tabrizi
parent
9950ea98fc
commit
328563f8d4
@@ -24,7 +24,7 @@
|
||||
|
||||
use sp_std::prelude::*;
|
||||
use frame_support::{
|
||||
decl_module, decl_storage, decl_event,
|
||||
decl_module, decl_storage, decl_event, decl_error,
|
||||
traits::{ChangeMembers, InitializeMembers},
|
||||
weights::SimpleDispatchInfo,
|
||||
};
|
||||
@@ -93,6 +93,16 @@ decl_event!(
|
||||
}
|
||||
);
|
||||
|
||||
decl_error! {
|
||||
/// Error for the nicks module.
|
||||
pub enum Error for Module<T: Trait<I>, I: Instance> {
|
||||
/// Already a member.
|
||||
AlreadyMember,
|
||||
/// Not a member.
|
||||
NotMember,
|
||||
}
|
||||
}
|
||||
|
||||
decl_module! {
|
||||
pub struct Module<T: Trait<I>, I: Instance=DefaultInstance>
|
||||
for enum Call
|
||||
@@ -107,11 +117,10 @@ decl_module! {
|
||||
fn add_member(origin, who: T::AccountId) {
|
||||
T::AddOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)
|
||||
.map_err(|_| "bad origin")?;
|
||||
.or_else(ensure_root)?;
|
||||
|
||||
let mut members = <Members<T, I>>::get();
|
||||
let location = members.binary_search(&who).err().ok_or("already a member")?;
|
||||
let location = members.binary_search(&who).err().ok_or(Error::<T, I>::AlreadyMember)?;
|
||||
members.insert(location, who.clone());
|
||||
<Members<T, I>>::put(&members);
|
||||
|
||||
@@ -127,11 +136,10 @@ decl_module! {
|
||||
fn remove_member(origin, who: T::AccountId) {
|
||||
T::RemoveOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)
|
||||
.map_err(|_| "bad origin")?;
|
||||
.or_else(ensure_root)?;
|
||||
|
||||
let mut members = <Members<T, I>>::get();
|
||||
let location = members.binary_search(&who).ok().ok_or("not a member")?;
|
||||
let location = members.binary_search(&who).ok().ok_or(Error::<T, I>::NotMember)?;
|
||||
members.remove(location);
|
||||
<Members<T, I>>::put(&members);
|
||||
|
||||
@@ -147,14 +155,13 @@ decl_module! {
|
||||
fn swap_member(origin, remove: T::AccountId, add: T::AccountId) {
|
||||
T::SwapOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)
|
||||
.map_err(|_| "bad origin")?;
|
||||
.or_else(ensure_root)?;
|
||||
|
||||
if remove == add { return Ok(()) }
|
||||
|
||||
let mut members = <Members<T, I>>::get();
|
||||
let location = members.binary_search(&remove).ok().ok_or("not a member")?;
|
||||
let _ = members.binary_search(&add).err().ok_or("already a member")?;
|
||||
let location = members.binary_search(&remove).ok().ok_or(Error::<T, I>::NotMember)?;
|
||||
let _ = members.binary_search(&add).err().ok_or(Error::<T, I>::AlreadyMember)?;
|
||||
members[location] = add.clone();
|
||||
members.sort();
|
||||
<Members<T, I>>::put(&members);
|
||||
@@ -176,8 +183,7 @@ decl_module! {
|
||||
fn reset_members(origin, members: Vec<T::AccountId>) {
|
||||
T::ResetOrigin::try_origin(origin)
|
||||
.map(|_| ())
|
||||
.or_else(ensure_root)
|
||||
.map_err(|_| "bad origin")?;
|
||||
.or_else(ensure_root)?;
|
||||
|
||||
let mut members = members;
|
||||
members.sort();
|
||||
@@ -198,8 +204,8 @@ decl_module! {
|
||||
|
||||
if remove != new {
|
||||
let mut members = <Members<T, I>>::get();
|
||||
let location = members.binary_search(&remove).ok().ok_or("not a member")?;
|
||||
let _ = members.binary_search(&new).err().ok_or("already a member")?;
|
||||
let location = members.binary_search(&remove).ok().ok_or(Error::<T, I>::NotMember)?;
|
||||
let _ = members.binary_search(&new).err().ok_or(Error::<T, I>::AlreadyMember)?;
|
||||
members[location] = new.clone();
|
||||
members.sort();
|
||||
<Members<T, I>>::put(&members);
|
||||
@@ -225,7 +231,7 @@ mod tests {
|
||||
use sp_core::H256;
|
||||
// The testing primitives are very useful for avoiding having to work with signatures
|
||||
// or public keys. `u64` is used as the `AccountId` and no `Signature`s are requried.
|
||||
use sp_runtime::{Perbill, traits::{BlakeTwo256, IdentityLookup}, testing::Header};
|
||||
use sp_runtime::{Perbill, traits::{BlakeTwo256, IdentityLookup}, testing::Header, traits::BadOrigin};
|
||||
use frame_system::EnsureSignedBy;
|
||||
|
||||
impl_outer_origin! {
|
||||
@@ -328,8 +334,8 @@ mod tests {
|
||||
#[test]
|
||||
fn add_member_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_noop!(Membership::add_member(Origin::signed(5), 15), "bad origin");
|
||||
assert_noop!(Membership::add_member(Origin::signed(1), 10), "already a member");
|
||||
assert_noop!(Membership::add_member(Origin::signed(5), 15), BadOrigin);
|
||||
assert_noop!(Membership::add_member(Origin::signed(1), 10), Error::<Test, _>::AlreadyMember);
|
||||
assert_ok!(Membership::add_member(Origin::signed(1), 15));
|
||||
assert_eq!(Membership::members(), vec![10, 15, 20, 30]);
|
||||
assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members());
|
||||
@@ -339,8 +345,8 @@ mod tests {
|
||||
#[test]
|
||||
fn remove_member_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_noop!(Membership::remove_member(Origin::signed(5), 20), "bad origin");
|
||||
assert_noop!(Membership::remove_member(Origin::signed(2), 15), "not a member");
|
||||
assert_noop!(Membership::remove_member(Origin::signed(5), 20), BadOrigin);
|
||||
assert_noop!(Membership::remove_member(Origin::signed(2), 15), Error::<Test, _>::NotMember);
|
||||
assert_ok!(Membership::remove_member(Origin::signed(2), 20));
|
||||
assert_eq!(Membership::members(), vec![10, 30]);
|
||||
assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members());
|
||||
@@ -350,9 +356,9 @@ mod tests {
|
||||
#[test]
|
||||
fn swap_member_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_noop!(Membership::swap_member(Origin::signed(5), 10, 25), "bad origin");
|
||||
assert_noop!(Membership::swap_member(Origin::signed(3), 15, 25), "not a member");
|
||||
assert_noop!(Membership::swap_member(Origin::signed(3), 10, 30), "already a member");
|
||||
assert_noop!(Membership::swap_member(Origin::signed(5), 10, 25), BadOrigin);
|
||||
assert_noop!(Membership::swap_member(Origin::signed(3), 15, 25), Error::<Test, _>::NotMember);
|
||||
assert_noop!(Membership::swap_member(Origin::signed(3), 10, 30), Error::<Test, _>::AlreadyMember);
|
||||
assert_ok!(Membership::swap_member(Origin::signed(3), 20, 20));
|
||||
assert_eq!(Membership::members(), vec![10, 20, 30]);
|
||||
assert_ok!(Membership::swap_member(Origin::signed(3), 10, 25));
|
||||
@@ -373,8 +379,8 @@ mod tests {
|
||||
#[test]
|
||||
fn change_key_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_noop!(Membership::change_key(Origin::signed(3), 25), "not a member");
|
||||
assert_noop!(Membership::change_key(Origin::signed(10), 20), "already a member");
|
||||
assert_noop!(Membership::change_key(Origin::signed(3), 25), Error::<Test, _>::NotMember);
|
||||
assert_noop!(Membership::change_key(Origin::signed(10), 20), Error::<Test, _>::AlreadyMember);
|
||||
assert_ok!(Membership::change_key(Origin::signed(10), 40));
|
||||
assert_eq!(Membership::members(), vec![20, 30, 40]);
|
||||
assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members());
|
||||
@@ -393,7 +399,7 @@ mod tests {
|
||||
#[test]
|
||||
fn reset_members_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert_noop!(Membership::reset_members(Origin::signed(1), vec![20, 40, 30]), "bad origin");
|
||||
assert_noop!(Membership::reset_members(Origin::signed(1), vec![20, 40, 30]), BadOrigin);
|
||||
assert_ok!(Membership::reset_members(Origin::signed(4), vec![20, 40, 30]));
|
||||
assert_eq!(Membership::members(), vec![20, 30, 40]);
|
||||
assert_eq!(MEMBERS.with(|m| m.borrow().clone()), Membership::members());
|
||||
|
||||
Reference in New Issue
Block a user