#[cfg(test)]
mod tests {
    use crate::contract::{execute, instantiate, query};
    use crate::execute::*;
    use crate::msg::*;
    use crate::query::{query_admins, query_particles, query_total_particles};
    use crate::ContractError;
    use cosmwasm_std::from_json;
    use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info};

    #[test]
    fn proper_flow() {
        let mut deps = mock_dependencies();

        let owner = "owner";
        let instantiate_msg = InstantiateMsg {
            admins: vec![
                "owner".to_string(),
                "admin1".to_string(),
                "admin2".to_string(),
            ],
        };

        let info = mock_info(&owner, &[]);
        instantiate(deps.as_mut(), mock_env(), info, instantiate_msg).unwrap();

        let expected_config = vec![
            "owner".to_string(),
            "admin1".to_string(),
            "admin2".to_string(),
        ];
        assert_eq!(query_admins(deps.as_ref()).unwrap(), expected_config);

        let update_admins_msg = ExecuteMsg::UpdateAdmins {
            admins: vec![
                "owner".to_string(),
                "admin1".to_string(),
                "admin3".to_string(),
            ],
        };
        let info = mock_info("admin1", &[]);
        execute(deps.as_mut(), mock_env(), info, update_admins_msg).unwrap();

        let expected_config = vec![
            "owner".to_string(),
            "admin1".to_string(),
            "admin3".to_string(),
        ];
        assert_eq!(query_admins(deps.as_ref()).unwrap(), expected_config);

        let add_particles_msg = ExecuteMsg::AddParticles {
            particles: vec![
                "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe1".to_string(),
                "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe2".to_string(),
                "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe3".to_string(),
            ],
        };
        let info = mock_info("admin3", &[]);
        execute(deps.as_mut(), mock_env(), info, add_particles_msg).unwrap();
        assert_eq!(query_total_particles(deps.as_ref()).unwrap(), 3);

        let query_particles_msg = QueryMsg::Particles {
            start_after: None,
            limit: None,
        };
        let query_particle_response =
            query(deps.as_ref(), mock_env(), query_particles_msg).unwrap();
        let particles: Vec<(u32, String)> = from_json(&query_particle_response).unwrap();
        assert_eq!(
            particles,
            vec![
                (
                    1,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe1".to_string()
                ),
                (
                    2,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe2".to_string()
                ),
                (
                    3,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe3".to_string()
                ),
            ]
        );

        let add_particles_msg = ExecuteMsg::AddParticles {
            particles: vec![
                "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe4".to_string(),
                "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe5".to_string(),
                "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe6".to_string(),
            ],
        };
        let info = mock_info("admin1", &[]);
        execute(deps.as_mut(), mock_env(), info, add_particles_msg).unwrap();
        assert_eq!(query_total_particles(deps.as_ref()).unwrap(), 6);

        let delete_particles_msg = ExecuteMsg::DeleteParticles {
            particles: vec![1, 6],
        };
        let info = mock_info("admin3", &[]);
        execute(deps.as_mut(), mock_env(), info, delete_particles_msg).unwrap();
        assert_eq!(query_total_particles(deps.as_ref()).unwrap(), 4);

        let query_particles_msg = QueryMsg::Particles {
            start_after: None,
            limit: None,
        };
        let query_particle_response =
            query(deps.as_ref(), mock_env(), query_particles_msg).unwrap();
        let particles: Vec<(u32, String)> = from_json(&query_particle_response).unwrap();
        assert_eq!(
            particles,
            vec![
                (
                    2,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe2".to_string()
                ),
                (
                    3,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe3".to_string()
                ),
                (
                    4,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe4".to_string()
                ),
                (
                    5,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe5".to_string()
                ),
            ]
        );

        let query_head_id_response = query(deps.as_ref(), mock_env(), QueryMsg::HeadId {}).unwrap();
        let head_id: u32 = from_json(&query_head_id_response).unwrap();
        assert_eq!(head_id, 6);
        assert_eq!(query_total_particles(deps.as_ref()).unwrap(), 4);

        let query_particles_msg = QueryMsg::Particles {
            start_after: Some(2),
            limit: Some(2),
        };
        let query_particle_response =
            query(deps.as_ref(), mock_env(), query_particles_msg).unwrap();
        let particles: Vec<(u32, String)> = from_json(&query_particle_response).unwrap();
        assert_eq!(
            particles,
            vec![
                (
                    3,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe3".to_string()
                ),
                (
                    4,
                    "QmUX9mt8ftaHcn9Nc6SR4j9MsKkYfkcZqkfPTmMmBgeTe4".to_string()
                ),
            ]
        );
    }
}

Dimensions

trident/src/deploy/tests.rs
cw-cyber/contracts/hub-skills/src/tests.rs
trident/src/lsp/semantic/tests.rs
trident/src/syntax/format/tests.rs
cw-cyber/contracts/hub-libs/src/tests.rs
cw-cyber/contracts/hub-channels/src/tests.rs
trident/src/package/registry/tests.rs
trident/src/syntax/lexer/tests.rs
trident/src/cost/stack_verifier/tests.rs
cw-cyber/contracts/hub-networks/src/tests.rs
trident/src/verify/sym/tests.rs
cw-cyber/contracts/cw-cyber-subgraph/src/tests.rs
cw-cyber/contracts/cw-cyber-gift/src/tests.rs
trident/src/verify/report/tests.rs
trident/src/package/store/tests.rs
cw-cyber/contracts/hub-tokens/src/tests.rs
trident/src/config/scaffold/tests.rs
trident/src/verify/solve/tests.rs
trident/src/verify/smt/tests.rs
trident/src/package/manifest/tests.rs
trident/src/verify/synthesize/tests.rs
cw-cyber/contracts/cw-cyber-passport/src/tests.rs
trident/src/verify/equiv/tests.rs
trident/src/lsp/util/tests.rs
trident/src/config/resolve/tests.rs
trident/src/package/hash/tests.rs
trident/src/ir/lir/tests.rs
cw-cyber/contracts/hub-protocols/src/tests.rs
trident/src/syntax/grammar/tests.rs
trident/src/ir/tir/optimize/tests.rs
trident/src/neural/data/tir_graph/tests.rs
trident/src/ir/tir/lower/tests.rs
trident/src/ir/tir/stack/tests.rs

Local Graph