use super::*;
use crate as pezpallet_timestamp;
use pezframe_support::{derive_impl, parameter_types, traits::ConstU64};
use pezsp_io::TestExternalities;
use pezsp_runtime::BuildStorage;
type Block = pezframe_system::mocking::MockBlock<Test>;
type Moment = u64;
pezframe_support::construct_runtime!(
pub enum Test
{
System: pezframe_system,
Timestamp: pezpallet_timestamp,
}
);
#[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)]
impl pezframe_system::Config for Test {
type Block = Block;
}
parameter_types! {
pub static CapturedMoment: Option<Moment> = None;
}
pub struct MockOnTimestampSet;
impl OnTimestampSet<Moment> for MockOnTimestampSet {
fn on_timestamp_set(moment: Moment) {
CapturedMoment::mutate(|x| *x = Some(moment));
}
}
impl Config for Test {
type Moment = Moment;
type OnTimestampSet = MockOnTimestampSet;
type MinimumPeriod = ConstU64<5>;
type WeightInfo = ();
}
pub(crate) fn clear_captured_moment() {
CapturedMoment::mutate(|x| *x = None);
}
pub(crate) fn get_captured_moment() -> Option<Moment> {
CapturedMoment::get()
}
pub(crate) fn new_test_ext() -> TestExternalities {
let t = pezframe_system::GenesisConfig::<Test>::default().build_storage().unwrap();
clear_captured_moment();
TestExternalities::new(t)
}