diff --git a/pallets/pallet-bonded-coins/src/lib.rs b/pallets/pallet-bonded-coins/src/lib.rs index c88df826c..012c4f2c7 100644 --- a/pallets/pallet-bonded-coins/src/lib.rs +++ b/pallets/pallet-bonded-coins/src/lib.rs @@ -279,6 +279,12 @@ pub mod pallet { id: T::PoolId, manager: Option, }, + /// The asset managing team of a pool has been reset. + TeamChanged { + id: T::PoolId, + admin: T::AccountId, + freezer: T::AccountId, + }, } #[pallet::error] @@ -501,7 +507,7 @@ pub mod pallet { ensure!(pool_details.is_manager(&who), Error::::NoPermission); ensure!(pool_details.state.is_live(), Error::::PoolNotLive); - let pool_id_account = pool_id.into(); + let pool_id_account = pool_id.clone().into(); let PoolManagingTeam { freezer, admin } = team; @@ -513,7 +519,15 @@ pub mod pallet { pool_id_account.clone(), freezer.clone(), ) - }) + })?; + + Self::deposit_event(Event::TeamChanged { + id: pool_id, + admin, + freezer, + }); + + Ok(()) } /// Resets the manager of a pool. The new manager will be set to the diff --git a/pallets/pallet-bonded-coins/src/tests/transactions/reset_team.rs b/pallets/pallet-bonded-coins/src/tests/transactions/reset_team.rs index e96fbca03..19ba1d990 100644 --- a/pallets/pallet-bonded-coins/src/tests/transactions/reset_team.rs +++ b/pallets/pallet-bonded-coins/src/tests/transactions/reset_team.rs @@ -22,7 +22,7 @@ use crate::{ mock::{runtime::*, *}, traits::ResetTeam, types::{PoolManagingTeam, PoolStatus}, - AccountIdOf, Error as BondingPalletErrors, + AccountIdOf, Error as BondingPalletErrors, Event, }; #[test] @@ -55,6 +55,16 @@ fn resets_team() { 1 )); + // Ensure the event is emitted + System::assert_has_event( + Event::TeamChanged { + id: pool_id.clone(), + admin: ACCOUNT_00, + freezer: ACCOUNT_01, + } + .into(), + ); + assert_eq!(Assets::admin(DEFAULT_BONDED_CURRENCY_ID), Some(ACCOUNT_00)); assert_eq!(Assets::freezer(DEFAULT_BONDED_CURRENCY_ID), Some(ACCOUNT_01)); assert_eq!(Assets::owner(DEFAULT_BONDED_CURRENCY_ID), Some(pool_id.clone())); @@ -106,6 +116,16 @@ fn resets_owner_if_changed() { 1 )); + // Ensure the event is emitted + System::assert_has_event( + Event::TeamChanged { + id: pool_id.clone(), + admin: pool_id.clone(), + freezer: pool_id.clone(), + } + .into(), + ); + assert_eq!(Assets::admin(DEFAULT_BONDED_CURRENCY_ID), Some(pool_id.clone())); assert_eq!(Assets::freezer(DEFAULT_BONDED_CURRENCY_ID), Some(pool_id.clone())); assert_eq!(Assets::owner(DEFAULT_BONDED_CURRENCY_ID), Some(pool_id.clone())); @@ -145,6 +165,16 @@ fn resets_team_for_all() { 2 )); + // Ensure the event is emitted + System::assert_has_event( + Event::TeamChanged { + id: pool_id.clone(), + admin: ACCOUNT_00, + freezer: ACCOUNT_01, + } + .into(), + ); + assert_eq!(Assets::admin(currencies[0]), Some(ACCOUNT_00)); assert_eq!(Assets::freezer(currencies[0]), Some(ACCOUNT_01)); assert_eq!(Assets::owner(currencies[0]), Some(pool_id.clone()));