diff --git a/pallets/pallet-bonded-coins/src/lib.rs b/pallets/pallet-bonded-coins/src/lib.rs index c88df826c..395ae822c 100644 --- a/pallets/pallet-bonded-coins/src/lib.rs +++ b/pallets/pallet-bonded-coins/src/lib.rs @@ -279,6 +279,11 @@ pub mod pallet { id: T::PoolId, manager: Option, }, + /// The asset managing team of a pool has been reset. + TeamChanged { + id: T::PoolId, + team: PoolManagingTeam, + }, } #[pallet::error] @@ -501,9 +506,9 @@ 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; + let PoolManagingTeam { ref freezer, ref admin } = team; pool_details.bonded_currencies.into_iter().try_for_each(|asset_id| { T::Fungibles::reset_team( @@ -513,7 +518,11 @@ pub mod pallet { pool_id_account.clone(), freezer.clone(), ) - }) + })?; + + Self::deposit_event(Event::TeamChanged { id: pool_id, team }); + + 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..b943cc8f7 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,18 @@ fn resets_team() { 1 )); + // Ensure the event is emitted + System::assert_has_event( + Event::TeamChanged { + id: pool_id.clone(), + team: PoolManagingTeam { + 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 +118,18 @@ fn resets_owner_if_changed() { 1 )); + // Ensure the event is emitted + System::assert_has_event( + Event::TeamChanged { + id: pool_id.clone(), + team: PoolManagingTeam { + 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 +169,18 @@ fn resets_team_for_all() { 2 )); + // Ensure the event is emitted + System::assert_has_event( + Event::TeamChanged { + id: pool_id.clone(), + team: PoolManagingTeam { + 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()));