cw_orch_clone_testing/queriers/
node.rs

1use std::{cell::RefCell, rc::Rc};
2
3use crate::{
4    core::{AppResponse, CloneTestingApp},
5    CloneTesting,
6};
7use cw_orch_core::{
8    environment::{NodeQuerier, Querier, QuerierGetter, StateInterface},
9    CwEnvError,
10};
11
12pub struct CloneNodeQuerier {
13    app: Rc<RefCell<CloneTestingApp>>,
14}
15
16impl CloneNodeQuerier {
17    fn new<S: StateInterface>(mock: &CloneTesting<S>) -> Self {
18        Self {
19            app: mock.app.clone(),
20        }
21    }
22}
23
24impl Querier for CloneNodeQuerier {
25    type Error = CwEnvError;
26}
27
28impl<S: StateInterface> QuerierGetter<CloneNodeQuerier> for CloneTesting<S> {
29    fn querier(&self) -> CloneNodeQuerier {
30        CloneNodeQuerier::new(self)
31    }
32}
33
34impl NodeQuerier for CloneNodeQuerier {
35    type Response = AppResponse;
36
37    fn latest_block(&self) -> Result<cosmwasm_std::BlockInfo, Self::Error> {
38        Ok(self.app.borrow().block_info())
39    }
40
41    fn block_by_height(&self, _height: u64) -> Result<cosmwasm_std::BlockInfo, Self::Error> {
42        unimplemented!()
43    }
44
45    fn block_height(&self) -> Result<u64, Self::Error> {
46        let block_info = self.latest_block()?;
47
48        Ok(block_info.height)
49    }
50
51    fn block_time(&self) -> Result<u128, Self::Error> {
52        let block_info = self.latest_block()?;
53
54        Ok(block_info.time.nanos() as u128)
55    }
56
57    fn simulate_tx(&self, _tx_bytes: Vec<u8>) -> Result<u64, Self::Error> {
58        unimplemented!()
59    }
60
61    fn find_tx(&self, _hash: String) -> Result<Self::Response, Self::Error> {
62        unimplemented!()
63    }
64}