0

I'm writing a pallet, which depends on pallet-rmrk-core, based on pallet-template.

In lib.rs I wrote:

#[pallet::config]
    pub trait Config: frame_system::Config + pallet_rmrk_core::Config {
        type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
    }

Now the mock.rs from pallet-template errors:

impl pallet_cases::Config for Test {
     ^^^^^^^^^^^^^^^^^^^^
    type Event = Event;
}
the trait bound `mock::Test: pallet_rmrk_core::Config` is not satisfied
the trait `pallet_rmrk_core::Config` is not implemented for `mock::Test`rustcE0277
lib.rs(33, 46): required by a bound in `pallet::Config`

My full mock.rs looks like this:

use crate as pallet_cases;
use frame_support::traits::{ConstU16, ConstU64};
use frame_system as system;
use sp_core::H256;
use sp_runtime::{
    testing::Header,
    traits::{BlakeTwo256, IdentityLookup},
};

type UncheckedExtrinsic = frame_system::mocking::MockUncheckedExtrinsic<Test>;
type Block = frame_system::mocking::MockBlock<Test>;

// Configure a mock runtime to test the pallet.
frame_support::construct_runtime!(
    pub enum Test where
        Block = Block,
        NodeBlock = Block,
        UncheckedExtrinsic = UncheckedExtrinsic,
    {
        System: frame_system,
        PalletCases: pallet_cases,
    }
);

impl system::Config for Test {
    type BaseCallFilter = frame_support::traits::Everything;
    type BlockWeights = ();
    type BlockLength = ();
    type DbWeight = ();
    type Origin = Origin;
    type Call = Call;
    type Index = u64;
    type BlockNumber = u64;
    type Hash = H256;
    type Hashing = BlakeTwo256;
    type AccountId = u64;
    type Lookup = IdentityLookup<Self::AccountId>;
    type Header = Header;
    type Event = Event;
    type BlockHashCount = ConstU64<250>;
    type Version = ();
    type PalletInfo = PalletInfo;
    type AccountData = ();
    type OnNewAccount = ();
    type OnKilledAccount = ();
    type SystemWeightInfo = ();
    type SS58Prefix = ConstU16<42>;
    type OnSetCode = ();
    type MaxConsumers = frame_support::traits::ConstU32<16>;
}

impl pallet_cases::Config for Test {
    type Event = Event;
}

// Build genesis storage according to the mock runtime.
pub fn new_test_ext() -> sp_io::TestExternalities {
    system::GenesisConfig::default()
        .build_storage::<Test>()
        .unwrap()
        .into()
}

I already tried to add pallet_rmrk_core to the runtime and did a impl pallet_rmrk_core::Config for Test but it ended in just much more errors.

What do I miss?

Regards

1 Answer 1

0

I already tried to add pallet_rmrk_core to the runtime and did a impl pallet_rmrk_core::Config for Test but it ended in just much more errors.

This is the correct solution. You have specified in your trait that the rmrk_core::Config is a super trait. This means when implementing your Config trait the type also needs to implement the rmrk_core::Config trait. Whatever the errors are that you are getting in this case, you will also need to fix them.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.