From d96245d01eabc1e766fa470ddc5d5214214cccd4 Mon Sep 17 00:00:00 2001 From: str-mv Date: Tue, 08 Sep 2020 13:41:45 +0000 Subject: [PATCH] Unit tests added --- --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -129,6 +129,18 @@ pub amount: u64 } +#[derive(Encode, Decode, Default, Clone, PartialEq)] +#[cfg_attr(feature = "std", derive(Debug))] +pub struct VestingItem +{ + pub sender: AccountId, + pub recipient: AccountId, + pub collection_id: u64, + pub item_id: u64, + pub amount: u64, + pub vesting_date: Moment +} + pub trait Trait: system::Trait { type Event: From> + Into<::Event>; @@ -156,6 +168,10 @@ pub FungibleItemList get(fn fungible_item_id): double_map hasher(blake2_128_concat) u64, hasher(blake2_128_concat) u64 => FungibleItemType; pub ReFungibleItemList get(fn refungible_item_id): double_map hasher(blake2_128_concat) u64, hasher(blake2_128_concat) u64 => ReFungibleItemType; + // Active vesting list + // pub VestingList get(fn vesting): double_map hasher(blake2_128_concat) u64, hasher(blake2_128_concat) u64 => VestingItem; + + /// Index list pub AddressTokens get(fn address_tokens): double_map hasher(blake2_128_concat) u64, hasher(blake2_128_concat) T::AccountId => Vec; // Sponsorship @@ -636,6 +652,7 @@ fn burn_refungible_item(collection_id: u64, item_id: u64, owner: T::AccountId) -> DispatchResult { + ensure!(>::contains_key(collection_id, item_id), "Item does not exists"); let collection = >::get(collection_id, item_id); let item = collection.owner.iter().filter(|&i| i.owner == owner).next().unwrap(); Self::remove_token_index(collection_id, item_id, owner.clone())?; @@ -655,6 +672,7 @@ fn burn_nft_item(collection_id: u64, item_id: u64) -> DispatchResult { + ensure!(>::contains_key(collection_id, item_id), "Item does not exists"); let item = >::get(collection_id, item_id); Self::remove_token_index(collection_id, item_id, item.owner.clone())?; @@ -671,6 +689,7 @@ fn burn_fungible_item(collection_id: u64, item_id: u64) -> DispatchResult { + ensure!(>::contains_key(collection_id, item_id), "Item does not exists"); let item = >::get(collection_id, item_id); Self::remove_token_index(collection_id, item_id, item.owner.clone())?; --- a/pallets/nft/src/tests.rs +++ b/pallets/nft/src/tests.rs @@ -183,7 +183,6 @@ }); } - #[test] fn transfer_nft_item() { new_test_ext().execute_with(|| { @@ -364,580 +363,416 @@ }); } +#[test] +fn change_collection_owner() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let mode: CollectionMode = CollectionMode::NFT(2000); + let origin1 = Origin::signed(1); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode + )); + assert_ok!(TemplateModule::change_collection_owner( + origin1.clone(), + 1, + 2 + )); + assert_eq!(TemplateModule::collection(1).owner, 2); + }); +} +#[test] +fn destroy_collection() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let mode: CollectionMode = CollectionMode::NFT(2000); + let origin1 = Origin::signed(1); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode + )); + assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1)); + }); +} +#[test] +fn burn_nft_item() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let mode: CollectionMode = CollectionMode::NFT(2000); + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode + )); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::create_item( + origin2.clone(), + 1, + [1, 2, 3].to_vec(), + 1 + )); + assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec()); + // check balance (collection with id = 1, user id = 1) + assert_eq!(TemplateModule::balance_count(1, 1), 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" + ); + assert_eq!(TemplateModule::balance_count(1, 1), 0); + }); +} +#[test] +fn burn_fungible_item() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let mode: CollectionMode = CollectionMode::Fungible(3); + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode + )); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::create_item( + origin2.clone(), + 1, + [].to_vec(), + 1 + )); + // check balance (collection with id = 1, user id = 1) + assert_eq!(TemplateModule::balance_count(1, 1), 1000); + // burn item + assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1)); + assert_noop!( + TemplateModule::burn_item(origin1.clone(), 1, 1), + "Item does not exists" + ); + assert_eq!(TemplateModule::balance_count(1, 1), 0); + }); +} -// #[test] -// fn create_collection_test() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); +#[test] +fn burn_refungible_item() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let mode: CollectionMode = CollectionMode::ReFungible(200, 3); -// let size = 1024; -// let origin1 = Origin::signed(1); -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_eq!(TemplateModule::collection(1).owner, 1); -// }); -// } + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode + )); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::create_item( + origin2.clone(), + 1, + [1,2,3].to_vec(), + 1 + )); -// #[test] -// fn change_collection_owner() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + assert_eq!(TemplateModule::refungible_item_id(1,1).data, [1,2,3].to_vec()); -// let size = 1024; -// let origin1 = Origin::signed(1); + // check balance (collection with id = 1, user id = 2) + assert_eq!(TemplateModule::balance_count(1, 1), 1000); -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::change_collection_owner( -// origin1.clone(), -// 1, -// 2 -// )); -// assert_eq!(TemplateModule::collection(1).owner, 2); -// }); -// } + // 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 destroy_collection() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + assert_eq!(TemplateModule::balance_count(1, 1), 0); + }); +} -// let size = 1024; -// let origin1 = Origin::signed(1); +#[test] +fn add_collection_admin() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let mode: CollectionMode = CollectionMode::NFT(2000); -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1)); -// }); -// } - -// #[test] -// fn create_item() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); - -// let size = 1024; -// let origin1 = Origin::signed(1); -// let origin2 = Origin::signed(2); - -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.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); -// }); -// } - -// #[test] -// fn burn_item() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); - -// let size = 1024; -// let origin1 = Origin::signed(1); -// let origin2 = Origin::signed(2); - -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.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" -// ); - -// assert_eq!(TemplateModule::balance_count((1, 1)), 0); -// }); -// } - -// #[test] -// fn add_collection_admin() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); - -// 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(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin2.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin3.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.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 col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); - -// 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(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin2.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin3.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.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 col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); - -// 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(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin2.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin3.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); - -// assert_eq!(TemplateModule::collection(1).owner, 1); -// assert_eq!(TemplateModule::collection(2).owner, 2); -// assert_eq!(TemplateModule::collection(3).owner, 3); - -// // check balance before -// assert_eq!(TemplateModule::balance_count((1, 1)), 0); - -// // create item -// assert_ok!(TemplateModule::create_item( -// origin1.clone(), -// 1, -// [1, 1, 1].to_vec() -// )); + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + let origin3 = Origin::signed(3); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode.clone() + )); + assert_ok!(TemplateModule::create_collection( + origin2.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode.clone() + )); + assert_ok!(TemplateModule::create_collection( + origin3.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode.clone() + )); -// // 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); -// }); -// } + assert_eq!(TemplateModule::collection(1).owner, 1); + assert_eq!(TemplateModule::collection(2).owner, 2); + assert_eq!(TemplateModule::collection(3).owner, 3); -// #[test] -// fn transfer() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + // collection admin + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3)); -// let size = 1024; -// let origin1 = Origin::signed(1); -// let origin2 = Origin::signed(2); -// let origin3 = Origin::signed(3); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true); + }); +} -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin2.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin3.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); +#[test] +fn remove_collection_admin() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let mode: CollectionMode = CollectionMode::NFT(2000); -// assert_eq!(TemplateModule::collection(1).owner, 1); -// assert_eq!(TemplateModule::collection(2).owner, 2); -// assert_eq!(TemplateModule::collection(3).owner, 3); + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); + let origin3 = Origin::signed(3); -// // create item -// assert_ok!(TemplateModule::create_item( -// origin1.clone(), -// 1, -// [1, 1, 1].to_vec() -// )); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode.clone() + )); + assert_ok!(TemplateModule::create_collection( + origin2.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode.clone() + )); + assert_ok!(TemplateModule::create_collection( + origin3.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode.clone() + )); -// // transfer -// assert_ok!(TemplateModule::transfer(origin1.clone(), 1, 1, 2)); -// assert_eq!(TemplateModule::item_id((1, 1)).owner, 2); + assert_eq!(TemplateModule::collection(1).owner, 1); + assert_eq!(TemplateModule::collection(2).owner, 2); + assert_eq!(TemplateModule::collection(3).owner, 3); -// // balance_of check -// assert_eq!(TemplateModule::balance_count((1, 1)), 0); -// assert_eq!(TemplateModule::balance_count((1, 2)), 1); -// }); -// } + // collection admin + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2)); + assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3)); -// #[test] -// fn approve() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true); -// let size = 1024; -// let origin1 = Origin::signed(1); -// let origin2 = Origin::signed(2); -// let origin3 = Origin::signed(3); + // remove admin + assert_ok!(TemplateModule::remove_collection_admin( + origin2.clone(), + 1, + 3 + )); + assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false); + }); +} -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin2.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin3.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); +#[test] +fn balance_of() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let nft_mode: CollectionMode = CollectionMode::NFT(2000); + let furg_mode: CollectionMode = CollectionMode::Fungible(3); + let refung_mode: CollectionMode = CollectionMode::ReFungible(2000, 3); -// assert_eq!(TemplateModule::collection(1).owner, 1); -// assert_eq!(TemplateModule::collection(2).owner, 2); -// assert_eq!(TemplateModule::collection(3).owner, 3); + let origin1 = Origin::signed(1); -// // create item -// assert_ok!(TemplateModule::create_item( -// origin1.clone(), -// 1, -// [1, 1, 1].to_vec() -// )); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + nft_mode.clone() + )); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + furg_mode.clone() + )); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + refung_mode.clone() + )); -// // approve -// assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1)); -// assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true); -// }); -// } + assert_eq!(TemplateModule::collection(1).owner, 1); + assert_eq!(TemplateModule::collection(2).owner, 1); + assert_eq!(TemplateModule::collection(3).owner, 1); -// #[test] -// fn get_approved() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + // check balance before + assert_eq!(TemplateModule::balance_count(1, 1), 0); + assert_eq!(TemplateModule::balance_count(2, 1), 0); + assert_eq!(TemplateModule::balance_count(3, 1), 0); -// let size = 1024; -// let origin1 = Origin::signed(1); -// let origin2 = Origin::signed(2); -// let origin3 = Origin::signed(3); + // create item + assert_ok!(TemplateModule::create_item( + origin1.clone(), + 1, + [1, 1, 1].to_vec(), + 1 + )); -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin2.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin3.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); + assert_ok!(TemplateModule::create_item( + origin1.clone(), + 2, + [].to_vec(), + 1 + )); -// assert_eq!(TemplateModule::collection(1).owner, 1); -// assert_eq!(TemplateModule::collection(2).owner, 2); -// assert_eq!(TemplateModule::collection(3).owner, 3); + assert_ok!(TemplateModule::create_item( + origin1.clone(), + 3, + [1, 1, 1].to_vec(), + 1 + )); -// // create item -// assert_ok!(TemplateModule::create_item( -// origin1.clone(), -// 1, -// [1, 1, 1].to_vec() -// )); + // check balance (collection with id = 1, user id = 1) + assert_eq!(TemplateModule::balance_count(1, 1), 1); + assert_eq!(TemplateModule::balance_count(2, 1), 1000); + assert_eq!(TemplateModule::balance_count(3, 1), 1000); + assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 1); + assert_eq!(TemplateModule::fungible_item_id(2, 1).owner, 1); + assert_eq!(TemplateModule::refungible_item_id(3, 1).owner[0].owner, 1); + }); +} -// // approve -// assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1)); -// assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true); -// }); -// } +#[test] +fn approve() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let nft_mode: CollectionMode = CollectionMode::NFT(2000); + let origin1 = Origin::signed(1); -// #[test] -// fn transfer_from() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + nft_mode.clone() + )); -// let size = 1024; -// let origin1 = Origin::signed(1); -// let origin2 = Origin::signed(2); -// let origin3 = Origin::signed(3); + assert_eq!(TemplateModule::collection(1).owner, 1); -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin2.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin3.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); + // create item + assert_ok!(TemplateModule::create_item( + origin1.clone(), + 1, + [1, 1, 1].to_vec(), + 1 + )); -// assert_eq!(TemplateModule::collection(1).owner, 1); -// assert_eq!(TemplateModule::collection(2).owner, 2); -// assert_eq!(TemplateModule::collection(3).owner, 3); + // approve + assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1)); + assert_eq!(TemplateModule::approved(1, (1, 1))[0].approved, 2); + }); +} -// // create item -// assert_ok!(TemplateModule::create_item( -// origin1.clone(), -// 1, -// [1, 1, 1].to_vec() -// )); +#[test] +fn transfer_from() { + new_test_ext().execute_with(|| { + let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); + let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); + let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + let mode: CollectionMode = CollectionMode::NFT(2000); + let origin1 = Origin::signed(1); + let origin2 = Origin::signed(2); -// // approve -// assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1)); -// assert_ok!(TemplateModule::transfer_from(origin1.clone(), 1, 1, 2)); -// }); -// } + assert_ok!(TemplateModule::create_collection( + origin1.clone(), + col_name1.clone(), + col_desc1.clone(), + token_prefix1.clone(), + mode + )); -// #[test] -// fn index_list() { -// new_test_ext().execute_with(|| { -// let col_name1: Vec = "Test1\0".encode_utf16().collect::>(); -// let col_desc1: Vec = "TestDescription1\0".encode_utf16().collect::>(); -// let token_prefix1: Vec = b"token_prefix1\0".to_vec(); + assert_eq!(TemplateModule::collection(1).owner, 1); -// let size = 1024; -// let origin1 = Origin::signed(1); -// let origin2 = Origin::signed(2); -// let origin3 = Origin::signed(3); + // create item + assert_ok!(TemplateModule::create_item( + origin1.clone(), + 1, + [1, 1, 1].to_vec(), + 1 + )); -// assert_ok!(TemplateModule::create_collection( -// origin1.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin2.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); -// assert_ok!(TemplateModule::create_collection( -// origin3.clone(), -// col_name1.clone(), -// col_desc1.clone(), -// token_prefix1.clone(), -// size -// )); + // approve + assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1)); + assert_eq!(TemplateModule::approved(1, (1, 1))[0].approved, 2); + assert_ok!(TemplateModule::transfer_from(origin2.clone(), 1, 2, 1, 1, 1)); -// assert_eq!(TemplateModule::collection(1).owner, 1); -// assert_eq!(TemplateModule::collection(2).owner, 2); -// assert_eq!(TemplateModule::collection(3).owner, 3); -// // create items -// assert_ok!(TemplateModule::create_item( -// origin1.clone(), -// 1, -// [1, 1, 1].to_vec() -// )); -// assert_ok!(TemplateModule::create_item( -// origin1.clone(), -// 1, -// [1, 1, 2].to_vec() -// )); -// assert_ok!(TemplateModule::create_item( -// origin1.clone(), -// 1, -// [1, 2, 3].to_vec() -// )); -// assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 3); -// // burn one -// assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2)); -// assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2); -// // burn another one -// assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3)); -// assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1); -// }); -// } + // after transfer + assert_eq!(TemplateModule::balance_count(1, 1), 0); + assert_eq!(TemplateModule::balance_count(1, 2), 1); + }); +} --- a/runtime/src/lib.rs +++ b/runtime/src/lib.rs @@ -190,7 +190,6 @@ /// Version of the runtime. type Version = Version; /// Converts a module to the index of the module in `construct_runtime!`. - /// /// This type is being generated by `construct_runtime!`. type ModuleToIndex = ModuleToIndex; /// What to do if a new account is created. -- gitstuff