abstract_adapter/endpoints/
reply.rs

1use 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        // confirm data is set
38        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}