abstract-adapter 0.24.1

base adapter contract implementation
Documentation
use abstract_sdk::base::ReplyEndpoint;

use crate::{state::ContractError, AdapterContract};

impl<Error: ContractError, CustomInitMsg, CustomExecMsg, CustomQueryMsg, SudoMsg> ReplyEndpoint
    for AdapterContract<Error, CustomInitMsg, CustomExecMsg, CustomQueryMsg, SudoMsg>
{
}

#[cfg(test)]
mod test {
    #![allow(clippy::needless_borrows_for_generic_args)]
    use abstract_sdk::AbstractSdkError;
    use abstract_testing::mock_env_validated;
    use cosmwasm_std::{testing::mock_dependencies, Binary, Reply, SubMsgResponse};

    use crate::mock::{reply, AdapterMockResult};

    #[coverage_helper::test]
    fn endpoint() -> AdapterMockResult {
        let mut deps = mock_dependencies();
        let env = mock_env_validated(deps.api);
        deps.querier = abstract_testing::abstract_mock_querier(deps.api);
        let reply_msg = Reply {
            id: 1,
            #[allow(deprecated)]
            result: cosmwasm_std::SubMsgResult::Ok(SubMsgResponse {
                events: vec![],
                data: Some("test_reply".as_bytes().into()),
                msg_responses: vec![],
            }),
            payload: Binary::default(),
            gas_used: 0,
        };
        let res = reply(deps.as_mut(), env, reply_msg)?;
        assert_eq!(res.messages.len(), 0);
        // confirm data is set
        assert_eq!(res.data, Some("test_reply".as_bytes().into()));
        Ok(())
    }

    #[coverage_helper::test]
    fn no_matching_id() -> AdapterMockResult {
        let mut deps = mock_dependencies();
        let env = mock_env_validated(deps.api);
        deps.querier = abstract_testing::abstract_mock_querier(deps.api);
        let reply_msg = Reply {
            id: 0,
            #[allow(deprecated)]
            result: cosmwasm_std::SubMsgResult::Ok(SubMsgResponse {
                events: vec![],
                data: Some("test_reply".as_bytes().into()),
                msg_responses: vec![],
            }),
            payload: Binary::default(),
            gas_used: 0,
        };
        let res = reply(deps.as_mut(), env, reply_msg);
        assert_eq!(
            res,
            Err(AbstractSdkError::MissingHandler {
                endpoint: "reply with id 0".into(),
            }
            .into())
        );
        Ok(())
    }
}