abstract_adapter/endpoints/
reply.rs1use abstract_sdk::base::ReplyEndpoint;
2
3use crate::{state::ContractError, AdapterContract};
4
5impl<Error: ContractError, CustomInitMsg, CustomExecMsg, CustomQueryMsg, SudoMsg> ReplyEndpoint
6 for AdapterContract<Error, CustomInitMsg, CustomExecMsg, CustomQueryMsg, SudoMsg>
7{
8}
9
10#[cfg(test)]
11mod test {
12 #![allow(clippy::needless_borrows_for_generic_args)]
13 use abstract_sdk::AbstractSdkError;
14 use abstract_testing::mock_env_validated;
15 use cosmwasm_std::{testing::mock_dependencies, Binary, Reply, SubMsgResponse};
16
17 use crate::mock::{reply, AdapterMockResult};
18
19 #[coverage_helper::test]
20 fn endpoint() -> AdapterMockResult {
21 let mut deps = mock_dependencies();
22 let env = mock_env_validated(deps.api);
23 deps.querier = abstract_testing::abstract_mock_querier(deps.api);
24 let reply_msg = Reply {
25 id: 1,
26 #[allow(deprecated)]
27 result: cosmwasm_std::SubMsgResult::Ok(SubMsgResponse {
28 events: vec![],
29 data: Some("test_reply".as_bytes().into()),
30 msg_responses: vec![],
31 }),
32 payload: Binary::default(),
33 gas_used: 0,
34 };
35 let res = reply(deps.as_mut(), env, reply_msg)?;
36 assert_eq!(res.messages.len(), 0);
37 assert_eq!(res.data, Some("test_reply".as_bytes().into()));
39 Ok(())
40 }
41
42 #[coverage_helper::test]
43 fn no_matching_id() -> AdapterMockResult {
44 let mut deps = mock_dependencies();
45 let env = mock_env_validated(deps.api);
46 deps.querier = abstract_testing::abstract_mock_querier(deps.api);
47 let reply_msg = Reply {
48 id: 0,
49 #[allow(deprecated)]
50 result: cosmwasm_std::SubMsgResult::Ok(SubMsgResponse {
51 events: vec![],
52 data: Some("test_reply".as_bytes().into()),
53 msg_responses: vec![],
54 }),
55 payload: Binary::default(),
56 gas_used: 0,
57 };
58 let res = reply(deps.as_mut(), env, reply_msg);
59 assert_eq!(
60 res,
61 Err(AbstractSdkError::MissingHandler {
62 endpoint: "reply with id 0".into(),
63 }
64 .into())
65 );
66 Ok(())
67 }
68}