--- a/pallets/inflation/src/tests.rs +++ b/pallets/inflation/src/tests.rs @@ -34,9 +34,9 @@ NodeBlock = Block, UncheckedExtrinsic = UncheckedExtrinsic, { - Balances: pallet_balances::{Module, Call, Storage}, - System: frame_system::{Module, Call, Config, Storage, Event}, - Inflation: pallet_inflation::{Module, Call, Storage}, + Balances: pallet_balances::{Pallet, Call, Storage}, + System: frame_system::{Pallet, Call, Config, Storage, Event}, + Inflation: pallet_inflation::{Pallet, Call, Storage}, } ); @@ -70,6 +70,7 @@ type OnKilledAccount = (); type SystemWeightInfo = (); type SS58Prefix = SS58Prefix; + type OnSetCode = (); } parameter_types! { --- a/pallets/nft/src/eth/sponsoring.rs +++ b/pallets/nft/src/eth/sponsoring.rs @@ -32,7 +32,7 @@ match call { UniqueNFTCall::ERC721UniqueExtensions(ERC721UniqueExtensionsCall::Transfer {token_id, ..}) | UniqueNFTCall::ERC721(ERC721Call::TransferFrom {token_id, ..}) => { let token_id: u32 = token_id.try_into().map_err(|_| AnyError)?; - let block_number = >::block_number() as T::BlockNumber; + let block_number = >::block_number() as T::BlockNumber; let collection_limits = &collection.limits; let limit: u32 = if collection_limits.sponsor_transfer_timeout > 0 { collection_limits.sponsor_transfer_timeout @@ -68,7 +68,7 @@ ChainLimit::get().fungible_sponsor_transfer_timeout }; - let block_number = >::block_number() as T::BlockNumber; + let block_number = >::block_number() as T::BlockNumber; let mut sponsored = true; if >::contains_key(collection_id, who.as_sub()) { let last_tx_block = >::get(collection_id, who.as_sub()); --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -236,7 +236,6 @@ type EvmAddressMapping: pallet_evm::AddressMapping; type EvmBackwardsAddressMapping: EvmBackwardsAddressMapping; - type EvmWithdrawOrigin: pallet_evm::EnsureAddressOrigin; type CrossAccountId: CrossAccountId; type Currency: Currency; --- a/pallets/nft/src/mock.rs +++ b/pallets/nft/src/mock.rs @@ -11,6 +11,9 @@ }; use pallet_transaction_payment::{ CurrencyAdapter}; use frame_system as system; +use pallet_evm::AddressMapping; +use crate::{EvmBackwardsAddressMapping, CrossAccountId}; +use codec::{Encode, Decode}; type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic; type Block = frame_system::mocking::MockBlock; @@ -22,9 +25,9 @@ NodeBlock = Block, UncheckedExtrinsic = UncheckedExtrinsic, { - System: frame_system::{Module, Call, Config, Storage, Event}, - TemplateModule: pallet_template::{Module, Call, Storage}, - Balances: pallet_balances::{Module, Call, Storage}, + System: frame_system::{Pallet, Call, Config, Storage, Event}, + TemplateModule: pallet_template::{Pallet, Call, Storage}, + Balances: pallet_balances::{Pallet, Call, Storage}, } ); @@ -56,6 +59,7 @@ type OnKilledAccount = (); type SystemWeightInfo = (); type SS58Prefix = SS58Prefix; + type OnSetCode = (); } parameter_types! { @@ -78,7 +82,7 @@ } impl pallet_transaction_payment::Config for Test { - type OnChargeTransaction = CurrencyAdapter, ()>; + type OnChargeTransaction = CurrencyAdapter, ()>; type TransactionByteFee = TransactionByteFee; type WeightToFee = IdentityFee; type FeeMultiplierUpdate = (); @@ -94,27 +98,26 @@ type WeightInfo = (); } -type Timestamp = pallet_timestamp::Module; -type Randomness = pallet_randomness_collective_flip::Module; +type Timestamp = pallet_timestamp::Pallet; +type Randomness = pallet_randomness_collective_flip::Pallet; parameter_types! { pub const TombstoneDeposit: u64 = 1; pub const DepositPerContract: u64 = 1; pub const DepositPerStorageByte: u64 = 1; pub const DepositPerStorageItem: u64 = 1; - pub RentFraction: Perbill = Perbill::from_rational_approximation(1u32, 30 * 24 * 60 * 10); + pub RentFraction: Perbill = Perbill::from_rational(1u32, 30 * 24 * 60 * 10); pub const SurchargeReward: u64 = 1; pub const SignedClaimHandicap: u32 = 2; - pub const MaxDepth: u32 = 32; - pub const MaxValueSize: u32 = 16 * 1024; pub DeletionWeightLimit: u64 = u64::MAX;//Perbill::from_percent(10); pub DeletionQueueDepth: u32 = 10; + pub Schedule: pallet_contracts::Schedule = Default::default(); } impl pallet_contracts::Config for Test { type Time = Timestamp; type Randomness = Randomness; - type Currency = pallet_balances::Module; + type Currency = pallet_balances::Pallet; type Event = (); type RentPayment = (); type SignedClaimHandicap = SignedClaimHandicap; @@ -125,26 +128,71 @@ type RentFraction = RentFraction; type SurchargeReward = SurchargeReward; type DeletionWeightLimit = DeletionWeightLimit; - type MaxDepth = MaxDepth; type DeletionQueueDepth = DeletionQueueDepth; - type MaxValueSize = MaxValueSize; type ChainExtension = (); - type MaxCodeSize = (); type WeightPrice = (); type WeightInfo = pallet_contracts::weights::SubstrateWeight; + type Schedule = Schedule; + type CallStack = [pallet_contracts::Frame; 31]; } parameter_types! { pub const CollectionCreationPrice: u32 = 0; pub TreasuryAccountId: u64 = 1234; + pub EthereumChainId: u32 = 1111; +} + +pub struct TestEvmAddressMapping; +impl AddressMapping for TestEvmAddressMapping { + fn into_account_id(addr: sp_core::H160) -> u64 { + unimplemented!() + } +} + +pub struct TestEvmBackwardsAddressMapping; +impl EvmBackwardsAddressMapping for TestEvmBackwardsAddressMapping { + fn from_account_id(account_id: u64) -> sp_core::H160 { + unimplemented!() + } +} + +#[derive(Encode, Decode, Clone, PartialEq, Eq, PartialOrd, Ord, Debug)] +pub struct TestCrossAccountId(u64, sp_core::H160); +impl CrossAccountId for TestCrossAccountId { + fn from_sub(sub: u64) -> Self { + let mut eth = [0; 20]; + eth[12..20].copy_from_slice(&sub.to_be_bytes()); + Self(sub, sp_core::H160(eth)) + } + fn as_sub(&self) -> &u64 { + &self.0 + } + fn from_eth(eth: sp_core::H160) -> Self { + unimplemented!() + } + fn as_eth(&self) -> &sp_core::H160 { + &self.1 + } } +pub struct TestEtheremTransactionSender; +impl pallet_ethereum::EthereumTransactionSender for TestEtheremTransactionSender { + fn submit_logs_transaction(tx: pallet_ethereum::Transaction, logs: Vec) -> Result<(), sp_runtime::DispatchError> { + Ok(()) + } +} + impl pallet_template::Config for Test { type Event = (); type WeightInfo = (); type CollectionCreationPrice = CollectionCreationPrice; - type Currency = pallet_balances::Module; + type Currency = pallet_balances::Pallet; type TreasuryAccountId = TreasuryAccountId; + type EvmAddressMapping = TestEvmAddressMapping; + type EvmBackwardsAddressMapping = TestEvmBackwardsAddressMapping; + type CrossAccountId = TestCrossAccountId; + type EthereumChainId = EthereumChainId; + type EthereumTransactionSender = TestEtheremTransactionSender; } // Build genesis storage according to the mock runtime. --- a/pallets/nft/src/tests.rs +++ b/pallets/nft/src/tests.rs @@ -1,9 +1,14 @@ // Tests to be written here use super::*; use crate::mock::*; -use crate::{AccessMode, CollectionMode, - Ownership, ChainLimits, CreateItemData, CreateNftData, CreateFungibleData, CreateReFungibleData, - CollectionId, TokenId, MAX_DECIMAL_POINTS}; +use crate::{ + AccessMode, CollectionMode, + Ownership, ChainLimits, CreateItemData, +}; +use nft_data_structs::{ + CreateNftData, CreateFungibleData, CreateReFungibleData, + CollectionId, TokenId, MAX_DECIMAL_POINTS, +}; use frame_support::{assert_noop, assert_ok}; use frame_system::{ RawOrigin }; @@ -72,12 +77,16 @@ assert_ok!(TemplateModule::create_item( origin1.clone(), collection_id, - 1, + account(1), data.clone() )); } +fn account(sub: u64) -> TestCrossAccountId { + TestCrossAccountId::from_sub(sub) +} + // Use cases tests region // #region @@ -142,8 +151,8 @@ assert_ok!(TemplateModule::create_multiple_items( origin1.clone(), - 1, 1, + account(1), items_data.clone().into_iter().map(|d| { d.into() }).collect() )); for (index, data) in items_data.iter().enumerate() { @@ -174,7 +183,7 @@ assert_eq!( item.owner[0], Ownership { - owner: 1, + owner: account(1), fraction: 1023 } ); @@ -195,7 +204,7 @@ assert_ok!(TemplateModule::create_multiple_items( origin1.clone(), 1, - 1, + account(1), items_data.clone().into_iter().map(|d| { d.into() }).collect() )); for (index, data) in items_data.iter().enumerate() { @@ -206,7 +215,7 @@ assert_eq!( item.owner[0], Ownership { - owner: 1, + owner: account(1), fraction: 1023 } ); @@ -271,18 +280,18 @@ assert_eq!(TemplateModule::balance_count(1, 1), 5); // change owner scenario - assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 5)); + assert_ok!(TemplateModule::transfer(origin1.clone(), account(2), 1, 1, 5)); assert_eq!(TemplateModule::fungible_item_id(1, 1).value, 0); assert_eq!(TemplateModule::balance_count(1, 1), 0); assert_eq!(TemplateModule::balance_count(1, 2), 5); // split item scenario - assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 3)); + assert_ok!(TemplateModule::transfer(origin2.clone(), account(3), 1, 1, 3)); assert_eq!(TemplateModule::balance_count(1, 2), 2); assert_eq!(TemplateModule::balance_count(1, 3), 3); // split item and new owner has account scenario - assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 1)); + assert_ok!(TemplateModule::transfer(origin2.clone(), account(3), 1, 1, 1)); assert_eq!(TemplateModule::fungible_item_id(1, 2).value, 1); assert_eq!(TemplateModule::fungible_item_id(1, 3).value, 4); assert_eq!(TemplateModule::balance_count(1, 2), 1); @@ -315,7 +324,7 @@ assert_eq!( item.owner[0], Ownership { - owner: 1, + owner: account(1), fraction: 1023 } ); @@ -324,11 +333,11 @@ assert_eq!(TemplateModule::address_tokens(1, 1), [1]); // change owner scenario - assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1023)); + assert_ok!(TemplateModule::transfer(origin1.clone(), account(2), 1, 1, 1023)); assert_eq!( TemplateModule::refungible_item_id(1, 1).unwrap().owner[0], Ownership { - owner: 2, + owner: account(2), fraction: 1023 } ); @@ -338,20 +347,20 @@ assert_eq!(TemplateModule::address_tokens(1, 2), [1]); // split item scenario - assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 500)); + assert_ok!(TemplateModule::transfer(origin2.clone(), account(3), 1, 1, 500)); { let item = TemplateModule::refungible_item_id(1, 1).unwrap(); assert_eq!( item.owner[0], Ownership { - owner: 2, + owner: account(2), fraction: 523 } ); assert_eq!( item.owner[1], Ownership { - owner: 3, + owner: account(3), fraction: 500 } ); @@ -362,20 +371,20 @@ assert_eq!(TemplateModule::address_tokens(1, 3), [1]); // split item and new owner has account scenario - assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 200)); + assert_ok!(TemplateModule::transfer(origin2.clone(), account(3), 1, 1, 200)); { let item = TemplateModule::refungible_item_id(1, 1).unwrap(); assert_eq!( item.owner[0], Ownership { - owner: 2, + owner: account(2), fraction: 323 } ); assert_eq!( item.owner[1], Ownership { - owner: 3, + owner: account(3), fraction: 700 } ); @@ -401,8 +410,8 @@ let origin1 = Origin::signed(1); // default scenario - assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000)); - assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, 2); + assert_ok!(TemplateModule::transfer(origin1.clone(), account(2), 1, 1, 1000)); + assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, account(2)); assert_eq!(TemplateModule::balance_count(1, 1), 0); assert_eq!(TemplateModule::balance_count(1, 2), 1); // assert_eq!(TemplateModule::address_tokens(1, 1), []); @@ -429,14 +438,14 @@ // neg transfer assert_noop!(TemplateModule::transfer_from( origin2.clone(), - 1, - 2, + account(1), + account(2), 1, 1, 1), Error::::NoPermission); // do approve - assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 5)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(2), 1, 1, 5)); assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 5); assert_eq!( TemplateModule::approved(1, (1, 1, 2)), @@ -445,8 +454,8 @@ assert_ok!(TemplateModule::transfer_from( origin2.clone(), - 1, - 3, + account(1), + account(3), 1, 1, 1 @@ -482,20 +491,20 @@ 1, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(1))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(2))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(3))); // do approve - assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 5)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(2), 1, 1, 5)); assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 5); - assert_ok!(TemplateModule::approve(origin1.clone(), 3, 1, 1, 5)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(3), 1, 1, 5)); assert_eq!(TemplateModule::approved(1, (1, 1, 3)), 5); assert_ok!(TemplateModule::transfer_from( origin2.clone(), - 1, - 3, + account(1), + account(3), 1, 1, 1 @@ -530,18 +539,18 @@ 1, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(1))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(2))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(3))); // do approve - assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 1023)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(2), 1, 1, 1023)); assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1023); assert_ok!(TemplateModule::transfer_from( origin2.clone(), - 1, - 3, + account(1), + account(3), 1, 1, 100 @@ -583,14 +592,14 @@ 1, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(1))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(2))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(3))); // do approve - assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 5)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(2), 1, 1, 5)); assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 5); - assert_ok!(TemplateModule::approve(origin1.clone(), 3, 1, 1, 5)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(3), 1, 1, 5)); assert_eq!(TemplateModule::approved(1, (1, 1, 3)), 5); assert_eq!( TemplateModule::approved(1, (1, 1, 2)), @@ -599,9 +608,9 @@ assert_ok!(TemplateModule::transfer_from( origin2.clone(), + account(1), + account(3), 1, - 3, - 1, 1, 4 )); @@ -612,9 +621,9 @@ assert_noop!(TemplateModule::transfer_from( origin2.clone(), + account(1), + account(3), 1, - 3, - 1, 1, 4 ), Error::::NoPermission); @@ -658,7 +667,7 @@ let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(2))); let data = default_nft_data(); create_test_item(collection_id, &data.into()); @@ -685,7 +694,7 @@ let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1); let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(2))); let data = default_fungible_data(); create_test_item(collection_id, &data.into()); @@ -722,9 +731,9 @@ collection_id, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(1))); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, account(2))); let data = default_re_fungible_data(); create_test_item(collection_id, &data.into()); @@ -755,11 +764,11 @@ let origin1 = Origin::signed(1); // collection admin - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, 2)); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, 3)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, account(2))); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, account(3))); - assert_eq!(TemplateModule::admin_list_collection(collection1_id).contains(&2), true); - assert_eq!(TemplateModule::admin_list_collection(collection1_id).contains(&3), true); + assert_eq!(TemplateModule::admin_list_collection(collection1_id).contains(&account(2)), true); + assert_eq!(TemplateModule::admin_list_collection(collection1_id).contains(&account(3)), true); }); } @@ -776,19 +785,19 @@ let origin2 = Origin::signed(2); // collection admin - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, 2)); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, 3)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, account(2))); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection1_id, account(3))); - assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true); - assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&account(2)), true); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&account(3)), true); // remove admin assert_ok!(TemplateModule::remove_collection_admin( origin2.clone(), 1, - 3 + account(3) )); - assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&account(3)), false); }); } @@ -819,9 +828,9 @@ assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1); assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 5); assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 1023); - assert_eq!(TemplateModule::nft_item_id(nft_collection_id, 1).unwrap().owner, 1); + assert_eq!(TemplateModule::nft_item_id(nft_collection_id, 1).unwrap().owner, account(1)); assert_eq!(TemplateModule::fungible_item_id(fungible_collection_id, 1).value, 5); - assert_eq!(TemplateModule::refungible_item_id(re_fungible_collection_id, 1).unwrap().owner[0].owner, 1); + assert_eq!(TemplateModule::refungible_item_id(re_fungible_collection_id, 1).unwrap().owner[0].owner, account(1)); }); } @@ -838,7 +847,7 @@ let origin1 = Origin::signed(1); // approve - assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 1)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(2), 1, 1, 1)); assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1); }); } @@ -856,7 +865,7 @@ create_test_item(collection_id, &data.into()); // approve - assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1, 1)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(2), 1, 1, 1)); assert_eq!(TemplateModule::approved(1, (1, 1, 2)), 1); assert_ok!(TemplateModule::set_mint_permission( @@ -869,14 +878,14 @@ 1, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 3)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(1))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(2))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(3))); assert_ok!(TemplateModule::transfer_from( origin2.clone(), - 1, - 2, + account(1), + account(2), 1, 1, 1 @@ -901,7 +910,7 @@ let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_eq!(TemplateModule::white_list(collection_id, 2), true); }); } @@ -915,8 +924,8 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2)); - assert_ok!(TemplateModule::add_to_white_list(origin2.clone(), collection_id, 3)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(2))); + assert_ok!(TemplateModule::add_to_white_list(origin2.clone(), collection_id, account(3))); assert_eq!(TemplateModule::white_list(collection_id, 3), true); }); } @@ -930,7 +939,7 @@ let origin2 = Origin::signed(2); assert_noop!( - TemplateModule::add_to_white_list(origin2.clone(), collection_id, 3), + TemplateModule::add_to_white_list(origin2.clone(), collection_id, account(3)), Error::::NoPermission ); }); @@ -944,7 +953,7 @@ let origin1 = Origin::signed(1); assert_noop!( - TemplateModule::add_to_white_list(origin1.clone(), 1, 2), + TemplateModule::add_to_white_list(origin1.clone(), 1, account(2)), Error::::CollectionNotFound ); }); @@ -960,7 +969,7 @@ let origin1 = Origin::signed(1); assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id)); assert_noop!( - TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2), + TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2)), Error::::CollectionNotFound ); }); @@ -975,8 +984,8 @@ let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_eq!(TemplateModule::white_list(collection_id, 2), true); }); } @@ -989,11 +998,11 @@ let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_ok!(TemplateModule::remove_from_white_list( origin1.clone(), collection_id, - 2 + account(2) )); assert_eq!(TemplateModule::white_list(collection_id, 2), false); }); @@ -1008,13 +1017,13 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(2))); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 3)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(3))); assert_ok!(TemplateModule::remove_from_white_list( origin2.clone(), collection_id, - 3 + account(3) )); assert_eq!(TemplateModule::white_list(collection_id, 3), false); }); @@ -1029,9 +1038,9 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_noop!( - TemplateModule::remove_from_white_list(origin2.clone(), collection_id, 2), + TemplateModule::remove_from_white_list(origin2.clone(), collection_id, account(2)), Error::::NoPermission ); assert_eq!(TemplateModule::white_list(collection_id, 2), true); @@ -1045,7 +1054,7 @@ let origin1 = Origin::signed(1); assert_noop!( - TemplateModule::remove_from_white_list(origin1.clone(), 1, 2), + TemplateModule::remove_from_white_list(origin1.clone(), 1, account(2)), Error::::CollectionNotFound ); }); @@ -1060,10 +1069,10 @@ let origin1 = Origin::signed(1); let origin2 = Origin::signed(2); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id)); assert_noop!( - TemplateModule::remove_from_white_list(origin2.clone(), collection_id, 2), + TemplateModule::remove_from_white_list(origin2.clone(), collection_id, account(2)), Error::::CollectionNotFound ); assert_eq!(TemplateModule::white_list(collection_id, 2), false); @@ -1079,16 +1088,16 @@ let collection_id = create_test_collection(&CollectionMode::NFT, 1); let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_ok!(TemplateModule::remove_from_white_list( origin1.clone(), collection_id, - 2 + account(2) )); assert_ok!(TemplateModule::remove_from_white_list( origin1.clone(), collection_id, - 2 + account(2) )); assert_eq!(TemplateModule::white_list(collection_id, 2), false); }); @@ -1112,10 +1121,10 @@ collection_id, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_noop!( - TemplateModule::transfer(origin1.clone(), 3, 1, 1, 1), + TemplateModule::transfer(origin1.clone(), account(3), 1, 1, 1), Error::::AddresNotInWhiteList ); }); @@ -1137,21 +1146,21 @@ collection_id, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(1))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(2))); // do approve - assert_ok!(TemplateModule::approve(origin1.clone(), 1, 1, 1, 1)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(1), 1, 1, 1)); assert_eq!(TemplateModule::approved(1, (1, 1, 1)), 1); assert_ok!(TemplateModule::remove_from_white_list( origin1.clone(), 1, - 1 + account(1) )); assert_noop!( - TemplateModule::transfer_from(origin1.clone(), 1, 3, 1, 1, 1), + TemplateModule::transfer_from(origin1.clone(), account(1), account(3), 1, 1, 1), Error::::AddresNotInWhiteList ); }); @@ -1175,10 +1184,10 @@ collection_id, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, 1)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), 1, account(1))); assert_noop!( - TemplateModule::transfer(origin1.clone(), 3, 1, 1, 1), + TemplateModule::transfer(origin1.clone(), account(3), 1, 1, 1), Error::::AddresNotInWhiteList ); }); @@ -1201,21 +1210,21 @@ collection_id, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 1)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(1))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); // do approve - assert_ok!(TemplateModule::approve(origin1.clone(), 1, 1, 1, 1)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(1), 1, 1, 1)); assert_eq!(TemplateModule::approved(1, (1, 1, 1)), 1); assert_ok!(TemplateModule::remove_from_white_list( origin1.clone(), collection_id, - 2 + account(2) )); assert_noop!( - TemplateModule::transfer_from(origin1.clone(), 1, 3, 1, 1, 1), + TemplateModule::transfer_from(origin1.clone(), account(1), account(3), 1, 1, 1), Error::::AddresNotInWhiteList ); }); @@ -1267,7 +1276,7 @@ // do approve assert_noop!( - TemplateModule::approve(origin1.clone(), 1, 1, 1, 5), + TemplateModule::approve(origin1.clone(), account(1), 1, 1, 5), Error::::AddresNotInWhiteList ); }); @@ -1292,10 +1301,10 @@ collection_id, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 1)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(1))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); - assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1)); + assert_ok!(TemplateModule::transfer(origin1.clone(), account(2), 1, 1, 1)); }); } @@ -1316,17 +1325,17 @@ collection_id, AccessMode::WhiteList )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 1)); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(1))); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); // do approve - assert_ok!(TemplateModule::approve(origin1.clone(), 1, 1, 1, 5)); + assert_ok!(TemplateModule::approve(origin1.clone(), account(1), 1, 1, 5)); assert_eq!(TemplateModule::approved(1, (1, 1, 1)), 5); assert_ok!(TemplateModule::transfer_from( origin1.clone(), - 1, - 2, + account(1), + account(2), 1, 1, 1 @@ -1381,12 +1390,12 @@ false )); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(2))); assert_ok!(TemplateModule::create_item( origin2.clone(), collection_id, - 2, + account(2), default_nft_data().into() )); }); @@ -1413,10 +1422,10 @@ collection_id, false )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_noop!( - TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()), + TemplateModule::create_item(origin2.clone(), 1, account(2), default_nft_data().into()), Error::::PublicMintingNotAllowed ); }); @@ -1445,7 +1454,7 @@ )); assert_noop!( - TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()), + TemplateModule::create_item(origin2.clone(), 1, account(2), default_nft_data().into()), Error::::PublicMintingNotAllowed ); }); @@ -1499,12 +1508,12 @@ true )); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(2))); assert_ok!(TemplateModule::create_item( origin2.clone(), 1, - 2, + account(2), default_nft_data().into() )); }); @@ -1533,7 +1542,7 @@ )); assert_noop!( - TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()), + TemplateModule::create_item(origin2.clone(), 1, account(2), default_nft_data().into()), Error::::AddresNotInWhiteList ); }); @@ -1560,12 +1569,12 @@ collection_id, true )); - assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2)); + assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, account(2))); assert_ok!(TemplateModule::create_item( origin2.clone(), 1, - 2, + account(2), default_nft_data().into() )); }); @@ -1648,7 +1657,7 @@ assert_noop!(TemplateModule::create_item( origin1.clone(), 1, - 1, + account(1), data.into() ), Error::::AddressOwnershipLimitExceeded); }); @@ -1675,8 +1684,8 @@ let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2)); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 3)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(2))); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(3))); }); } @@ -1701,8 +1710,8 @@ let origin1 = Origin::signed(1); - assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2)); - assert_noop!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 3), Error::::CollectionAdminsLimitExceeded); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(2))); + assert_noop!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, account(3)), Error::::CollectionAdminsLimitExceeded); }); } @@ -1734,7 +1743,7 @@ assert_noop!(TemplateModule::create_item( origin1.clone(), collection_id, - 1, + account(1), too_big_const_data ), Error::::TokenConstDataLimitExceeded); }); @@ -1768,7 +1777,7 @@ assert_noop!(TemplateModule::create_item( origin1.clone(), collection_id, - 1, + account(1), too_big_const_data ), Error::::TokenVariableDataLimitExceeded); }); @@ -1802,7 +1811,7 @@ assert_noop!(TemplateModule::create_item( origin1.clone(), collection_id, - 1, + account(1), too_big_const_data ), Error::::TokenConstDataLimitExceeded); }); @@ -1836,7 +1845,7 @@ assert_noop!(TemplateModule::create_item( origin1.clone(), collection_id, - 1, + account(1), too_big_const_data ), Error::::TokenVariableDataLimitExceeded); }); --- a/pallets/scheduler/src/lib.rs +++ b/pallets/scheduler/src/lib.rs @@ -887,6 +887,7 @@ type ScheduleOrigin = EnsureOneOf, EnsureSignedBy>; type MaxScheduledPerBlock = MaxScheduledPerBlock; type WeightInfo = (); + type SponsorshipHandler = (); } pub fn new_test_ext() -> sp_io::TestExternalities { --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -689,7 +689,6 @@ type Event = Event; type WeightInfo = nft_weights::WeightInfo; - type EvmWithdrawOrigin = EnsureAddressTruncated; type EvmBackwardsAddressMapping = pallet_nft::MapBackwardsAddressTruncated; type EvmAddressMapping = HashedAddressMapping; type CrossAccountId = pallet_nft::BasicCrossAccountId;