mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 23:51:05 +00:00
Pallet assets improvements (#13543)
This commit is contained in:
@@ -1261,28 +1261,58 @@ fn querying_roles_should_work() {
|
||||
#[test]
|
||||
fn normal_asset_create_and_destroy_callbacks_should_work() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert!(storage::get(b"asset_created").is_none());
|
||||
assert!(storage::get(b"asset_destroyed").is_none());
|
||||
assert!(storage::get(AssetsCallbackHandle::CREATED.as_bytes()).is_none());
|
||||
assert!(storage::get(AssetsCallbackHandle::DESTROYED.as_bytes()).is_none());
|
||||
|
||||
Balances::make_free_balance_be(&1, 100);
|
||||
assert_ok!(Assets::create(RuntimeOrigin::signed(1), 0, 1, 1));
|
||||
assert!(storage::get(b"asset_created").is_some());
|
||||
assert!(storage::get(b"asset_destroyed").is_none());
|
||||
assert!(storage::get(AssetsCallbackHandle::CREATED.as_bytes()).is_some());
|
||||
assert!(storage::get(AssetsCallbackHandle::DESTROYED.as_bytes()).is_none());
|
||||
|
||||
assert_ok!(Assets::start_destroy(RuntimeOrigin::signed(1), 0));
|
||||
assert_ok!(Assets::destroy_accounts(RuntimeOrigin::signed(1), 0));
|
||||
assert_ok!(Assets::destroy_approvals(RuntimeOrigin::signed(1), 0));
|
||||
// Callback still hasn't been invoked
|
||||
assert!(storage::get(AssetsCallbackHandle::DESTROYED.as_bytes()).is_none());
|
||||
|
||||
assert_ok!(Assets::finish_destroy(RuntimeOrigin::signed(1), 0));
|
||||
assert!(storage::get(b"asset_destroyed").is_some());
|
||||
assert!(storage::get(AssetsCallbackHandle::DESTROYED.as_bytes()).is_some());
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn root_asset_create_should_work() {
|
||||
new_test_ext().execute_with(|| {
|
||||
assert!(storage::get(b"asset_created").is_none());
|
||||
assert!(storage::get(AssetsCallbackHandle::CREATED.as_bytes()).is_none());
|
||||
assert_ok!(Assets::force_create(RuntimeOrigin::root(), 0, 1, true, 1));
|
||||
assert!(storage::get(b"asset_created").is_some());
|
||||
assert!(storage::get(b"asset_destroyed").is_none());
|
||||
assert!(storage::get(AssetsCallbackHandle::CREATED.as_bytes()).is_some());
|
||||
assert!(storage::get(AssetsCallbackHandle::DESTROYED.as_bytes()).is_none());
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn asset_create_and_destroy_is_reverted_if_callback_fails() {
|
||||
new_test_ext().execute_with(|| {
|
||||
// Asset creation fails due to callback failure
|
||||
AssetsCallbackHandle::set_return_error();
|
||||
Balances::make_free_balance_be(&1, 100);
|
||||
assert_noop!(
|
||||
Assets::create(RuntimeOrigin::signed(1), 0, 1, 1),
|
||||
Error::<Test>::CallbackFailed
|
||||
);
|
||||
|
||||
// Callback succeeds, so asset creation succeeds
|
||||
AssetsCallbackHandle::set_return_ok();
|
||||
assert_ok!(Assets::create(RuntimeOrigin::signed(1), 0, 1, 1));
|
||||
|
||||
// Asset destroy should fail due to callback failure
|
||||
AssetsCallbackHandle::set_return_error();
|
||||
assert_ok!(Assets::start_destroy(RuntimeOrigin::signed(1), 0));
|
||||
assert_ok!(Assets::destroy_accounts(RuntimeOrigin::signed(1), 0));
|
||||
assert_ok!(Assets::destroy_approvals(RuntimeOrigin::signed(1), 0));
|
||||
assert_noop!(
|
||||
Assets::finish_destroy(RuntimeOrigin::signed(1), 0),
|
||||
Error::<Test>::CallbackFailed
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user