use super::*;
#[test]
fn set_external_metadata_works() {
new_test_ext().execute_with(|| {
let invalid_hash: <Test as pezframe_system::Config>::Hash = [1u8; 32].into();
let owner = MetadataOwner::External;
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(2), owner.clone(), Some(invalid_hash)),
Error::<Test>::NoProposal,
);
assert_ok!(Democracy::external_propose(RuntimeOrigin::signed(2), set_balance_proposal(2)));
assert!(NextExternal::<Test>::exists());
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(1), owner.clone(), Some(invalid_hash)),
BadOrigin,
);
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(2), owner.clone(), Some(invalid_hash)),
Error::<Test>::PreimageNotExist,
);
let hash = note_preimage(1);
assert_ok!(Democracy::set_metadata(RuntimeOrigin::signed(2), owner.clone(), Some(hash)));
System::assert_last_event(RuntimeEvent::Democracy(crate::Event::MetadataSet {
owner,
hash,
}));
});
}
#[test]
fn clear_metadata_works() {
new_test_ext().execute_with(|| {
let owner = MetadataOwner::External;
assert_ok!(Democracy::external_propose(RuntimeOrigin::signed(2), set_balance_proposal(2)));
assert!(NextExternal::<Test>::exists());
let hash = note_preimage(1);
assert_ok!(Democracy::set_metadata(RuntimeOrigin::signed(2), owner.clone(), Some(hash)));
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(1), owner.clone(), None),
BadOrigin,
);
assert_ok!(Democracy::set_metadata(RuntimeOrigin::signed(2), owner.clone(), None));
System::assert_last_event(RuntimeEvent::Democracy(crate::Event::MetadataCleared {
owner,
hash,
}));
});
}
#[test]
fn set_proposal_metadata_works() {
new_test_ext().execute_with(|| {
let invalid_hash: <Test as pezframe_system::Config>::Hash = [1u8; 32].into();
assert_ok!(propose_set_balance(1, 2, 5));
let owner = MetadataOwner::Proposal(PublicPropCount::<Test>::get() - 1);
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(1), owner.clone(), Some(invalid_hash)),
Error::<Test>::PreimageNotExist,
);
let hash = note_preimage(1);
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(3), owner.clone(), Some(hash)),
Error::<Test>::NoPermission,
);
assert_ok!(Democracy::set_metadata(RuntimeOrigin::signed(1), owner.clone(), Some(hash)));
System::assert_last_event(RuntimeEvent::Democracy(crate::Event::MetadataSet {
owner,
hash,
}));
});
}
#[test]
fn clear_proposal_metadata_works() {
new_test_ext().execute_with(|| {
assert_ok!(propose_set_balance(1, 2, 5));
let owner = MetadataOwner::Proposal(PublicPropCount::<Test>::get() - 1);
let hash = note_preimage(1);
assert_ok!(Democracy::set_metadata(RuntimeOrigin::signed(1), owner.clone(), Some(hash)));
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(3), owner.clone(), None),
Error::<Test>::NoPermission,
);
assert_ok!(Democracy::set_metadata(RuntimeOrigin::signed(1), owner.clone(), None));
System::assert_last_event(RuntimeEvent::Democracy(crate::Event::MetadataCleared {
owner,
hash,
}));
});
}
#[test]
fn set_referendum_metadata_by_root() {
new_test_ext().execute_with(|| {
let index = Democracy::inject_referendum(
2,
set_balance_proposal(2),
VoteThreshold::SuperMajorityApprove,
0,
);
let owner = MetadataOwner::Referendum(index);
let hash = note_preimage(1);
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(3), owner.clone(), Some(hash)),
Error::<Test>::NoPermission,
);
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(3), owner.clone(), None),
Error::<Test>::NoPermission,
);
assert_ok!(Democracy::set_metadata(RuntimeOrigin::root(), owner.clone(), Some(hash)));
System::assert_last_event(RuntimeEvent::Democracy(crate::Event::MetadataSet {
owner: owner.clone(),
hash,
}));
assert_ok!(Democracy::set_metadata(RuntimeOrigin::root(), owner.clone(), None));
System::assert_last_event(RuntimeEvent::Democracy(crate::Event::MetadataCleared {
owner,
hash,
}));
});
}
#[test]
fn clear_referendum_metadata_works() {
new_test_ext().execute_with(|| {
let index = Democracy::inject_referendum(
2,
set_balance_proposal(2),
VoteThreshold::SuperMajorityApprove,
0,
);
let owner = MetadataOwner::Referendum(index);
let hash = note_preimage(1);
MetadataOf::<Test>::insert(owner.clone(), hash);
assert_noop!(
Democracy::set_metadata(RuntimeOrigin::signed(1), owner.clone(), None),
Error::<Test>::NoPermission,
);
ReferendumInfoOf::<Test>::insert(
index,
ReferendumInfo::Finished { end: 1, approved: true },
);
assert_ok!(Democracy::set_metadata(RuntimeOrigin::signed(1), owner.clone(), None));
System::assert_last_event(RuntimeEvent::Democracy(crate::Event::MetadataCleared {
owner,
hash,
}));
});
}