mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 12:48:00 +00:00
Referendum proposal's metadata (#12568)
* referenda metadata * todo comment * remove TODO, update rustdocs * referenda clear_metadata origin signed or root * referenda metadata unit tests * drop schema type for referenda metadata * remove metadata type * referenda metadata benches * note different preimages * metadata for democracy pallet * metadata democracy pallet tests and benches * fix cargo clippy * update docs * ".git/.scripts/bench-bot.sh" pallet dev pallet_democracy * ".git/.scripts/bench-bot.sh" pallet dev pallet_referenda * Update the doc frame/democracy/src/lib.rs Co-authored-by: Roman Useinov <roman.useinov@gmail.com> * Update the doc frame/democracy/src/lib.rs Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * reference instead clone for take Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com> * error rename BadMetadata to PreimageNotExist * clear metadata within internal_cancel_referendum fn * remove redundant clone * collapse metadata api into one set_metadata method * fmt * review fixes * not request preimage on set_metadata * rename events and update docs * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_democracy * ".git/.scripts/commands/bench/bench.sh" pallet dev pallet_referenda * rename reset_metadata to transfer_metadata --------- Co-authored-by: command-bot <> Co-authored-by: Roman Useinov <roman.useinov@gmail.com> Co-authored-by: Anthony Alaribe <anthonyalaribe@gmail.com>
This commit is contained in:
@@ -578,3 +578,75 @@ fn curve_handles_all_inputs() {
|
||||
let threshold = test_curve.threshold(Perbill::one());
|
||||
assert_eq!(threshold, Perbill::zero());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn set_metadata_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
use frame_support::traits::Hash as PreimageHash;
|
||||
// invalid preimage hash.
|
||||
let invalid_hash: PreimageHash = [1u8; 32].into();
|
||||
// fails to set metadata for a finished referendum.
|
||||
assert_ok!(Referenda::submit(
|
||||
RuntimeOrigin::signed(1),
|
||||
Box::new(RawOrigin::Root.into()),
|
||||
set_balance_proposal_bounded(1),
|
||||
DispatchTime::At(1),
|
||||
));
|
||||
let index = ReferendumCount::<Test>::get() - 1;
|
||||
assert_ok!(Referenda::kill(RuntimeOrigin::root(), index));
|
||||
assert_noop!(
|
||||
Referenda::set_metadata(RuntimeOrigin::signed(1), index, Some(invalid_hash)),
|
||||
Error::<Test>::NotOngoing,
|
||||
);
|
||||
// no permission to set metadata.
|
||||
assert_ok!(Referenda::submit(
|
||||
RuntimeOrigin::signed(1),
|
||||
Box::new(RawOrigin::Root.into()),
|
||||
set_balance_proposal_bounded(1),
|
||||
DispatchTime::At(1),
|
||||
));
|
||||
let index = ReferendumCount::<Test>::get() - 1;
|
||||
assert_noop!(
|
||||
Referenda::set_metadata(RuntimeOrigin::signed(2), index, Some(invalid_hash)),
|
||||
Error::<Test>::NoPermission,
|
||||
);
|
||||
// preimage does not exist.
|
||||
let index = ReferendumCount::<Test>::get() - 1;
|
||||
assert_noop!(
|
||||
Referenda::set_metadata(RuntimeOrigin::signed(1), index, Some(invalid_hash)),
|
||||
Error::<Test>::PreimageNotExist,
|
||||
);
|
||||
// metadata set.
|
||||
let index = ReferendumCount::<Test>::get() - 1;
|
||||
let hash = note_preimage(1);
|
||||
assert_ok!(Referenda::set_metadata(RuntimeOrigin::signed(1), index, Some(hash)));
|
||||
System::assert_last_event(RuntimeEvent::Referenda(crate::Event::MetadataSet {
|
||||
index,
|
||||
hash,
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn clear_metadata_works() {
|
||||
new_test_ext().execute_with(|| {
|
||||
let hash = note_preimage(1);
|
||||
assert_ok!(Referenda::submit(
|
||||
RuntimeOrigin::signed(1),
|
||||
Box::new(RawOrigin::Root.into()),
|
||||
set_balance_proposal_bounded(1),
|
||||
DispatchTime::At(1),
|
||||
));
|
||||
let index = ReferendumCount::<Test>::get() - 1;
|
||||
assert_ok!(Referenda::set_metadata(RuntimeOrigin::signed(1), index, Some(hash)));
|
||||
assert_noop!(
|
||||
Referenda::set_metadata(RuntimeOrigin::signed(2), index, None),
|
||||
Error::<Test>::NoPermission,
|
||||
);
|
||||
assert_ok!(Referenda::set_metadata(RuntimeOrigin::signed(1), index, None),);
|
||||
System::assert_last_event(RuntimeEvent::Referenda(crate::Event::MetadataCleared {
|
||||
index,
|
||||
hash,
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user