mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-13 22:11:06 +00:00
tests for assets pallet (#8487)
* tests for assets * Update frame/assets/src/tests.rs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * Update frame/assets/src/tests.rs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> * add force asset status check * remove TODO * actually remove TODO * add force asset status tests Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
@@ -492,9 +492,6 @@ fn set_metadata_should_work() {
|
||||
});
|
||||
}
|
||||
|
||||
// TODO: tests for force_set_metadata, force_clear_metadata, force_asset_status
|
||||
// https://github.com/paritytech/substrate/issues/8470
|
||||
|
||||
#[test]
|
||||
fn freezer_should_work() {
|
||||
new_test_ext().execute_with(|| {
|
||||
@@ -556,3 +553,82 @@ fn imbalances_should_work() {
|
||||
assert_eq!(Assets::total_supply(0), 30);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn force_metadata_should_work() {
|
||||
new_test_ext().execute_with(|| {
|
||||
//force set metadata works
|
||||
assert_ok!(Assets::force_create(Origin::root(), 0, 1, true, 1));
|
||||
assert_ok!(Assets::force_set_metadata(Origin::root(), 0, vec![0u8; 10], vec![0u8; 10], 8, false));
|
||||
assert!(Metadata::<Test>::contains_key(0));
|
||||
|
||||
//overwrites existing metadata
|
||||
let asset_original_metadata = Metadata::<Test>::get(0);
|
||||
assert_ok!(Assets::force_set_metadata(Origin::root(), 0, vec![1u8; 10], vec![1u8; 10], 8, false));
|
||||
assert_ne!(Metadata::<Test>::get(0), asset_original_metadata);
|
||||
|
||||
//attempt to set metadata for non-existent asset class
|
||||
assert_noop!(
|
||||
Assets::force_set_metadata(Origin::root(), 1, vec![0u8; 10], vec![0u8; 10], 8, false),
|
||||
Error::<Test>::Unknown
|
||||
);
|
||||
|
||||
//string length limit check
|
||||
let limit = StringLimit::get() as usize;
|
||||
assert_noop!(
|
||||
Assets::force_set_metadata(Origin::root(), 0, vec![0u8; limit + 1], vec![0u8; 10], 8, false),
|
||||
Error::<Test>::BadMetadata
|
||||
);
|
||||
assert_noop!(
|
||||
Assets::force_set_metadata(Origin::root(), 0, vec![0u8; 10], vec![0u8; limit + 1], 8, false),
|
||||
Error::<Test>::BadMetadata
|
||||
);
|
||||
|
||||
//force clear metadata works
|
||||
assert!(Metadata::<Test>::contains_key(0));
|
||||
assert_ok!(Assets::force_clear_metadata(Origin::root(), 0));
|
||||
assert!(!Metadata::<Test>::contains_key(0));
|
||||
|
||||
//Error handles clearing non-existent asset class
|
||||
assert_noop!(Assets::force_clear_metadata(Origin::root(), 1), Error::<Test>::Unknown);
|
||||
});
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn force_asset_status_should_work(){
|
||||
new_test_ext().execute_with(|| {
|
||||
Balances::make_free_balance_be(&1, 10);
|
||||
Balances::make_free_balance_be(&2, 10);
|
||||
assert_ok!(Assets::create(Origin::signed(1), 0, 1, 30));
|
||||
assert_ok!(Assets::mint(Origin::signed(1), 0, 1, 50));
|
||||
assert_ok!(Assets::mint(Origin::signed(1), 0, 2, 150));
|
||||
|
||||
//force asset status to change min_balance > balance
|
||||
assert_ok!(Assets::force_asset_status(Origin::root(), 0, 1, 1, 1, 1, 100, true, false));
|
||||
assert_eq!(Assets::balance(0, 1), 50);
|
||||
|
||||
//account can recieve assets for balance < min_balance
|
||||
assert_ok!(Assets::transfer(Origin::signed(2), 0, 1, 1));
|
||||
assert_eq!(Assets::balance(0, 1), 51);
|
||||
|
||||
//account on outbound transfer will cleanup for balance < min_balance
|
||||
assert_ok!(Assets::transfer(Origin::signed(1), 0, 2, 1));
|
||||
assert_eq!(Assets::balance(0,1), 0);
|
||||
|
||||
//won't create new account with balance below min_balance
|
||||
assert_noop!(Assets::transfer(Origin::signed(2), 0, 3, 50), TokenError::BelowMinimum);
|
||||
|
||||
//force asset status will not execute for non-existent class
|
||||
assert_noop!(
|
||||
Assets::force_asset_status(Origin::root(), 1, 1, 1, 1, 1, 90, true, false),
|
||||
Error::<Test>::Unknown
|
||||
);
|
||||
|
||||
//account drains to completion when funds dip below min_balance
|
||||
assert_ok!(Assets::force_asset_status(Origin::root(), 0, 1, 1, 1, 1, 110, true, false));
|
||||
assert_ok!(Assets::transfer(Origin::signed(2), 0, 1, 110));
|
||||
assert_eq!(Assets::balance(0, 1), 200);
|
||||
assert_eq!(Assets::balance(0, 2), 0);
|
||||
assert_eq!(Assets::total_supply(0), 200);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user