#![cfg(test)] pub use super::members::{self, Trait, DEFAULT_PAID_TERM_ID}; pub use crate::currency::GovernanceCurrency; pub use srml_support::traits::Currency; pub use system; pub use primitives::{Blake2Hasher, H256}; pub use runtime_primitives::{ testing::{Digest, DigestItem, Header, UintAuthorityId}, traits::{BlakeTwo256, Convert, IdentityLookup, OnFinalize}, weights::Weight, BuildStorage, Perbill, }; use srml_support::{impl_outer_origin, parameter_types}; impl_outer_origin! { pub enum Origin for Test {} } // Workaround for https://github.com/rust-lang/rust/issues/26925 . Remove when sorted. #[derive(Clone, PartialEq, Eq, Debug)] pub struct Test; parameter_types! { pub const BlockHashCount: u64 = 250; pub const MaximumBlockWeight: u32 = 1024; pub const MaximumBlockLength: u32 = 2 * 1024; pub const AvailableBlockRatio: Perbill = Perbill::one(); pub const MinimumPeriod: u64 = 5; } impl system::Trait for Test { type Origin = Origin; type Index = u64; type BlockNumber = u64; type Call = (); type Hash = H256; type Hashing = BlakeTwo256; type AccountId = u64; type Lookup = IdentityLookup; type Header = Header; type Event = (); type BlockHashCount = BlockHashCount; type MaximumBlockWeight = MaximumBlockWeight; type MaximumBlockLength = MaximumBlockLength; type AvailableBlockRatio = AvailableBlockRatio; type Version = (); } impl timestamp::Trait for Test { type Moment = u64; type OnTimestampSet = (); type MinimumPeriod = MinimumPeriod; } parameter_types! { pub const ExistentialDeposit: u32 = 0; pub const TransferFee: u32 = 0; pub const CreationFee: u32 = 0; pub const TransactionBaseFee: u32 = 1; pub const TransactionByteFee: u32 = 0; pub const InitialMembersBalance: u64 = 2000; } impl balances::Trait for Test { /// The type for recording an account's balance. type Balance = u64; /// What to do if an account's free balance gets zeroed. type OnFreeBalanceZero = (); /// What to do if a new account is created. type OnNewAccount = (); /// The ubiquitous event type. type Event = (); type DustRemoval = (); type TransferPayment = (); type ExistentialDeposit = ExistentialDeposit; type TransferFee = TransferFee; type CreationFee = CreationFee; } impl GovernanceCurrency for Test { type Currency = balances::Module; } impl members::Trait for Test { type Event = (); type MemberId = u32; type PaidTermId = u32; type SubscriptionId = u32; type ActorId = u32; type InitialMembersBalance = InitialMembersBalance; } pub struct TestExternalitiesBuilder { system_config: Option, membership_config: Option>, } impl Default for TestExternalitiesBuilder { fn default() -> Self { Self { system_config: None, membership_config: None, } } } impl TestExternalitiesBuilder { /* pub fn set_system_config(mut self, system_config: system::GenesisConfig) -> Self { self.system_config = Some(system_config); self } */ pub fn set_membership_config(mut self, membership_config: members::GenesisConfig) -> Self { self.membership_config = Some(membership_config); self } pub fn build(self) -> runtime_io::TestExternalities { // Add system let mut t = self .system_config .unwrap_or(system::GenesisConfig::default()) .build_storage::() .unwrap(); // Add membership self.membership_config .unwrap_or(members::GenesisConfig::default()) .assimilate_storage(&mut t) .unwrap(); t.into() } } pub type Balances = balances::Module; pub type Members = members::Module;