From da8632783f1a4437f918e6451c35373aa1b14c8d Mon Sep 17 00:00:00 2001 From: str-mv Date: Thu, 07 May 2020 10:25:38 +0000 Subject: [PATCH] tests added --- --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -58,16 +58,16 @@ decl_storage! { // It is important to update your storage name so that your pallet's // storage items are isolated from other pallets. - trait Store for Module as TemplateModule { + trait Store for Module as Nft { /// Next available collection ID - pub NextCollectionID get(next_collection_id): u64 = 1; + pub NextCollectionID get(fn next_collection_id): u64; /// Collection map - pub Collection get(collection): map hasher(blake2_128_concat) u64 => CollectionType; + pub Collection get(collection): map hasher(identity) u64 => CollectionType; /// Admins map (collection) - pub AdminList get(admin_list_collection): map hasher(blake2_128_concat) u64 => Vec; + pub AdminList get(admin_list_collection): map hasher(identity) u64 => Vec; /// Balance owner per collection map pub Balance get(balance_count): map hasher(blake2_128_concat) (u64, T::AccountId) => u64; @@ -113,8 +113,11 @@ let who = ensure_signed(origin)?; // Generate next collection ID - let next_id = Self::next_collection_id(); - ::put(next_id+1); + let next_id = NextCollectionID::get() + .checked_add(1) + .expect("collection id error");; + + NextCollectionID::put(next_id); // Create new collection let new_collection = CollectionType { @@ -245,8 +248,8 @@ data: properties, }; - let current_index = ::get(collection_id); - ::insert(collection_id, current_index+1); + let current_index = ::get(collection_id) + 1; + ::insert(collection_id, current_index); >::insert((collection_id, current_index), new_item); Ok(()) --- a/pallets/nft/src/tests.rs +++ b/pallets/nft/src/tests.rs @@ -17,7 +17,6 @@ new_test_ext().execute_with(|| { let size = 1024; let origin1 = Origin::signed(1); - let origin2 = Origin::signed(2); assert_ok!(TemplateModule::create_collection(origin1.clone(), size)); assert_ok!(TemplateModule::change_collection_owner(origin1.clone(), 1, 2)); @@ -52,33 +51,130 @@ }); } -// #[test] -// fn burn_item() { -// new_test_ext().execute_with(|| { -// let size = 1024; -// let origin1 = Origin::signed(1); -// let origin2 = Origin::signed(2); +#[test] +fn burn_item() { + new_test_ext().execute_with(|| { + let size = 1024; + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + + assert_ok!(TemplateModule::create_collection(origin1.clone(), size)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::create_item(origin2.clone(), 1, [1,1,1].to_vec())); + + // check balance (collection with id = 1, user id = 2) + assert_eq!(TemplateModule::balance_count((1, 2)), 1); + + // burn item + assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1)); + assert_noop!(TemplateModule::burn_item(origin1.clone(), 1, 1), "Item does not exists"); + }); +} + + +#[test] +fn add_collection_admin() { + new_test_ext().execute_with(|| { + let size = 1024; + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + let origin3 = Origin::signed(3); + + assert_ok!(TemplateModule::create_collection(origin1.clone(), size)); + assert_ok!(TemplateModule::create_collection(origin2.clone(), size)); + assert_ok!(TemplateModule::create_collection(origin3.clone(), size)); + + assert_eq!(TemplateModule::collection(1).owner, 1); + assert_eq!(TemplateModule::collection(2).owner, 2); + assert_eq!(TemplateModule::collection(3).owner, 3); + + // collection admin + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3)); + + assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true); + }); +} + +#[test] +fn remove_collection_admin() { + new_test_ext().execute_with(|| { + let size = 1024; + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + let origin3 = Origin::signed(3); + + assert_ok!(TemplateModule::create_collection(origin1.clone(), size)); + assert_ok!(TemplateModule::create_collection(origin2.clone(), size)); + assert_ok!(TemplateModule::create_collection(origin3.clone(), size)); + + assert_eq!(TemplateModule::collection(1).owner, 1); + assert_eq!(TemplateModule::collection(2).owner, 2); + assert_eq!(TemplateModule::collection(3).owner, 3); + + // collection admin + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3)); + + assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true); + + // remove admin + assert_ok!(TemplateModule::remove_collection_admin(origin2.clone(), 1, 3)); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false); + }); +} + +#[test] +fn balance_of() { + new_test_ext().execute_with(|| { + let size = 1024; + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + let origin3 = Origin::signed(3); -// assert_ok!(TemplateModule::create_collection(origin1.clone(), size)); -// assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); -// assert_ok!(TemplateModule::create_item(origin2.clone(), 1, [1,1,1].to_vec())); + assert_ok!(TemplateModule::create_collection(origin1.clone(), size)); + assert_ok!(TemplateModule::create_collection(origin2.clone(), size)); + assert_ok!(TemplateModule::create_collection(origin3.clone(), size)); -// // check balance (collection with id = 1, user id = 2) -// assert_eq!(TemplateModule::balance_count((1, 2)), 1); + assert_eq!(TemplateModule::collection(1).owner, 1); + assert_eq!(TemplateModule::collection(2).owner, 2); + assert_eq!(TemplateModule::collection(3).owner, 3); -// // burn item -// assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1)); -// assert_noop!(TemplateModule::burn_item(origin1.clone(), 1, 1), "Item does not exists"); -// }); -// } + // check balance before + assert_eq!(TemplateModule::balance_count((1, 1)), 0); -// #[test] -// fn correct_error_for_none_value() { -// new_test_ext().execute_with(|| { -// // Ensure the correct error is thrown on None value -// assert_noop!( -// TemplateModule::cause_error(Origin::signed(1)), -// Error::::NoneValue -// ); -// }); -// } + // create item + assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,1,1].to_vec())); + + // check balance (collection with id = 1, user id = 2) + assert_eq!(TemplateModule::balance_count((1, 1)), 1); + assert_eq!(TemplateModule::item_id((1,1)).owner, 1); + }); +} + +#[test] +fn transfer() { + new_test_ext().execute_with(|| { + let size = 1024; + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + let origin3 = Origin::signed(3); + + assert_ok!(TemplateModule::create_collection(origin1.clone(), size)); + assert_ok!(TemplateModule::create_collection(origin2.clone(), size)); + assert_ok!(TemplateModule::create_collection(origin3.clone(), size)); + + assert_eq!(TemplateModule::collection(1).owner, 1); + assert_eq!(TemplateModule::collection(2).owner, 2); + assert_eq!(TemplateModule::collection(3).owner, 3); + + // create item + assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,1,1].to_vec())); + + // transfer + assert_ok!(TemplateModule::transfer(origin1.clone(), 1, 1, 2)); + assert_eq!(TemplateModule::item_id((1,1)).owner, 2); + }); +} -- gitstuff