partner_chains_mock_data_sources/
governed_map.rs1use crate::Result;
2use async_trait::async_trait;
3use sidechain_domain::byte_string::ByteString;
4use sidechain_domain::*;
5use sp_governed_map::{GovernedMapDataSource, MainChainScriptsV1};
6
7#[derive(Debug, Default)]
9pub struct GovernedMapDataSourceMock {
10 data: BTreeMap<String, ByteString>,
11}
12
13impl GovernedMapDataSourceMock {
14 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}