From 2fc9c0466785fe11223ddc17e254dce277dddeb3 Mon Sep 17 00:00:00 2001
From: Liam Aharon <liam.aharon@hotmail.com>
Date: Sat, 6 Apr 2024 09:37:02 +0400
Subject: [PATCH] harvest rewards benchmark

---
 .../frame/asset-rewards/src/benchmarking.rs   | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/substrate/frame/asset-rewards/src/benchmarking.rs b/substrate/frame/asset-rewards/src/benchmarking.rs
index e78d213f026..2b49260954e 100644
--- a/substrate/frame/asset-rewards/src/benchmarking.rs
+++ b/substrate/frame/asset-rewards/src/benchmarking.rs
@@ -174,5 +174,45 @@ mod benchmarks {
 		);
 	}
 
+	#[benchmark]
+	fn harvest_rewards() {
+		use super::*;
+
+		let admin = T::BenchmarkHelper::to_account_id(1);
+		let staker = T::BenchmarkHelper::to_account_id(2);
+		let staked_asset = T::BenchmarkHelper::to_asset_id(0);
+		let reward_asset = T::BenchmarkHelper::to_asset_id(1);
+		create_asset::<T>(&staker, &staked_asset, T::Assets::minimum_balance(staked_asset.clone()));
+		create_asset::<T>(&admin, &reward_asset, T::Assets::minimum_balance(reward_asset.clone()));
+
+		assert_ok!(AssetRewards::<T>::create_pool(
+			SystemOrigin::Signed(admin.clone()).into(),
+			Box::new(staked_asset.clone()),
+			Box::new(reward_asset.clone()),
+			100u32.into(),
+			200u32.into(),
+			None,
+		));
+
+		assert_ok!(AssetRewards::<T>::stake(
+			SystemOrigin::Signed(staker.clone()).into(),
+			0u32.into(),
+			100u32.into()
+		));
+
+		#[extrinsic_call]
+		_(SystemOrigin::Signed(staker.clone()), 0u32.into(), None);
+
+		assert_last_event::<T>(
+			Event::RewardsHarvested {
+				who: staker.clone(),
+				staker,
+				pool_id: 0u32.into(),
+				amount: 0u32.into(),
+			}
+			.into(),
+		);
+	}
+
 	impl_benchmark_test_suite!(AssetRewards, crate::mock::new_test_ext(), crate::mock::MockRuntime);
 }
-- 
GitLab