Testing an ADO is similar to testing any standard CosmWasm contract. We will take a look at one test and note some minor differences:
fn test_instantiate_works() {
let mut deps = mock_dependencies_custom(&[]);
let info = mock_info(OWNER, &[]);
let max_voting_period = Duration::Time(1234567);
// No voters fails
let instantiate_msg = InstantiateMsg {
kernel_address: MOCK_KERNEL_CONTRACT.to_string(),
owner: None,
voters: vec![],
threshold: Threshold::ThresholdQuorum {
threshold: Decimal::zero(),
quorum: Decimal::percent(1),
},
max_voting_period,
};
/// the rest of the test is the same in both versions
fn test_instantiate_works() {
let mut deps = mock_dependencies();
let info = mock_info(OWNER, &[]);
let max_voting_period = Duration::Time(1234567);
// No voters fails
let instantiate_msg = InstantiateMsg {
voters: vec![],
threshold: Threshold::ThresholdQuorum {
threshold: Decimal::zero(),
quorum: Decimal::percent(1),
},
max_voting_period,
};
/// the rest of the test is the same in both versions
Here we use the mock_dependencies_custom instead of mock_dependencies, which automatically assigns a kernel address (MOCK_KERNEL_CONTRACT).
The ADO InstantiateMsg includes kernel_address and owner fields.
As mentioned , we also provide custom mock structs for testing. You can check any of our published ADOs testing from our to see how these structs can be used to conduct testing.