cw_orch_clone_testing/queriers/
bank.rs1use std::{cell::RefCell, rc::Rc};
2
3use cosmwasm_std::{Addr, Coin};
4use cw_orch_core::{
5 environment::{BankQuerier, Querier, QuerierGetter, StateInterface},
6 CwEnvError,
7};
8
9use crate::{core::CloneTestingApp, CloneTesting};
10
11pub struct CloneBankQuerier {
12 app: Rc<RefCell<CloneTestingApp>>,
13}
14
15impl CloneBankQuerier {
16 fn new<S: StateInterface>(mock: &CloneTesting<S>) -> Self {
17 Self {
18 app: mock.app.clone(),
19 }
20 }
21}
22
23impl<S: StateInterface> QuerierGetter<CloneBankQuerier> for CloneTesting<S> {
24 fn querier(&self) -> CloneBankQuerier {
25 CloneBankQuerier::new(self)
26 }
27}
28
29impl Querier for CloneBankQuerier {
30 type Error = CwEnvError;
31}
32
33impl BankQuerier for CloneBankQuerier {
34 fn balance(
35 &self,
36 address: &Addr,
37 denom: Option<String>,
38 ) -> Result<Vec<cosmwasm_std::Coin>, Self::Error> {
39 if let Some(denom) = denom {
40 let amount = self
41 .app
42 .borrow()
43 .wrap()
44 .query_balance(address, denom.clone())?
45 .amount;
46 Ok(vec![Coin { amount, denom }])
47 } else {
48 let amount = self.app.borrow().wrap().query_all_balances(address)?;
49 Ok(amount)
50 }
51 }
52
53 fn supply_of(&self, denom: impl Into<String>) -> Result<cosmwasm_std::Coin, Self::Error> {
54 Ok(self.app.borrow().wrap().query_supply(denom)?)
55 }
56
57 fn total_supply(&self) -> Result<Vec<cosmwasm_std::Coin>, Self::Error> {
58 unimplemented!()
59 }
60}