diff --git a/pallets/pallet-lottery/src/mock.rs b/pallets/pallet-lottery/src/mock.rs index a14bfc15b..dcaf5a0b4 100644 --- a/pallets/pallet-lottery/src/mock.rs +++ b/pallets/pallet-lottery/src/mock.rs @@ -43,7 +43,7 @@ use pallet_parachain_staking::{InflationInfo, Range}; use sp_core::H256; use sp_runtime::{ - traits::{BlakeTwo256, Hash, IdentityLookup}, + traits::{AccountIdConversion, BlakeTwo256, Hash, IdentityLookup}, Perbill, Percent, }; use xcm::{ @@ -59,7 +59,9 @@ pub const ALICE: AccountId = 1; pub const BOB: AccountId = 2; pub const TREASURY_ACCOUNT: AccountId = 10; pub const JUMBO: Balance = 1_000_000_000_000; -pub const JUMBO_ID: CalamariAssetId = 8; +pub const MANTA_ID: CalamariAssetId = 1; +pub const V_MANTA_ID: CalamariAssetId = 8; +pub const JUMBO_ID: CalamariAssetId = 9; type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; type Block = frame_system::mocking::MockBlock; @@ -485,7 +487,7 @@ parameter_types! { /// Time in blocks until a collator is done unstaking pub UnstakeLockTime: BlockNumber = LeaveDelayRounds::get() * DefaultBlocksPerRound::get(); /// JumboShrimp CurrencyId - pub JumboFarmingCurrencyID: CalamariAssetId = JUMBO_ID; + pub JumboFarmingCurrencyID: CalamariAssetId = V_MANTA_ID; /// Farming PoolId for JUMBO token pub JumboShrimpPoolId: PoolId = 0; } @@ -641,13 +643,25 @@ impl ExtBuilder { ext.execute_with(|| System::set_block_number(1)); ext.execute_with(|| { + let v_manta_asset_metadata = + create_asset_metadata("vManta", "vMANTA", 12, 1u128, false, true); let jumbo_asset_metadata = create_asset_metadata("Jumbo", "JUMBO", 12, 1u128, false, true); + let v_manta_location = AssetLocation(VersionedMultiLocation::V1(MultiLocation::new( + 1, + Junctions::Here, + ))); let native_location = AssetLocation(VersionedMultiLocation::V1(MultiLocation::new( 0, Junctions::Here, ))); - // registering manta native asset should work. + // register vMANTA and JUMBO asset should work. + AssetManager::register_asset( + RuntimeOrigin::root(), + v_manta_location, + v_manta_asset_metadata, + ) + .unwrap(); AssetManager::register_asset( RuntimeOrigin::root(), native_location, @@ -655,6 +669,14 @@ impl ExtBuilder { ) .unwrap(); + assert_ok!( + >::FungibleLedger::deposit_minting( + V_MANTA_ID, + &TREASURY_ACCOUNT, + 1_000 * JUMBO + ) + ); + assert_ok!( >::FungibleLedger::deposit_minting( JUMBO_ID, @@ -662,6 +684,7 @@ impl ExtBuilder { 1_000 * JUMBO ) ); + assert_ok!( >::FungibleLedger::deposit_minting( JUMBO_ID, @@ -669,11 +692,12 @@ impl ExtBuilder { 1_000 * JUMBO ) ); + assert_ok!( >::FungibleLedger::deposit_minting( - JUMBO_ID, - &BOB, - 1_000_000 * JUMBO + V_MANTA_ID, + &ALICE, + 1_000 * JUMBO ) ); @@ -685,7 +709,7 @@ impl ExtBuilder { } fn init_jumbo_farming() { - let tokens_proportion = vec![(JUMBO_ID, Perbill::from_percent(100))]; + let tokens_proportion = vec![(V_MANTA_ID, Perbill::from_percent(100))]; let tokens = JUMBO; let basic_rewards = vec![(JUMBO_ID, JUMBO)]; diff --git a/pallets/pallet-lottery/src/tests.rs b/pallets/pallet-lottery/src/tests.rs index bf5675f91..7bda1ec29 100644 --- a/pallets/pallet-lottery/src/tests.rs +++ b/pallets/pallet-lottery/src/tests.rs @@ -20,7 +20,7 @@ use crate::{ roll_one_block, roll_to, roll_to_round_begin, roll_to_round_end, AccountId, Balance, Balances, ExtBuilder, Lottery, ParachainStaking, RuntimeOrigin as Origin, System, Test, }, - Config, Error, + Config, DestroyFarmingToken, Error, MintFarmingToken, }; use frame_support::{assert_noop, assert_ok, traits::Currency}; @@ -898,7 +898,6 @@ fn many_deposit_withdrawals_work() { (*EVE, HIGH_BALANCE), ]) .with_funded_lottery_account(HIGH_BALANCE) - .with_farming() .build() .execute_with(|| { assert!(HIGH_BALANCE > balance); @@ -968,6 +967,26 @@ fn reward_collators_for_round(round: u32, collators: &[AccountId]) { } } +#[test] +fn enable_farming_works() { + ExtBuilder::default().build().execute_with(|| { + assert!(!MintFarmingToken::::get()); + assert!(!DestroyFarmingToken::::get()); + assert_noop!( + Lottery::set_farming_params(Origin::signed(*BOB), true, true), + sp_runtime::DispatchError::BadOrigin + ); + + assert_ok!(Lottery::set_farming_params(Origin::root(), true, false)); + assert!(MintFarmingToken::::get()); + assert!(!DestroyFarmingToken::::get()); + + assert_ok!(Lottery::set_farming_params(Origin::root(), false, true)); + assert!(!MintFarmingToken::::get()); + assert!(DestroyFarmingToken::::get()); + }); +} + #[test] fn farming_deposit_withdraw() { let balance = 500_000_000 * UNIT;