difftreelog
NFTPAR-142 Off-chain and on-chain data schema. Fixed tests.
in: master
2 files changed
pallets/nft/src/lib.rsdiffbeforeafterboth250 }250 }251}251}252253impl From<CreateNftData> for CreateItemData {254 fn from(item: CreateNftData) -> Self {255 CreateItemData::NFT(item)256 }257}258259impl From<CreateReFungibleData> for CreateItemData {260 fn from(item: CreateReFungibleData) -> Self {261 CreateItemData::ReFungible(item)262 }263}264265impl From<CreateFungibleData> for CreateItemData {266 fn from(item: CreateFungibleData) -> Self {267 CreateItemData::Fungible(item)268 }269}252270253pub trait Trait: system::Trait + Sized + transaction_payment::Trait + pallet_contracts::Trait {271pub trait Trait: system::Trait + Sized + transaction_payment::Trait + pallet_contracts::Trait {254 type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;272 type Event: From<Event<Self>> + Into<<Self as system::Trait>::Event>;pallets/nft/src/tests.rsdiffbeforeafterboth1// Tests to be written here1// Tests to be written here2use crate::mock::*;2use crate::mock::*;3use crate::{AccessMode, ApprovePermissions, CollectionMode, Ownership, ChainLimits, CreateItemData, NftItemType, CreateNftData, CreateFungibleData, CreateReFungibleData};3use crate::{AccessMode, ApprovePermissions, CollectionMode, Ownership, ChainLimits, CreateItemData, CreateNftData, CreateFungibleData, CreateReFungibleData};4use frame_support::{assert_noop, assert_ok};4use frame_support::{assert_noop, assert_ok};5use frame_system::{ RawOrigin };5use frame_system::{ RawOrigin };6620 }));20 }));21}21}222223fn default_nft_data() -> CreateItemData {23fn default_nft_data() -> CreateNftData {24 CreateItemData::NFT(CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })24 CreateNftData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] }25}25}262627fn default_fungible_data () -> CreateItemData {27fn default_fungible_data () -> CreateFungibleData {28 CreateItemData::Fungible(CreateFungibleData { })28 CreateFungibleData { }29}29}303031fn default_re_fungible_data () -> CreateItemData {31fn default_re_fungible_data () -> CreateReFungibleData {32 CreateItemData::ReFungible(CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] })32 CreateReFungibleData { const_data: vec![1, 2, 3], variable_data: vec![3, 2, 1] }33}33}343435fn create_test_collection_for_owner(mode: &CollectionMode, owner: u64) -> u64 {35fn create_test_collection_for_owner(mode: &CollectionMode, owner: u64, id: u64) -> u64 {36 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();36 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();37 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();37 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();38 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();38 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();393940 let collection_id = TemplateModule::nextCollectionID();41 let origin1 = Origin::signed(owner);40 let origin1 = Origin::signed(owner);42 assert_ok!(TemplateModule::create_collection(41 assert_ok!(TemplateModule::create_collection(43 origin1.clone(),42 origin1.clone(),44 col_name1.clone(),43 col_name1.clone(),45 col_desc1.clone(),44 col_desc1.clone(),46 token_prefix1.clone(),45 token_prefix1.clone(),47 mode46 mode.clone()48 ));47 ));4849 assert_eq!(TemplateModule::collection(collection_id).owner, owner);49 let saved_col_name: Vec<u16> = "Test1\0\0".encode_utf16().collect::<Vec<u16>>();50 let saved_description: Vec<u16> = "TestDescription1\0\0".encode_utf16().collect::<Vec<u16>>();51 let saved_prefix: Vec<u8> = b"token_prefix1\0\0".to_vec();52 assert_eq!(TemplateModule::collection(id).owner, owner);50 return collection_id;53 assert_eq!(TemplateModule::collection(id).name, saved_col_name);54 assert_eq!(TemplateModule::collection(id).mode, *mode);55 assert_eq!(TemplateModule::collection(id).description, saved_description);56 assert_eq!(TemplateModule::collection(id).token_prefix, saved_prefix);57 id51}58}525953fn create_test_collection(mode: &CollectionMode) -> u64 {60fn create_test_collection(mode: &CollectionMode, id: u64) -> u64 {54 return create_test_collection_for_owner(&mode, 1);61 create_test_collection_for_owner(&mode, 1, id)55}62}566357fn create_test_item(collection_id: u64, data: &CreateItemData) {64fn create_test_item(collection_id: u64, data: &CreateItemData) {71fn create_nft_item() {78fn create_nft_item() {72 new_test_ext().execute_with(|| {79 new_test_ext().execute_with(|| {73 default_limits();80 default_limits();74 let collection_id = create_test_collection(&CollectionMode::NFT);81 let collection_id = create_test_collection(&CollectionMode::NFT, 1);7582 76 let data = default_nft_data();83 let data = default_nft_data();77 create_test_item(collection_id, &data);84 create_test_item(collection_id, &data.clone().into());78 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).const_data, data.const_data);85 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).const_data, data.const_data);79 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).variable_data, data.variable_data);86 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).variable_data, data.variable_data);80 });87 });84fn create_refungible_item() {91fn create_refungible_item() {85 new_test_ext().execute_with(|| {92 new_test_ext().execute_with(|| {86 default_limits();93 default_limits();87 let collection_id = create_test_collection(&CollectionMode::ReFungible(3));94 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);889589 let data = default_re_fungible_data();96 let data = default_re_fungible_data();90 create_test_item(collection_id, &data);97 create_test_item(collection_id, &data.clone().into());91 assert_eq!(98 assert_eq!(92 TemplateModule::refungible_item_id(collection_id, 1).const_data,99 TemplateModule::refungible_item_id(collection_id, 1).const_data,93 data.const_data100 data.const_data109#[test]116#[test]110fn create_fungible_item() {117fn create_fungible_item() {111 new_test_ext().execute_with(|| {118 new_test_ext().execute_with(|| {112 let collection_id = create_test_collection(&CollectionMode::Fungible(3));119 default_limits();120 121 let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);113122114 let data = default_fungible_data();123 let data = default_fungible_data();115 create_test_item(collection_id, &data);124 create_test_item(collection_id, &data.into());116125117 assert_eq!(TemplateModule::fungible_item_id(collection_id, 1).owner, 1);126 assert_eq!(TemplateModule::fungible_item_id(collection_id, 1).owner, 1);118 assert_eq!(TemplateModule::balance_count(1, 1), 1000);127 assert_eq!(TemplateModule::balance_count(1, 1), 1000);125 new_test_ext().execute_with(|| {134 new_test_ext().execute_with(|| {126 default_limits();135 default_limits();127 136 128 let collection_id = create_test_collection(&CollectionMode::Fungible(3));137 let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);129138130 let origin1 = Origin::signed(1);139 let origin1 = Origin::signed(1);131 let origin2 = Origin::signed(2);140 let origin2 = Origin::signed(2);132141133 let data = default_fungible_data();142 let data = default_fungible_data();134 create_test_item(collection_id, &data);143 create_test_item(collection_id, &data.into());135144136 assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);145 assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);137 assert_eq!(TemplateModule::balance_count(1, 1), 1000);146 assert_eq!(TemplateModule::balance_count(1, 1), 1000);171 new_test_ext().execute_with(|| {180 new_test_ext().execute_with(|| {172 default_limits();181 default_limits();173 182 174 let collection_id = create_test_collection(&CollectionMode::ReFungible(3));183 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);175184176 let data = default_re_fungible_data();185 let data = default_re_fungible_data();177 create_test_item(collection_id, &data);186 create_test_item(collection_id, &data.clone().into());178187179 let origin1 = Origin::signed(1);188 let origin1 = Origin::signed(1);180 let origin2 = Origin::signed(2);189 let origin2 = Origin::signed(2);259 new_test_ext().execute_with(|| {268 new_test_ext().execute_with(|| {260 default_limits();269 default_limits();261 270 262 let collection_id = create_test_collection(&CollectionMode::NFT);271 let collection_id = create_test_collection(&CollectionMode::NFT, 1);263272264 let data = default_nft_data();273 let data = default_nft_data();265 create_test_item(collection_id, &data);274 create_test_item(collection_id, &data.into());266 assert_eq!(TemplateModule::balance_count(1, 1), 1);275 assert_eq!(TemplateModule::balance_count(1, 1), 1);267 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);276 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);268277278 let origin1 = Origin::signed(1);269 // default scenario279 // default scenario270 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));280 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));271 assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 2);281 assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 2);281 new_test_ext().execute_with(|| {291 new_test_ext().execute_with(|| {282 default_limits();292 default_limits();283 293 284 let collection_id = create_test_collection(&CollectionMode::NFT);294 let collection_id = create_test_collection(&CollectionMode::NFT, 1);285295286 let data = default_nft_data();296 let data = default_nft_data();287 create_test_item(collection_id, &data);297 create_test_item(collection_id, &data.into());288298289 let origin1 = Origin::signed(1);299 let origin1 = Origin::signed(1);290 let origin2 = Origin::signed(2);300 let origin2 = Origin::signed(2);327#[test]337#[test]328fn nft_approve_and_transfer_from_white_list() {338fn nft_approve_and_transfer_from_white_list() {329 new_test_ext().execute_with(|| {339 new_test_ext().execute_with(|| {330 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();340 default_limits();331 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();341 332 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();342 let collection_id = create_test_collection(&CollectionMode::NFT, 1);333 let mode: CollectionMode = CollectionMode::NFT(2000);334343335 assert_ok!(TemplateModule::set_chain_limits(RawOrigin::Root.into(), ChainLimits { 336 collection_numbers_limit: 10,337 account_token_ownership_limit: 10,338 collections_admins_limit: 5,339 custom_data_limit: 2048,340 nft_sponsor_transfer_timeout: 15,341 fungible_sponsor_transfer_timeout: 15,342 refungible_sponsor_transfer_timeout: 15, 343 }));344345 let origin1 = Origin::signed(1);344 let origin1 = Origin::signed(1);346 let origin2 = Origin::signed(2);345 let origin2 = Origin::signed(2);347 assert_ok!(TemplateModule::create_collection(348 origin1.clone(),349 col_name1.clone(),350 col_desc1.clone(),351 token_prefix1.clone(),352 mode353 ));354 assert_eq!(TemplateModule::collection(1).owner, 1);355346356 assert_ok!(TemplateModule::create_item(347 let data = default_nft_data();357 origin1.clone(),358 1,348 create_test_item(collection_id, &data.clone().into());359 [1, 2, 3].to_vec(),349360 1361 ));362 assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());350 assert_eq!(TemplateModule::nft_item_id(1, 1).const_data, data.const_data);363 assert_eq!(TemplateModule::balance_count(1, 1), 1);351 assert_eq!(TemplateModule::balance_count(1, 1), 1);364 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);352 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);365353407 new_test_ext().execute_with(|| {395 new_test_ext().execute_with(|| {408 default_limits();396 default_limits();409 397 410 let collection_id = create_test_collection(&CollectionMode::ReFungible(3));398 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);411 399 412 let origin1 = Origin::signed(1);400 let origin1 = Origin::signed(1);413 let origin2 = Origin::signed(2);401 let origin2 = Origin::signed(2);414402415 let data = default_re_fungible_data();403 let data = default_re_fungible_data();416 create_test_item(collection_id, &data);404 create_test_item(collection_id, &data.into());417405418 assert_eq!(TemplateModule::balance_count(1, 1), 1000);406 assert_eq!(TemplateModule::balance_count(1, 1), 1000);419 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);407 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);474 new_test_ext().execute_with(|| {462 new_test_ext().execute_with(|| {475 default_limits();463 default_limits();476 464 477 let collection_id = create_test_collection(&CollectionMode::Fungible(3));465 let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);478 466 479 let data = default_fungible_data();467 let data = default_fungible_data();480 create_test_item(collection_id, &data);468 create_test_item(collection_id, &data.into());481469482 let origin1 = Origin::signed(1);470 let origin1 = Origin::signed(1);483 let origin2 = Origin::signed(2);471 let origin2 = Origin::signed(2);557 new_test_ext().execute_with(|| {545 new_test_ext().execute_with(|| {558 default_limits();546 default_limits();559 547 560 let collection_id = create_test_collection(&CollectionMode::NFT);548 let collection_id = create_test_collection(&CollectionMode::NFT, 1);561 549 562 let origin1 = Origin::signed(1);550 let origin1 = Origin::signed(1);563 assert_ok!(TemplateModule::change_collection_owner(551 assert_ok!(TemplateModule::change_collection_owner(574 new_test_ext().execute_with(|| {562 new_test_ext().execute_with(|| {575 default_limits();563 default_limits();576 564 577 let collection_id = create_test_collection(&CollectionMode::NFT);565 let collection_id = create_test_collection(&CollectionMode::NFT, 1);578 566 579 let origin1 = Origin::signed(1);567 let origin1 = Origin::signed(1);580 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id));568 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id));586 new_test_ext().execute_with(|| {574 new_test_ext().execute_with(|| {587 default_limits();575 default_limits();588 576 589 let collection_id = create_test_collection(&CollectionMode::NFT);577 let collection_id = create_test_collection(&CollectionMode::NFT, 1);590578591 let origin1 = Origin::signed(1);579 let origin1 = Origin::signed(1);592 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));580 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));593 581 594 let data = default_nft_data();582 let data = default_nft_data();595 create_test_item(collection_id, &data);583 create_test_item(collection_id, &data.into());596584597 // check balance (collection with id = 1, user id = 1)585 // check balance (collection with id = 1, user id = 1)598 assert_eq!(TemplateModule::balance_count(1, 1), 1);586 assert_eq!(TemplateModule::balance_count(1, 1), 1);613 new_test_ext().execute_with(|| {601 new_test_ext().execute_with(|| {614 default_limits();602 default_limits();615 603 616 let collection_id = create_test_collection(&CollectionMode::Fungible(3));604 let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);617 605 618 let origin1 = Origin::signed(1);606 let origin1 = Origin::signed(1);619 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));607 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), collection_id, 2));620 608 621 let data = default_fungible_data();609 let data = default_fungible_data();622 create_test_item(collection_id, &data);610 create_test_item(collection_id, &data.into());623611624 // check balance (collection with id = 1, user id = 1)612 // check balance (collection with id = 1, user id = 1)625 assert_eq!(TemplateModule::balance_count(1, 1), 1000);613 assert_eq!(TemplateModule::balance_count(1, 1), 1000);640 new_test_ext().execute_with(|| {628 new_test_ext().execute_with(|| {641 default_limits();629 default_limits();642 630 643 let collection_id = create_test_collection(&CollectionMode::ReFungible(3));631 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);644 let origin1 = Origin::signed(1);632 let origin1 = Origin::signed(1);645 let origin2 = Origin::signed(2);646633647 assert_ok!(TemplateModule::set_mint_permission(634 assert_ok!(TemplateModule::set_mint_permission(648 origin1.clone(),635 origin1.clone(),659 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));646 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));660 647 661 let data = default_re_fungible_data();648 let data = default_re_fungible_data();662 create_test_item(collection_id, &data);649 create_test_item(collection_id, &data.into());663650664 // check balance (collection with id = 1, user id = 2)651 // check balance (collection with id = 1, user id = 2)665 assert_eq!(TemplateModule::balance_count(1, 1), 1000);652 assert_eq!(TemplateModule::balance_count(1, 1), 1000);680 new_test_ext().execute_with(|| {667 new_test_ext().execute_with(|| {681 default_limits();668 default_limits();682 669 683 let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1);670 let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);684 create_test_collection_for_owner(&CollectionMode::NFT, 2);671 create_test_collection_for_owner(&CollectionMode::NFT, 2, 2);685 create_test_collection_for_owner(&CollectionMode::NFT, 3);672 create_test_collection_for_owner(&CollectionMode::NFT, 3, 3);686 673 687 let origin1 = Origin::signed(1);674 let origin1 = Origin::signed(1);688675700 new_test_ext().execute_with(|| {687 new_test_ext().execute_with(|| {701 default_limits();688 default_limits();702 689 703 let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1);690 let collection1_id = create_test_collection_for_owner(&CollectionMode::NFT, 1, 1);704 create_test_collection_for_owner(&CollectionMode::NFT, 2);691 create_test_collection_for_owner(&CollectionMode::NFT, 2, 2);705 create_test_collection_for_owner(&CollectionMode::NFT, 3);692 create_test_collection_for_owner(&CollectionMode::NFT, 3, 3);706693707 let origin1 = Origin::signed(1);694 let origin1 = Origin::signed(1);708 let origin2 = Origin::signed(2);695 let origin2 = Origin::signed(2);729 new_test_ext().execute_with(|| {716 new_test_ext().execute_with(|| {730 default_limits();717 default_limits();731 718 732 let nft_collection_id = create_test_collection(&CollectionMode::NFT);719 let nft_collection_id = create_test_collection(&CollectionMode::NFT, 1);733 let fungible_collection_id = create_test_collection(&CollectionMode::Fungible(3));720 let fungible_collection_id = create_test_collection(&CollectionMode::Fungible(3), 2);734 let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible(3));721 let re_fungible_collection_id = create_test_collection(&CollectionMode::ReFungible(3), 3);735 722 736 let origin1 = Origin::signed(1);737738 // check balance before723 // check balance before739 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 0);724 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 0);740 assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 0);725 assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 0);741 assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 0);726 assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 0);742727743 let nft_data = default_nft_data();728 let nft_data = default_nft_data();744 create_test_item(nft_collection_id, &nft_data);729 create_test_item(nft_collection_id, &nft_data.into());745 730 746 let fungible_data = default_fungible_data();731 let fungible_data = default_fungible_data();747 create_test_item(fungible_collection_id, &fungible_data);732 create_test_item(fungible_collection_id, &fungible_data.into());748 733 749 let re_fungible_data = default_re_fungible_data();734 let re_fungible_data = default_re_fungible_data();750 create_test_item(re_fungible_collection_id, &re_fungible_data);735 create_test_item(re_fungible_collection_id, &re_fungible_data.into());751736752 // check balance (collection with id = 1, user id = 1)737 // check balance (collection with id = 1, user id = 1)753 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);738 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);764 new_test_ext().execute_with(|| {749 new_test_ext().execute_with(|| {765 default_limits();750 default_limits();766 751 767 let collection_id = create_test_collection(&CollectionMode::NFT);752 let collection_id = create_test_collection(&CollectionMode::NFT, 1);768 753 769 let data = default_nft_data();754 let data = default_nft_data();770 create_test_item(collection_id, &data);755 create_test_item(collection_id, &data.into());771756772 let origin1 = Origin::signed(1);757 let origin1 = Origin::signed(1);773 758 782 new_test_ext().execute_with(|| {767 new_test_ext().execute_with(|| {783 default_limits();768 default_limits();784 769 785 let collection_id = create_test_collection(&CollectionMode::NFT);770 let collection_id = create_test_collection(&CollectionMode::NFT, 1);786 let origin1 = Origin::signed(1);771 let origin1 = Origin::signed(1);787 let origin2 = Origin::signed(2);772 let origin2 = Origin::signed(2);788773789 let data = default_nft_data();774 let data = default_nft_data();790 create_test_item(collection_id, &data);775 create_test_item(collection_id, &data.into());791776792 // approve777 // approve793 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));778 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));832 new_test_ext().execute_with(|| {817 new_test_ext().execute_with(|| {833 default_limits();818 default_limits();834 819 835 let collection_id = create_test_collection(&CollectionMode::NFT);820 let collection_id = create_test_collection(&CollectionMode::NFT, 1);836821837 let origin1 = Origin::signed(1);822 let origin1 = Origin::signed(1);838 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));823 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));845 new_test_ext().execute_with(|| {830 new_test_ext().execute_with(|| {846 default_limits();831 default_limits();847 832 848 let collection_id = create_test_collection(&CollectionMode::NFT);833 let collection_id = create_test_collection(&CollectionMode::NFT, 1);849 let origin1 = Origin::signed(1);834 let origin1 = Origin::signed(1);850 let origin2 = Origin::signed(2);835 let origin2 = Origin::signed(2);851836860 new_test_ext().execute_with(|| {845 new_test_ext().execute_with(|| {861 default_limits();846 default_limits();862 847 863 let collection_id = create_test_collection(&CollectionMode::NFT);848 let collection_id = create_test_collection(&CollectionMode::NFT, 1);864849865 let origin2 = Origin::signed(2);850 let origin2 = Origin::signed(2);866 assert_noop!(851 assert_noop!(889 new_test_ext().execute_with(|| {874 new_test_ext().execute_with(|| {890 default_limits();875 default_limits();891 876 892 let collection_id = create_test_collection(&CollectionMode::NFT);877 let collection_id = create_test_collection(&CollectionMode::NFT, 1);893878879 let origin1 = Origin::signed(1);894 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id));880 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), collection_id));895 assert_noop!(881 assert_noop!(896 TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2),882 TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2),905 new_test_ext().execute_with(|| {891 new_test_ext().execute_with(|| {906 default_limits();892 default_limits();907 893 908 let collection_id = create_test_collection(&CollectionMode::NFT);894 let collection_id = create_test_collection(&CollectionMode::NFT, 1);909 let origin1 = Origin::signed(1);895 let origin1 = Origin::signed(1);910 896 911 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));897 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));920 new_test_ext().execute_with(|| {906 new_test_ext().execute_with(|| {921 default_limits();907 default_limits();922 908 923 let collection_id = create_test_collection(&CollectionMode::NFT);909 let collection_id = create_test_collection(&CollectionMode::NFT, 1);924910925 let origin1 = Origin::signed(1);911 let origin1 = Origin::signed(1);926 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));912 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));938 new_test_ext().execute_with(|| {924 new_test_ext().execute_with(|| {939 default_limits();925 default_limits();940 926 941 let collection_id = create_test_collection(&CollectionMode::NFT);927 let collection_id = create_test_collection(&CollectionMode::NFT, 1);942 let origin1 = Origin::signed(1);928 let origin1 = Origin::signed(1);943 let origin2 = Origin::signed(2);929 let origin2 = Origin::signed(2);944930959 new_test_ext().execute_with(|| {945 new_test_ext().execute_with(|| {960 default_limits();946 default_limits();961 947 962 let collection_id = create_test_collection(&CollectionMode::NFT);948 let collection_id = create_test_collection(&CollectionMode::NFT, 1);963 let origin1 = Origin::signed(1);949 let origin1 = Origin::signed(1);964 let origin2 = Origin::signed(2);950 let origin2 = Origin::signed(2);965951990 new_test_ext().execute_with(|| {976 new_test_ext().execute_with(|| {991 default_limits();977 default_limits();992 978 993 let collection_id = create_test_collection(&CollectionMode::NFT);979 let collection_id = create_test_collection(&CollectionMode::NFT, 1);994 let origin1 = Origin::signed(1);980 let origin1 = Origin::signed(1);995 let origin2 = Origin::signed(2);981 let origin2 = Origin::signed(2);9969821010 new_test_ext().execute_with(|| {996 new_test_ext().execute_with(|| {1011 default_limits();997 default_limits();1012 998 1013 let collection_id = create_test_collection(&CollectionMode::NFT);999 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1014 let origin1 = Origin::signed(1);1000 let origin1 = Origin::signed(1);101510011016 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));1002 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));1034 new_test_ext().execute_with(|| {1020 new_test_ext().execute_with(|| {1035 default_limits();1021 default_limits();1036 1022 1037 let collection_id = create_test_collection(&CollectionMode::NFT);1023 let collection_id = create_test_collection(&CollectionMode::NFT, 1);103810241039 let origin1 = Origin::signed(1);1025 let origin1 = Origin::signed(1);1040 1026 1041 let data = default_nft_data();1027 let data = default_nft_data();1042 create_test_item(collection_id, &data);1028 create_test_item(collection_id, &data.into());104310291044 assert_ok!(TemplateModule::set_public_access_mode(1030 assert_ok!(TemplateModule::set_public_access_mode(1045 origin1.clone(),1031 origin1.clone(),1060 new_test_ext().execute_with(|| {1046 new_test_ext().execute_with(|| {1061 default_limits();1047 default_limits();1062 1048 1063 let collection_id = create_test_collection(&CollectionMode::NFT);1049 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1064 let origin1 = Origin::signed(1);1050 let origin1 = Origin::signed(1);1065 1051 1066 let data = default_nft_data();1052 let data = default_nft_data();1067 create_test_item(collection_id, &data);1053 create_test_item(collection_id, &data.into());106810541069 assert_ok!(TemplateModule::set_public_access_mode(1055 assert_ok!(TemplateModule::set_public_access_mode(1070 origin1.clone(),1056 origin1.clone(),1097 new_test_ext().execute_with(|| {1083 new_test_ext().execute_with(|| {1098 default_limits();1084 default_limits();1099 1085 1100 let collection_id = create_test_collection(&CollectionMode::NFT);1086 let collection_id = create_test_collection(&CollectionMode::NFT, 1);110110871102 let origin1 = Origin::signed(1);1088 let origin1 = Origin::signed(1);1103 1089 1104 let data = default_nft_data();1090 let data = default_nft_data();1105 create_test_item(collection_id, &data);1091 create_test_item(collection_id, &data.into());110610921107 assert_ok!(TemplateModule::set_public_access_mode(1093 assert_ok!(TemplateModule::set_public_access_mode(1108 origin1.clone(),1094 origin1.clone(),1123 new_test_ext().execute_with(|| {1109 new_test_ext().execute_with(|| {1124 default_limits();1110 default_limits();1125 1111 1126 let collection_id = create_test_collection(&CollectionMode::NFT);1112 let collection_id = create_test_collection(&CollectionMode::NFT, 1);112711131128 let origin1 = Origin::signed(1);1114 let origin1 = Origin::signed(1);112911151130 let data = default_nft_data();1116 let data = default_nft_data();1131 create_test_item(collection_id, &data);1117 create_test_item(collection_id, &data.into());113211181133 assert_ok!(TemplateModule::set_public_access_mode(1119 assert_ok!(TemplateModule::set_public_access_mode(1134 origin1.clone(),1120 origin1.clone(),1161 new_test_ext().execute_with(|| {1147 new_test_ext().execute_with(|| {1162 default_limits();1148 default_limits();1163 1149 1164 let collection_id = create_test_collection(&CollectionMode::NFT);1150 let collection_id = create_test_collection(&CollectionMode::NFT, 1);116511511166 let origin1 = Origin::signed(1);1152 let origin1 = Origin::signed(1);116711531168 let data = default_nft_data();1154 let data = default_nft_data();1169 create_test_item(collection_id, &data);1155 create_test_item(collection_id, &data.into());117011561171 assert_ok!(TemplateModule::set_public_access_mode(1157 assert_ok!(TemplateModule::set_public_access_mode(1172 origin1.clone(),1158 origin1.clone(),1186 new_test_ext().execute_with(|| {1172 new_test_ext().execute_with(|| {1187 default_limits();1173 default_limits();1188 1174 1189 let collection_id = create_test_collection(&CollectionMode::NFT);1175 let collection_id = create_test_collection(&CollectionMode::NFT, 1);119011761191 let origin1 = Origin::signed(1);1177 let origin1 = Origin::signed(1);1192 assert_ok!(TemplateModule::set_public_access_mode(1178 assert_ok!(TemplateModule::set_public_access_mode(1210 new_test_ext().execute_with(|| {1196 new_test_ext().execute_with(|| {1211 default_limits();1197 default_limits();1212 1198 1213 let collection_id = create_test_collection(&CollectionMode::NFT);1199 let collection_id = create_test_collection(&CollectionMode::NFT, 1);121412001215 let data = default_nft_data();1201 let data = default_nft_data();1216 create_test_item(collection_id, &data);1202 create_test_item(collection_id, &data.into());1217 1203 1218 let origin1 = Origin::signed(1);1204 let origin1 = Origin::signed(1);121912051234 new_test_ext().execute_with(|| {1220 new_test_ext().execute_with(|| {1235 default_limits();1221 default_limits();1236 1222 1237 let collection_id = create_test_collection(&CollectionMode::NFT);1223 let collection_id = create_test_collection(&CollectionMode::NFT, 1);123812241239 let data = default_nft_data();1225 let data = default_nft_data();1240 create_test_item(collection_id, &data);1226 create_test_item(collection_id, &data.into());1241 1227 1242 let origin1 = Origin::signed(1);1228 let origin1 = Origin::signed(1);124312291270 new_test_ext().execute_with(|| {1256 new_test_ext().execute_with(|| {1271 default_limits();1257 default_limits();1272 1258 1273 let collection_id = create_test_collection(&CollectionMode::NFT);1259 let collection_id = create_test_collection(&CollectionMode::NFT, 1);1274 let origin1 = Origin::signed(1);1260 let origin1 = Origin::signed(1);127512611276 assert_ok!(TemplateModule::set_public_access_mode(1262 assert_ok!(TemplateModule::set_public_access_mode(1285 ));1271 ));128612721287 let data = default_nft_data();1273 let data = default_nft_data();1288 create_test_item(collection_id, &data);1274 create_test_item(collection_id, &data.into());1289 });1275 });1290}1276}129112771295 new_test_ext().execute_with(|| {1281 new_test_ext().execute_with(|| {1296 default_limits();1282 default_limits();1297 1283 1298 let collection_id = create_test_collection(&CollectionMode::NFT);1284 let collection_id = create_test_collection(&CollectionMode::NFT, 1);129912851300 let origin1 = Origin::signed(1);1286 let origin1 = Origin::signed(1);1301 let origin2 = Origin::signed(2);1287 let origin2 = Origin::signed(2);1317 origin2.clone(),1303 origin2.clone(),1318 collection_id,1304 collection_id,1319 2,1305 2,1320 default_nft_data()1306 default_nft_data().into()1321 ));1307 ));1322 });1308 });1323}1309}1328 new_test_ext().execute_with(|| {1314 new_test_ext().execute_with(|| {1329 default_limits();1315 default_limits();1330 1316 1331 let collection_id = create_test_collection(&CollectionMode::NFT);1317 let collection_id = create_test_collection(&CollectionMode::NFT, 1);133213181333 let origin1 = Origin::signed(1);1319 let origin1 = Origin::signed(1);1334 let origin2 = Origin::signed(2);1320 let origin2 = Origin::signed(2);1346 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));1332 assert_ok!(TemplateModule::add_to_white_list(origin1.clone(), collection_id, 2));134713331348 assert_noop!(1334 assert_noop!(1349 TemplateModule::create_item(origin2.clone(), 1, vec![1, 2, 3], 2),1335 TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()),1350 "Public minting is not allowed for this collection"1336 "Public minting is not allowed for this collection."1351 );1337 );1352 });1338 });1353}1339}1358 new_test_ext().execute_with(|| {1344 new_test_ext().execute_with(|| {1359 default_limits();1345 default_limits();1360 1346 1361 let collection_id = create_test_collection(&CollectionMode::NFT);1347 let collection_id = create_test_collection(&CollectionMode::NFT, 1);136213481363 let origin1 = Origin::signed(1);1349 let origin1 = Origin::signed(1);1364 let origin2 = Origin::signed(2);1350 let origin2 = Origin::signed(2);1375 ));1361 ));137613621377 assert_noop!(1363 assert_noop!(1378 TemplateModule::create_item(origin2.clone(), 1, vec![1, 2, 3], 2),1364 TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()),1379 "Public minting is not allowed for this collection"1365 "Public minting is not allowed for this collection."1380 );1366 );1381 });1367 });1382}1368}1387 new_test_ext().execute_with(|| {1373 new_test_ext().execute_with(|| {1388 default_limits();1374 default_limits();1389 1375 1390 let collection_id = create_test_collection(&CollectionMode::NFT);1376 let collection_id = create_test_collection(&CollectionMode::NFT, 1);139113771392 let origin1 = Origin::signed(1);1378 let origin1 = Origin::signed(1);139313791403 ));1389 ));140413901405 let data = default_nft_data();1391 let data = default_nft_data();1406 create_test_item(collection_id, &data);1392 create_test_item(collection_id, &data.into());1407 });1393 });1408}1394}140913951413 new_test_ext().execute_with(|| {1399 new_test_ext().execute_with(|| {1414 default_limits();1400 default_limits();1415 1401 1416 let collection_id = create_test_collection(&CollectionMode::NFT);1402 let collection_id = create_test_collection(&CollectionMode::NFT, 1);141714031418 let origin1 = Origin::signed(1);1404 let origin1 = Origin::signed(1);1419 let origin2 = Origin::signed(2);1405 let origin2 = Origin::signed(2);1435 origin2.clone(),1421 origin2.clone(),1436 1,1422 1,1437 2,1423 2,1438 default_nft_data()1424 default_nft_data().into()1439 ));1425 ));1440 });1426 });1441}1427}1446 new_test_ext().execute_with(|| {1432 new_test_ext().execute_with(|| {1447 default_limits();1433 default_limits();1448 1434 1449 let collection_id = create_test_collection(&CollectionMode::NFT);1435 let collection_id = create_test_collection(&CollectionMode::NFT, 1);145014361451 let origin1 = Origin::signed(1);1437 let origin1 = Origin::signed(1);1452 let origin2 = Origin::signed(2);1438 let origin2 = Origin::signed(2);1463 ));1449 ));146414501465 assert_noop!(1451 assert_noop!(1466 TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data()),1452 TemplateModule::create_item(origin2.clone(), 1, 2, default_nft_data().into()),1467 "Address is not in white list"1453 "Address is not in white list"1468 );1454 );1469 });1455 });1475 new_test_ext().execute_with(|| {1461 new_test_ext().execute_with(|| {1476 default_limits();1462 default_limits();1477 1463 1478 let collection_id = create_test_collection(&CollectionMode::NFT);1464 let collection_id = create_test_collection(&CollectionMode::NFT, 1);147914651480 let origin1 = Origin::signed(1);1466 let origin1 = Origin::signed(1);1481 let origin2 = Origin::signed(2);1467 let origin2 = Origin::signed(2);1496 origin2.clone(),1482 origin2.clone(),1497 1,1483 1,1498 2,1484 2,1499 default_nft_data()1485 default_nft_data().into()1500 ));1486 ));1501 });1487 });1502}1488}1507 new_test_ext().execute_with(|| {1493 new_test_ext().execute_with(|| {1508 default_limits();1494 default_limits();1509 1495 1510 create_test_collection(&CollectionMode::NFT);1496 create_test_collection(&CollectionMode::NFT, 1);1511 });1497 });1512}1498}15131499151915051520 let origin1 = Origin::signed(1);1506 let origin1 = Origin::signed(1);152115071522 for _ in 0..default_collection_numbers_limit() {1508 for i in 0..default_collection_numbers_limit() {1523 create_test_collection(&CollectionMode::NFT)1509 create_test_collection(&CollectionMode::NFT, i + 1);1524 }1510 }152515111512 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();1513 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();1514 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();15151526 // 11-th collection in chain. Expects error1516 // 11-th collection in chain. Expects error1527 assert_noop!(TemplateModule::create_collection(1517 assert_noop!(TemplateModule::create_collection(1528 origin1.clone(),1518 origin1.clone(),1529 col_name1.clone(),1519 col_name1.clone(),1530 col_desc1.clone(),1520 col_desc1.clone(),1531 token_prefix1.clone(),1521 token_prefix1.clone(),1532 mode.clone()1522 CollectionMode::NFT1533 ), "Total collections bound exceeded");1523 ), "Total collections bound exceeded");1534 });1524 });1535}1525}1540 new_test_ext().execute_with(|| {1530 new_test_ext().execute_with(|| {1541 default_limits();1531 default_limits();1542 1532 1543 let collection_id = create_test_collection(&CollectionMode::NFT);1533 let collection_id = create_test_collection(&CollectionMode::NFT, 1);154415341545 let data = default_nft_data();1535 let data = default_nft_data();1546 create_test_item(collection_id, &data);1536 create_test_item(collection_id, &data.clone().into());1547 create_test_item(collection_id, &data);1537 create_test_item(collection_id, &data.into());1548 });1538 });1549}1539}155015401562 refungible_sponsor_transfer_timeout: 15, 1552 refungible_sponsor_transfer_timeout: 15, 1563 }));1553 }));1564 1554 1565 let collection_id = create_test_collection(&CollectionMode::NFT);1555 let collection_id = create_test_collection(&CollectionMode::NFT, 1);156615561567 let origin1 = Origin::signed(1);1557 let origin1 = Origin::signed(1);1568 let data = default_nft_data();1558 let data = default_nft_data();1569 create_test_item(collection_id, &data);1559 create_test_item(collection_id, &data.clone().into());157015601571 assert_noop!(TemplateModule::create_item(1561 assert_noop!(TemplateModule::create_item(1572 origin1.clone(),1562 origin1.clone(),1573 1,1563 1,1574 1,1564 1,1575 data1565 data.into()1576 ), "Owned tokens by a single address bound exceeded");1566 ), "Owned tokens by a single address bound exceeded");1577 });1567 });1578}1568}1591 refungible_sponsor_transfer_timeout: 15, 1581 refungible_sponsor_transfer_timeout: 15, 1592 }));1582 }));1593 1583 1594 let collection_id = create_test_collection(&CollectionMode::NFT);1584 let collection_id = create_test_collection(&CollectionMode::NFT, 1);159515851596 let origin1 = Origin::signed(1);1586 let origin1 = Origin::signed(1);1597 1587 1614 refungible_sponsor_transfer_timeout: 15, 1604 refungible_sponsor_transfer_timeout: 15, 1615 }));1605 }));1616 1606 1617 let collection_id = create_test_collection(&CollectionMode::NFT);1607 let collection_id = create_test_collection(&CollectionMode::NFT, 1);161816081619 let origin1 = Origin::signed(1);1609 let origin1 = Origin::signed(1);162016101637 refungible_sponsor_transfer_timeout: 15, 1627 refungible_sponsor_transfer_timeout: 15, 1638 }));1628 }));1639 1629 1640 let collection_id = create_test_collection(&CollectionMode::NFT);1630 let collection_id = create_test_collection(&CollectionMode::NFT, 1);164116311642 let origin1 = Origin::signed(1);1632 let origin1 = Origin::signed(1);1643 let too_big_const_data = CreateItemData::NFT(CreateNftData{1633 let too_big_const_data = CreateItemData::NFT(CreateNftData{1650 collection_id,1640 collection_id,1651 1,1641 1,1652 too_big_const_data1642 too_big_const_data1653 ), "const_data exceeded data limit: 2.");1643 ), "const_data exceeded data limit.");1654 });1644 });1655}1645}165616461668 refungible_sponsor_transfer_timeout: 15, 1658 refungible_sponsor_transfer_timeout: 15, 1669 }));1659 }));167016601671 let collection_id = create_test_collection(&CollectionMode::NFT);1661 let collection_id = create_test_collection(&CollectionMode::NFT, 1);167216621673 let origin1 = Origin::signed(1);1663 let origin1 = Origin::signed(1);1674 let too_big_const_data = CreateItemData::NFT(CreateNftData{1664 let too_big_const_data = CreateItemData::NFT(CreateNftData{1681 collection_id,1671 collection_id,1682 1,1672 1,1683 too_big_const_data1673 too_big_const_data1684 ), "variable_data exceeded data limit: 2.");1674 ), "variable_data exceeded data limit.");1685 });1675 });1686}1676}168716771699 refungible_sponsor_transfer_timeout: 15, 1689 refungible_sponsor_transfer_timeout: 15, 1700 }));1690 }));170116911702 let collection_id = create_test_collection(&CollectionMode::NFT);1692 let collection_id = create_test_collection(&CollectionMode::NFT, 1);170316931704 let origin1 = Origin::signed(1);1694 let origin1 = Origin::signed(1);1705 let too_big_const_data = CreateItemData::NFT(CreateNftData{1695 let too_big_const_data = CreateItemData::NFT(CreateNftData{1712 collection_id,1702 collection_id,1713 1,1703 1,1714 too_big_const_data1704 too_big_const_data1715 ), "const_data exceeded data limit: 2.");1705 ), "const_data exceeded data limit.");1716 });1706 });1717}1707}171817081730 refungible_sponsor_transfer_timeout: 15, 1720 refungible_sponsor_transfer_timeout: 15, 1731 }));1721 }));173217221733 let collection_id = create_test_collection(&CollectionMode::NFT);1723 let collection_id = create_test_collection(&CollectionMode::NFT, 1);173417241735 let origin1 = Origin::signed(1);1725 let origin1 = Origin::signed(1);1736 let too_big_const_data = CreateItemData::NFT(CreateNftData{1726 let too_big_const_data = CreateItemData::NFT(CreateNftData{1743 collection_id,1733 collection_id,1744 1,1734 1,1745 too_big_const_data1735 too_big_const_data1746 ), "variable_data exceeded data limit: 2.");1736 ), "variable_data exceeded data limit.");1747 });1737 });1748}1738}1749// #endregion1739// #endregion1753 new_test_ext().execute_with(|| {1743 new_test_ext().execute_with(|| {1754 default_limits();1744 default_limits();175517451756 let collection_id = create_test_collection(&CollectionMode::NFT);1746 let collection_id = create_test_collection(&CollectionMode::NFT, 1);175717471758 let origin1 = Origin::signed(1);1748 let origin1 = Origin::signed(1);1759 assert_ok!(TemplateModule::set_const_on_chain_schema(origin1, collection_id, "test const on chain schema".to_vec()));1749 assert_ok!(TemplateModule::set_const_on_chain_schema(origin1, collection_id, b"test const on chain schema".to_vec()));176017501761 assert_eq!(TemplateModule::collection(collection_id).const_on_chain_schema, "test const on chain schema".to_vec());1751 assert_eq!(TemplateModule::collection(collection_id).const_on_chain_schema, b"test const on chain schema".to_vec());1762 assert_eq!(TemplateModule::collection(collection_id).variable_on_chain_schema, "".to_vec());1752 assert_eq!(TemplateModule::collection(collection_id).variable_on_chain_schema, b"".to_vec());1763 });1753 });1764}1754}176517551768 new_test_ext().execute_with(|| {1758 new_test_ext().execute_with(|| {1769 default_limits();1759 default_limits();1770 1760 1771 let collection_id = create_test_collection(&CollectionMode::NFT);1761 let collection_id = create_test_collection(&CollectionMode::NFT, 1);177217621773 let origin1 = Origin::signed(1);1763 let origin1 = Origin::signed(1);1774 assert_ok!(TemplateModule::set_variable_on_chain_schema(origin1, collection_id, "test variable on chain schema".to_vec()));1764 assert_ok!(TemplateModule::set_variable_on_chain_schema(origin1, collection_id, b"test variable on chain schema".to_vec()));177517651776 assert_eq!(TemplateModule::collection(collection_id).const_on_chain_schema, "".to_vec());1766 assert_eq!(TemplateModule::collection(collection_id).const_on_chain_schema, b"".to_vec());1777 assert_eq!(TemplateModule::collection(collection_id).variable_on_chain_schema, "test variable on chain schema".to_vec());1767 assert_eq!(TemplateModule::collection(collection_id).variable_on_chain_schema, b"test variable on chain schema".to_vec());1778 });1768 });1779}1769}