use super::*;
use crate as pallet_timestamp;
use frame_support::{derive_impl, parameter_types, traits::ConstU64};
use sp_io::TestExternalities;
use sp_runtime::BuildStorage;
type Block = frame_system::mocking::MockBlock<Test>;
type Moment = u64;
frame_support::construct_runtime!(
pub enum Test
{
System: frame_system,
Timestamp: pallet_timestamp,
}
);
#[derive_impl(frame_system::config_preludes::TestDefaultConfig as frame_system::DefaultConfig)]
impl frame_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 = frame_system::GenesisConfig::<Test>::default().build_storage().unwrap();
clear_captured_moment();
TestExternalities::new(t)
}