partner_chains_mock_data_sources/
governed_map.rs

1use crate::Result;
2use async_trait::async_trait;
3use sidechain_domain::byte_string::ByteString;
4use sidechain_domain::*;
5use sp_governed_map::{GovernedMapDataSource, MainChainScriptsV1};
6
7/// Mocked governed map data source that serves constant data
8#[derive(Debug, Default)]
9pub struct GovernedMapDataSourceMock {
10	data: BTreeMap<String, ByteString>,
11}
12
13impl GovernedMapDataSourceMock {
14	/// Creates new mock data source
15	pub fn new(data: BTreeMap<String, ByteString>) -> Self {
16		Self { data }
17	}
18}
19
20#[async_trait]
21impl GovernedMapDataSource for GovernedMapDataSourceMock {
22	async fn get_mapping_changes(
23		&self,
24		_since_mc_block: Option<McBlockHash>,
25		_up_to_mc_block: McBlockHash,
26		_scripts: MainChainScriptsV1,
27	) -> Result<Vec<(String, Option<ByteString>)>> {
28		Ok(self.data.iter().map(|(k, v)| (k.clone(), Some(v.clone()))).collect())
29	}
30
31	async fn get_state_at_block(
32		&self,
33		_mc_block: McBlockHash,
34		_main_chain_scripts: MainChainScriptsV1,
35	) -> Result<BTreeMap<String, ByteString>> {
36		Ok(self.data.clone())
37	}
38}