Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
tests for assets pallet (#8487)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
ferrell-code and bkchr committed Apr 1, 2021
1 parent b597818 commit 619947e
Showing 1 changed file with 79 additions and 3 deletions.
82 changes: 79 additions & 3 deletions frame/assets/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(|| {
Expand Down Expand Up @@ -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);
});
}

0 comments on commit 619947e

Please sign in to comment.