git.delta.rocks / unique-network / refs/commits / 9acc85c979ab

difftreelog

transfer fix

str-mv2020-08-05parent: #708aba4.patch.diff
in: master

4 files changed

modifiedCargo.lockdiffbeforeafterboth
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3085,6 +3085,7 @@
 dependencies = [
  "frame-support",
  "frame-system",
+ "log",
  "pallet-transaction-payment",
  "parity-scale-codec",
  "serde",
modifiedpallets/nft/Cargo.tomldiffbeforeafterboth
--- a/pallets/nft/Cargo.toml
+++ b/pallets/nft/Cargo.toml
@@ -36,6 +36,7 @@
 [dependencies]
 # third-party dependencies
 serde = { version = "1.0.102", features = ["derive"] }
+log = "0.4.8"
 
 [dependencies.sp-std]
 default-features = false
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -371,7 +371,7 @@
                     let item = NftItemType {
                         collection: collection_id,
                         owner: owner,
-                        data: properties,
+                        data: properties.clone(),
                     };
     
                     Self::add_nft_item(item)?;
@@ -380,17 +380,18 @@
                 CollectionMode::ReFungible(_, _) => {
                     let mut owner_list = Vec::new();
                     let value = (10 as u128).pow(target_collection.decimal_points);
-                    owner_list.push(Ownership {owner: owner, fraction: value});
+                    owner_list.push(Ownership {owner: owner.clone(), fraction: value});
 
                     let item = ReFungibleItemType {
                         collection: collection_id,
                         owner: owner_list,
-                        data: properties
+                        data: properties.clone()
                     };
     
                     Self::add_refungible_item(item)?;
                 },
-                _ => ()
+                _ => { ensure!(1 == 0,"just error"); }
+
             };
 
             // call event
@@ -595,11 +596,11 @@
         Self::add_token_index(item.collection, current_index, owner.clone())?;
 
         <ItemListIndex>::insert(item.collection, current_index);
-        <ReFungibleItemList<T>>::insert(item.collection, current_index, item);  
+        <ReFungibleItemList<T>>::insert(item.collection, current_index, itemcopy);  
         
         // Update balance
-        let new_balance = <Balance<T>>::get(itemcopy.collection, owner.clone()).checked_add(value).unwrap();
-        <Balance<T>>::insert(itemcopy.collection, owner.clone(), new_balance);
+       let new_balance = <Balance<T>>::get(item.collection, owner.clone()).checked_add(value).unwrap();
+       <Balance<T>>::insert(item.collection, owner.clone(), new_balance);
 
         Ok(())
     }
@@ -626,7 +627,7 @@
         let item = full_item.owner.iter().filter(|i| i.owner == owner).next().unwrap();
         let amount = item.fraction;
 
-        ensure!(amount < value.into(),"Item balance not enouth");
+        ensure!(amount >= value.into(),"Item balance not enouth");
 
         // update balance
         let balance_old_owner = <Balance<T>>::get(collection_id, item.owner.clone()).checked_sub(value).unwrap();
@@ -637,9 +638,10 @@
 
         let old_owner = item.owner.clone();
         let new_owner_has_account = full_item.owner.iter().any(|i| i.owner == new_owner);
+        let val64 = value.into();
 
         // transfer
-        if amount == value.into() && !new_owner_has_account
+        if amount == val64 && !new_owner_has_account
         {
             // change owner
             // new owner do not have account
@@ -653,17 +655,17 @@
         else
         {
             let mut new_full_item = full_item.clone();
-            new_full_item.owner.iter_mut().find(|i| i.owner == owner).unwrap().fraction -= amount;
+            new_full_item.owner.iter_mut().find(|i| i.owner == owner).unwrap().fraction -= val64;
 
             // separate amount
             if new_owner_has_account {
                 // new owner has account
-                new_full_item.owner.iter_mut().find(|i| i.owner == new_owner).unwrap().fraction += amount;
+                new_full_item.owner.iter_mut().find(|i| i.owner == new_owner).unwrap().fraction += val64;
             }
             else
             {
                 // new owner do not have account
-                new_full_item.owner.push(Ownership { owner: new_owner.clone(), fraction: amount});
+                new_full_item.owner.push(Ownership { owner: new_owner.clone(), fraction: val64});
                 Self::add_token_index(collection_id, item_id, new_owner.clone())?;
             }
 
modifiedpallets/nft/src/tests.rsdiffbeforeafterboth
before · pallets/nft/src/tests.rs
1// Tests to be written here2use crate::mock::*;3use frame_support::{assert_noop, assert_ok};45#[test]6fn create_collection_test() {7    new_test_ext().execute_with(|| {8        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();9        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();10        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1112        let size = 1024;13        let origin1 = Origin::signed(1);14        assert_ok!(TemplateModule::create_collection(15            origin1.clone(),16            col_name1.clone(),17            col_desc1.clone(),18            token_prefix1.clone(),19            size20        ));21        assert_eq!(TemplateModule::collection(1).owner, 1);22    });23}2425#[test]26fn change_collection_owner() {27    new_test_ext().execute_with(|| {28        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();29        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();30        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();3132        let size = 1024;33        let origin1 = Origin::signed(1);3435        assert_ok!(TemplateModule::create_collection(36            origin1.clone(),37            col_name1.clone(),38            col_desc1.clone(),39            token_prefix1.clone(),40            size41        ));42        assert_ok!(TemplateModule::change_collection_owner(43            origin1.clone(),44            1,45            246        ));47        assert_eq!(TemplateModule::collection(1).owner, 2);48    });49}5051#[test]52fn destroy_collection() {53    new_test_ext().execute_with(|| {54        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();55        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();56        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();5758        let size = 1024;59        let origin1 = Origin::signed(1);6061        assert_ok!(TemplateModule::create_collection(62            origin1.clone(),63            col_name1.clone(),64            col_desc1.clone(),65            token_prefix1.clone(),66            size67        ));68        assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));69    });70}7172#[test]73fn create_item() {74    new_test_ext().execute_with(|| {75        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();76        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();77        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();7879        let size = 1024;80        let origin1 = Origin::signed(1);81        let origin2 = Origin::signed(2);8283        assert_ok!(TemplateModule::create_collection(84            origin1.clone(),85            col_name1.clone(),86            col_desc1.clone(),87            token_prefix1.clone(),88            size89        ));90        assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));91        assert_ok!(TemplateModule::create_item(92            origin2.clone(),93            1,94            [1, 1, 1].to_vec()95        ));9697        // check balance (collection with id = 1, user id = 2)98        assert_eq!(TemplateModule::balance_count((1, 2)), 1);99    });100}101102#[test]103fn burn_item() {104    new_test_ext().execute_with(|| {105        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();106        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();107        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();108109        let size = 1024;110        let origin1 = Origin::signed(1);111        let origin2 = Origin::signed(2);112113        assert_ok!(TemplateModule::create_collection(114            origin1.clone(),115            col_name1.clone(),116            col_desc1.clone(),117            token_prefix1.clone(),118            size119        ));120        assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));121        assert_ok!(TemplateModule::create_item(122            origin2.clone(),123            1,124            [1, 1, 1].to_vec()125        ));126127        // check balance (collection with id = 1, user id = 2)128        assert_eq!(TemplateModule::balance_count((1, 2)), 1);129130        // burn item131        assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1));132        assert_noop!(133            TemplateModule::burn_item(origin1.clone(), 1, 1),134            "Item does not exists"135        );136137        assert_eq!(TemplateModule::balance_count((1, 1)), 0);138    });139}140141#[test]142fn add_collection_admin() {143    new_test_ext().execute_with(|| {144        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();145        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();146        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();147148        let size = 1024;149        let origin1 = Origin::signed(1);150        let origin2 = Origin::signed(2);151        let origin3 = Origin::signed(3);152153        assert_ok!(TemplateModule::create_collection(154            origin1.clone(),155            col_name1.clone(),156            col_desc1.clone(),157            token_prefix1.clone(),158            size159        ));160        assert_ok!(TemplateModule::create_collection(161            origin2.clone(),162            col_name1.clone(),163            col_desc1.clone(),164            token_prefix1.clone(),165            size166        ));167        assert_ok!(TemplateModule::create_collection(168            origin3.clone(),169            col_name1.clone(),170            col_desc1.clone(),171            token_prefix1.clone(),172            size173        ));174175        assert_eq!(TemplateModule::collection(1).owner, 1);176        assert_eq!(TemplateModule::collection(2).owner, 2);177        assert_eq!(TemplateModule::collection(3).owner, 3);178179        // collection admin180        assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));181        assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));182183        assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);184        assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);185    });186}187188#[test]189fn remove_collection_admin() {190    new_test_ext().execute_with(|| {191        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();192        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();193        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();194195        let size = 1024;196        let origin1 = Origin::signed(1);197        let origin2 = Origin::signed(2);198        let origin3 = Origin::signed(3);199200        assert_ok!(TemplateModule::create_collection(201            origin1.clone(),202            col_name1.clone(),203            col_desc1.clone(),204            token_prefix1.clone(),205            size206        ));207        assert_ok!(TemplateModule::create_collection(208            origin2.clone(),209            col_name1.clone(),210            col_desc1.clone(),211            token_prefix1.clone(),212            size213        ));214        assert_ok!(TemplateModule::create_collection(215            origin3.clone(),216            col_name1.clone(),217            col_desc1.clone(),218            token_prefix1.clone(),219            size220        ));221222        assert_eq!(TemplateModule::collection(1).owner, 1);223        assert_eq!(TemplateModule::collection(2).owner, 2);224        assert_eq!(TemplateModule::collection(3).owner, 3);225226        // collection admin227        assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));228        assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));229230        assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);231        assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);232233        // remove admin234        assert_ok!(TemplateModule::remove_collection_admin(235            origin2.clone(),236            1,237            3238        ));239        assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false);240    });241}242243#[test]244fn balance_of() {245    new_test_ext().execute_with(|| {246        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();247        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();248        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();249250        let size = 1024;251        let origin1 = Origin::signed(1);252        let origin2 = Origin::signed(2);253        let origin3 = Origin::signed(3);254255        assert_ok!(TemplateModule::create_collection(256            origin1.clone(),257            col_name1.clone(),258            col_desc1.clone(),259            token_prefix1.clone(),260            size261        ));262        assert_ok!(TemplateModule::create_collection(263            origin2.clone(),264            col_name1.clone(),265            col_desc1.clone(),266            token_prefix1.clone(),267            size268        ));269        assert_ok!(TemplateModule::create_collection(270            origin3.clone(),271            col_name1.clone(),272            col_desc1.clone(),273            token_prefix1.clone(),274            size275        ));276277        assert_eq!(TemplateModule::collection(1).owner, 1);278        assert_eq!(TemplateModule::collection(2).owner, 2);279        assert_eq!(TemplateModule::collection(3).owner, 3);280281        // check balance before282        assert_eq!(TemplateModule::balance_count((1, 1)), 0);283284        // create item285        assert_ok!(TemplateModule::create_item(286            origin1.clone(),287            1,288            [1, 1, 1].to_vec()289        ));290291        // check balance (collection with id = 1, user id = 2)292        assert_eq!(TemplateModule::balance_count((1, 1)), 1);293        assert_eq!(TemplateModule::item_id((1, 1)).owner, 1);294    });295}296297#[test]298fn transfer() {299    new_test_ext().execute_with(|| {300        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();301        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();302        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();303304        let size = 1024;305        let origin1 = Origin::signed(1);306        let origin2 = Origin::signed(2);307        let origin3 = Origin::signed(3);308309        assert_ok!(TemplateModule::create_collection(310            origin1.clone(),311            col_name1.clone(),312            col_desc1.clone(),313            token_prefix1.clone(),314            size315        ));316        assert_ok!(TemplateModule::create_collection(317            origin2.clone(),318            col_name1.clone(),319            col_desc1.clone(),320            token_prefix1.clone(),321            size322        ));323        assert_ok!(TemplateModule::create_collection(324            origin3.clone(),325            col_name1.clone(),326            col_desc1.clone(),327            token_prefix1.clone(),328            size329        ));330331        assert_eq!(TemplateModule::collection(1).owner, 1);332        assert_eq!(TemplateModule::collection(2).owner, 2);333        assert_eq!(TemplateModule::collection(3).owner, 3);334335        // create item336        assert_ok!(TemplateModule::create_item(337            origin1.clone(),338            1,339            [1, 1, 1].to_vec()340        ));341342        // transfer343        assert_ok!(TemplateModule::transfer(origin1.clone(), 1, 1, 2));344        assert_eq!(TemplateModule::item_id((1, 1)).owner, 2);345346        // balance_of check347        assert_eq!(TemplateModule::balance_count((1, 1)), 0);348        assert_eq!(TemplateModule::balance_count((1, 2)), 1);349    });350}351352#[test]353fn approve() {354    new_test_ext().execute_with(|| {355        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();356        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();357        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();358359        let size = 1024;360        let origin1 = Origin::signed(1);361        let origin2 = Origin::signed(2);362        let origin3 = Origin::signed(3);363364        assert_ok!(TemplateModule::create_collection(365            origin1.clone(),366            col_name1.clone(),367            col_desc1.clone(),368            token_prefix1.clone(),369            size370        ));371        assert_ok!(TemplateModule::create_collection(372            origin2.clone(),373            col_name1.clone(),374            col_desc1.clone(),375            token_prefix1.clone(),376            size377        ));378        assert_ok!(TemplateModule::create_collection(379            origin3.clone(),380            col_name1.clone(),381            col_desc1.clone(),382            token_prefix1.clone(),383            size384        ));385386        assert_eq!(TemplateModule::collection(1).owner, 1);387        assert_eq!(TemplateModule::collection(2).owner, 2);388        assert_eq!(TemplateModule::collection(3).owner, 3);389390        // create item391        assert_ok!(TemplateModule::create_item(392            origin1.clone(),393            1,394            [1, 1, 1].to_vec()395        ));396397        // approve398        assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));399        assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);400    });401}402403#[test]404fn get_approved() {405    new_test_ext().execute_with(|| {406        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();407        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();408        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();409410        let size = 1024;411        let origin1 = Origin::signed(1);412        let origin2 = Origin::signed(2);413        let origin3 = Origin::signed(3);414415        assert_ok!(TemplateModule::create_collection(416            origin1.clone(),417            col_name1.clone(),418            col_desc1.clone(),419            token_prefix1.clone(),420            size421        ));422        assert_ok!(TemplateModule::create_collection(423            origin2.clone(),424            col_name1.clone(),425            col_desc1.clone(),426            token_prefix1.clone(),427            size428        ));429        assert_ok!(TemplateModule::create_collection(430            origin3.clone(),431            col_name1.clone(),432            col_desc1.clone(),433            token_prefix1.clone(),434            size435        ));436437        assert_eq!(TemplateModule::collection(1).owner, 1);438        assert_eq!(TemplateModule::collection(2).owner, 2);439        assert_eq!(TemplateModule::collection(3).owner, 3);440441        // create item442        assert_ok!(TemplateModule::create_item(443            origin1.clone(),444            1,445            [1, 1, 1].to_vec()446        ));447448        // approve449        assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));450        assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);451    });452}453454#[test]455fn transfer_from() {456    new_test_ext().execute_with(|| {457        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();458        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();459        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();460461        let size = 1024;462        let origin1 = Origin::signed(1);463        let origin2 = Origin::signed(2);464        let origin3 = Origin::signed(3);465466        assert_ok!(TemplateModule::create_collection(467            origin1.clone(),468            col_name1.clone(),469            col_desc1.clone(),470            token_prefix1.clone(),471            size472        ));473        assert_ok!(TemplateModule::create_collection(474            origin2.clone(),475            col_name1.clone(),476            col_desc1.clone(),477            token_prefix1.clone(),478            size479        ));480        assert_ok!(TemplateModule::create_collection(481            origin3.clone(),482            col_name1.clone(),483            col_desc1.clone(),484            token_prefix1.clone(),485            size486        ));487488        assert_eq!(TemplateModule::collection(1).owner, 1);489        assert_eq!(TemplateModule::collection(2).owner, 2);490        assert_eq!(TemplateModule::collection(3).owner, 3);491492        // create item493        assert_ok!(TemplateModule::create_item(494            origin1.clone(),495            1,496            [1, 1, 1].to_vec()497        ));498499        // approve500        assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));501        assert_ok!(TemplateModule::transfer_from(origin1.clone(), 1, 1, 2));502    });503}504505#[test]506fn index_list() {507    new_test_ext().execute_with(|| {508        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();509        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();510        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();511512        let size = 1024;513        let origin1 = Origin::signed(1);514        let origin2 = Origin::signed(2);515        let origin3 = Origin::signed(3);516517        assert_ok!(TemplateModule::create_collection(518            origin1.clone(),519            col_name1.clone(),520            col_desc1.clone(),521            token_prefix1.clone(),522            size523        ));524        assert_ok!(TemplateModule::create_collection(525            origin2.clone(),526            col_name1.clone(),527            col_desc1.clone(),528            token_prefix1.clone(),529            size530        ));531        assert_ok!(TemplateModule::create_collection(532            origin3.clone(),533            col_name1.clone(),534            col_desc1.clone(),535            token_prefix1.clone(),536            size537        ));538539        assert_eq!(TemplateModule::collection(1).owner, 1);540        assert_eq!(TemplateModule::collection(2).owner, 2);541        assert_eq!(TemplateModule::collection(3).owner, 3);542        // create items543        assert_ok!(TemplateModule::create_item(544            origin1.clone(),545            1,546            [1, 1, 1].to_vec()547        ));548        assert_ok!(TemplateModule::create_item(549            origin1.clone(),550            1,551            [1, 1, 2].to_vec()552        ));553        assert_ok!(TemplateModule::create_item(554            origin1.clone(),555            1,556            [1, 2, 3].to_vec()557        ));558        assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 3);559        // burn one560        assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2));561        assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2);562        // burn another one563        assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3));564        assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1);565    });566}
after · pallets/nft/src/tests.rs
1// Tests to be written here2use crate::mock::*;3use crate::{CollectionMode, Ownership};4use frame_support::{assert_noop, assert_ok};56#[test]7fn create_nft_item() {8    new_test_ext().execute_with(|| {9        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();10        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();11        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();12        let mode: CollectionMode = CollectionMode::NFT(2000);1314        let origin1 = Origin::signed(1);15        assert_ok!(TemplateModule::create_collection(16            origin1.clone(),17            col_name1.clone(),18            col_desc1.clone(),19            token_prefix1.clone(),20            mode21        ));22        assert_eq!(TemplateModule::collection(1).owner, 1);232425        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));26        assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec());27    });28}2930#[test]31fn create_refungible_item() {32    new_test_ext().execute_with(|| {33        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();34        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();35        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();36        let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);3738        let origin1 = Origin::signed(1);39        assert_ok!(TemplateModule::create_collection(40            origin1.clone(),41            col_name1.clone(),42            col_desc1.clone(),43            token_prefix1.clone(),44            mode45        ));46        assert_eq!(TemplateModule::collection(1).owner, 1);474849        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));50        assert_eq!(TemplateModule::refungible_item_id(1,1).data, [1,2,3].to_vec());51        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 1, fraction: 1000 });52    });53}5455#[test]56fn transfer_refungible_item() {57    new_test_ext().execute_with(|| {58        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();59        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();60        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();61        let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);6263        let origin1 = Origin::signed(1);64        let origin2 = Origin::signed(2);65        assert_ok!(TemplateModule::create_collection(66            origin1.clone(),67            col_name1.clone(),68            col_desc1.clone(),69            token_prefix1.clone(),70            mode71        ));72        assert_eq!(TemplateModule::collection(1).owner, 1);7374        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));75        assert_eq!(TemplateModule::refungible_item_id(1,1).data, [1,2,3].to_vec());76        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 1, fraction: 1000 });77        assert_eq!(TemplateModule::balance_count(1,1), 1000);78        assert_eq!(TemplateModule::address_tokens(1,1), [1]);7980        // change owner scenario81        assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));82        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 2, fraction: 1000 });83        assert_eq!(TemplateModule::balance_count(1,1), 0);84        assert_eq!(TemplateModule::balance_count(1,2), 1000);85        assert_eq!(TemplateModule::address_tokens(1,1), []);86        assert_eq!(TemplateModule::address_tokens(1,2), [1]);8788        // split item scenario89        assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 500));90        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 2, fraction: 500 });91        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[1], Ownership { owner: 3, fraction: 500 });92        assert_eq!(TemplateModule::balance_count(1,2), 500);93        assert_eq!(TemplateModule::balance_count(1,3), 500);94        assert_eq!(TemplateModule::address_tokens(1,2), [1]);95        assert_eq!(TemplateModule::address_tokens(1,3), [1]);9697        // split item and new owner has account scenario98        assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 200));99        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[0], Ownership { owner: 2, fraction: 300 });100        assert_eq!(TemplateModule::refungible_item_id(1,1).owner[1], Ownership { owner: 3, fraction: 700 });101        assert_eq!(TemplateModule::balance_count(1,2), 300);102        assert_eq!(TemplateModule::balance_count(1,3), 700);103        assert_eq!(TemplateModule::address_tokens(1,2), [1]);104        assert_eq!(TemplateModule::address_tokens(1,3), [1]);105    });106}107108109#[test]110fn transfer_nft_item() {111    new_test_ext().execute_with(|| {112        let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();113        let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();114        let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();115        let mode: CollectionMode = CollectionMode::NFT(2000);116117        let origin1 = Origin::signed(1);118        assert_ok!(TemplateModule::create_collection(119            origin1.clone(),120            col_name1.clone(),121            col_desc1.clone(),122            token_prefix1.clone(),123            mode124        ));125        assert_eq!(TemplateModule::collection(1).owner, 1);126127128        assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));129        assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec());130        assert_eq!(TemplateModule::balance_count(1,1), 1);131        assert_eq!(TemplateModule::address_tokens(1,1), [1]);132133        // default scenario134        assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));135        assert_eq!(TemplateModule::nft_item_id(1,1).owner, 2);136        assert_eq!(TemplateModule::balance_count(1,1), 0);137        assert_eq!(TemplateModule::balance_count(1,2), 1);138        assert_eq!(TemplateModule::address_tokens(1,1), []);139        assert_eq!(TemplateModule::address_tokens(1,2), [1]); 140    });141}142143144// #[test]145// fn create_collection_test() {146//     new_test_ext().execute_with(|| {147//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();148//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();149//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();150151//         let size = 1024;152//         let origin1 = Origin::signed(1);153//         assert_ok!(TemplateModule::create_collection(154//             origin1.clone(),155//             col_name1.clone(),156//             col_desc1.clone(),157//             token_prefix1.clone(),158//             size159//         ));160//         assert_eq!(TemplateModule::collection(1).owner, 1);161//     });162// }163164// #[test]165// fn change_collection_owner() {166//     new_test_ext().execute_with(|| {167//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();168//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();169//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();170171//         let size = 1024;172//         let origin1 = Origin::signed(1);173174//         assert_ok!(TemplateModule::create_collection(175//             origin1.clone(),176//             col_name1.clone(),177//             col_desc1.clone(),178//             token_prefix1.clone(),179//             size180//         ));181//         assert_ok!(TemplateModule::change_collection_owner(182//             origin1.clone(),183//             1,184//             2185//         ));186//         assert_eq!(TemplateModule::collection(1).owner, 2);187//     });188// }189190// #[test]191// fn destroy_collection() {192//     new_test_ext().execute_with(|| {193//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();194//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();195//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();196197//         let size = 1024;198//         let origin1 = Origin::signed(1);199200//         assert_ok!(TemplateModule::create_collection(201//             origin1.clone(),202//             col_name1.clone(),203//             col_desc1.clone(),204//             token_prefix1.clone(),205//             size206//         ));207//         assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));208//     });209// }210211// #[test]212// fn create_item() {213//     new_test_ext().execute_with(|| {214//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();215//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();216//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();217218//         let size = 1024;219//         let origin1 = Origin::signed(1);220//         let origin2 = Origin::signed(2);221222//         assert_ok!(TemplateModule::create_collection(223//             origin1.clone(),224//             col_name1.clone(),225//             col_desc1.clone(),226//             token_prefix1.clone(),227//             size228//         ));229//         assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));230//         assert_ok!(TemplateModule::create_item(231//             origin2.clone(),232//             1,233//             [1, 1, 1].to_vec()234//         ));235236//         // check balance (collection with id = 1, user id = 2)237//         assert_eq!(TemplateModule::balance_count((1, 2)), 1);238//     });239// }240241// #[test]242// fn burn_item() {243//     new_test_ext().execute_with(|| {244//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();245//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();246//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();247248//         let size = 1024;249//         let origin1 = Origin::signed(1);250//         let origin2 = Origin::signed(2);251252//         assert_ok!(TemplateModule::create_collection(253//             origin1.clone(),254//             col_name1.clone(),255//             col_desc1.clone(),256//             token_prefix1.clone(),257//             size258//         ));259//         assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));260//         assert_ok!(TemplateModule::create_item(261//             origin2.clone(),262//             1,263//             [1, 1, 1].to_vec()264//         ));265266//         // check balance (collection with id = 1, user id = 2)267//         assert_eq!(TemplateModule::balance_count((1, 2)), 1);268269//         // burn item270//         assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1));271//         assert_noop!(272//             TemplateModule::burn_item(origin1.clone(), 1, 1),273//             "Item does not exists"274//         );275276//         assert_eq!(TemplateModule::balance_count((1, 1)), 0);277//     });278// }279280// #[test]281// fn add_collection_admin() {282//     new_test_ext().execute_with(|| {283//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();284//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();285//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();286287//         let size = 1024;288//         let origin1 = Origin::signed(1);289//         let origin2 = Origin::signed(2);290//         let origin3 = Origin::signed(3);291292//         assert_ok!(TemplateModule::create_collection(293//             origin1.clone(),294//             col_name1.clone(),295//             col_desc1.clone(),296//             token_prefix1.clone(),297//             size298//         ));299//         assert_ok!(TemplateModule::create_collection(300//             origin2.clone(),301//             col_name1.clone(),302//             col_desc1.clone(),303//             token_prefix1.clone(),304//             size305//         ));306//         assert_ok!(TemplateModule::create_collection(307//             origin3.clone(),308//             col_name1.clone(),309//             col_desc1.clone(),310//             token_prefix1.clone(),311//             size312//         ));313314//         assert_eq!(TemplateModule::collection(1).owner, 1);315//         assert_eq!(TemplateModule::collection(2).owner, 2);316//         assert_eq!(TemplateModule::collection(3).owner, 3);317318//         // collection admin319//         assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));320//         assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));321322//         assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);323//         assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);324//     });325// }326327// #[test]328// fn remove_collection_admin() {329//     new_test_ext().execute_with(|| {330//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();331//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();332//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();333334//         let size = 1024;335//         let origin1 = Origin::signed(1);336//         let origin2 = Origin::signed(2);337//         let origin3 = Origin::signed(3);338339//         assert_ok!(TemplateModule::create_collection(340//             origin1.clone(),341//             col_name1.clone(),342//             col_desc1.clone(),343//             token_prefix1.clone(),344//             size345//         ));346//         assert_ok!(TemplateModule::create_collection(347//             origin2.clone(),348//             col_name1.clone(),349//             col_desc1.clone(),350//             token_prefix1.clone(),351//             size352//         ));353//         assert_ok!(TemplateModule::create_collection(354//             origin3.clone(),355//             col_name1.clone(),356//             col_desc1.clone(),357//             token_prefix1.clone(),358//             size359//         ));360361//         assert_eq!(TemplateModule::collection(1).owner, 1);362//         assert_eq!(TemplateModule::collection(2).owner, 2);363//         assert_eq!(TemplateModule::collection(3).owner, 3);364365//         // collection admin366//         assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));367//         assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));368369//         assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);370//         assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);371372//         // remove admin373//         assert_ok!(TemplateModule::remove_collection_admin(374//             origin2.clone(),375//             1,376//             3377//         ));378//         assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false);379//     });380// }381382// #[test]383// fn balance_of() {384//     new_test_ext().execute_with(|| {385//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();386//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();387//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();388389//         let size = 1024;390//         let origin1 = Origin::signed(1);391//         let origin2 = Origin::signed(2);392//         let origin3 = Origin::signed(3);393394//         assert_ok!(TemplateModule::create_collection(395//             origin1.clone(),396//             col_name1.clone(),397//             col_desc1.clone(),398//             token_prefix1.clone(),399//             size400//         ));401//         assert_ok!(TemplateModule::create_collection(402//             origin2.clone(),403//             col_name1.clone(),404//             col_desc1.clone(),405//             token_prefix1.clone(),406//             size407//         ));408//         assert_ok!(TemplateModule::create_collection(409//             origin3.clone(),410//             col_name1.clone(),411//             col_desc1.clone(),412//             token_prefix1.clone(),413//             size414//         ));415416//         assert_eq!(TemplateModule::collection(1).owner, 1);417//         assert_eq!(TemplateModule::collection(2).owner, 2);418//         assert_eq!(TemplateModule::collection(3).owner, 3);419420//         // check balance before421//         assert_eq!(TemplateModule::balance_count((1, 1)), 0);422423//         // create item424//         assert_ok!(TemplateModule::create_item(425//             origin1.clone(),426//             1,427//             [1, 1, 1].to_vec()428//         ));429430//         // check balance (collection with id = 1, user id = 2)431//         assert_eq!(TemplateModule::balance_count((1, 1)), 1);432//         assert_eq!(TemplateModule::item_id((1, 1)).owner, 1);433//     });434// }435436// #[test]437// fn transfer() {438//     new_test_ext().execute_with(|| {439//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();440//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();441//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();442443//         let size = 1024;444//         let origin1 = Origin::signed(1);445//         let origin2 = Origin::signed(2);446//         let origin3 = Origin::signed(3);447448//         assert_ok!(TemplateModule::create_collection(449//             origin1.clone(),450//             col_name1.clone(),451//             col_desc1.clone(),452//             token_prefix1.clone(),453//             size454//         ));455//         assert_ok!(TemplateModule::create_collection(456//             origin2.clone(),457//             col_name1.clone(),458//             col_desc1.clone(),459//             token_prefix1.clone(),460//             size461//         ));462//         assert_ok!(TemplateModule::create_collection(463//             origin3.clone(),464//             col_name1.clone(),465//             col_desc1.clone(),466//             token_prefix1.clone(),467//             size468//         ));469470//         assert_eq!(TemplateModule::collection(1).owner, 1);471//         assert_eq!(TemplateModule::collection(2).owner, 2);472//         assert_eq!(TemplateModule::collection(3).owner, 3);473474//         // create item475//         assert_ok!(TemplateModule::create_item(476//             origin1.clone(),477//             1,478//             [1, 1, 1].to_vec()479//         ));480481//         // transfer482//         assert_ok!(TemplateModule::transfer(origin1.clone(), 1, 1, 2));483//         assert_eq!(TemplateModule::item_id((1, 1)).owner, 2);484485//         // balance_of check486//         assert_eq!(TemplateModule::balance_count((1, 1)), 0);487//         assert_eq!(TemplateModule::balance_count((1, 2)), 1);488//     });489// }490491// #[test]492// fn approve() {493//     new_test_ext().execute_with(|| {494//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();495//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();496//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();497498//         let size = 1024;499//         let origin1 = Origin::signed(1);500//         let origin2 = Origin::signed(2);501//         let origin3 = Origin::signed(3);502503//         assert_ok!(TemplateModule::create_collection(504//             origin1.clone(),505//             col_name1.clone(),506//             col_desc1.clone(),507//             token_prefix1.clone(),508//             size509//         ));510//         assert_ok!(TemplateModule::create_collection(511//             origin2.clone(),512//             col_name1.clone(),513//             col_desc1.clone(),514//             token_prefix1.clone(),515//             size516//         ));517//         assert_ok!(TemplateModule::create_collection(518//             origin3.clone(),519//             col_name1.clone(),520//             col_desc1.clone(),521//             token_prefix1.clone(),522//             size523//         ));524525//         assert_eq!(TemplateModule::collection(1).owner, 1);526//         assert_eq!(TemplateModule::collection(2).owner, 2);527//         assert_eq!(TemplateModule::collection(3).owner, 3);528529//         // create item530//         assert_ok!(TemplateModule::create_item(531//             origin1.clone(),532//             1,533//             [1, 1, 1].to_vec()534//         ));535536//         // approve537//         assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));538//         assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);539//     });540// }541542// #[test]543// fn get_approved() {544//     new_test_ext().execute_with(|| {545//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();546//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();547//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();548549//         let size = 1024;550//         let origin1 = Origin::signed(1);551//         let origin2 = Origin::signed(2);552//         let origin3 = Origin::signed(3);553554//         assert_ok!(TemplateModule::create_collection(555//             origin1.clone(),556//             col_name1.clone(),557//             col_desc1.clone(),558//             token_prefix1.clone(),559//             size560//         ));561//         assert_ok!(TemplateModule::create_collection(562//             origin2.clone(),563//             col_name1.clone(),564//             col_desc1.clone(),565//             token_prefix1.clone(),566//             size567//         ));568//         assert_ok!(TemplateModule::create_collection(569//             origin3.clone(),570//             col_name1.clone(),571//             col_desc1.clone(),572//             token_prefix1.clone(),573//             size574//         ));575576//         assert_eq!(TemplateModule::collection(1).owner, 1);577//         assert_eq!(TemplateModule::collection(2).owner, 2);578//         assert_eq!(TemplateModule::collection(3).owner, 3);579580//         // create item581//         assert_ok!(TemplateModule::create_item(582//             origin1.clone(),583//             1,584//             [1, 1, 1].to_vec()585//         ));586587//         // approve588//         assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));589//         assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);590//     });591// }592593// #[test]594// fn transfer_from() {595//     new_test_ext().execute_with(|| {596//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();597//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();598//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();599600//         let size = 1024;601//         let origin1 = Origin::signed(1);602//         let origin2 = Origin::signed(2);603//         let origin3 = Origin::signed(3);604605//         assert_ok!(TemplateModule::create_collection(606//             origin1.clone(),607//             col_name1.clone(),608//             col_desc1.clone(),609//             token_prefix1.clone(),610//             size611//         ));612//         assert_ok!(TemplateModule::create_collection(613//             origin2.clone(),614//             col_name1.clone(),615//             col_desc1.clone(),616//             token_prefix1.clone(),617//             size618//         ));619//         assert_ok!(TemplateModule::create_collection(620//             origin3.clone(),621//             col_name1.clone(),622//             col_desc1.clone(),623//             token_prefix1.clone(),624//             size625//         ));626627//         assert_eq!(TemplateModule::collection(1).owner, 1);628//         assert_eq!(TemplateModule::collection(2).owner, 2);629//         assert_eq!(TemplateModule::collection(3).owner, 3);630631//         // create item632//         assert_ok!(TemplateModule::create_item(633//             origin1.clone(),634//             1,635//             [1, 1, 1].to_vec()636//         ));637638//         // approve639//         assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));640//         assert_ok!(TemplateModule::transfer_from(origin1.clone(), 1, 1, 2));641//     });642// }643644// #[test]645// fn index_list() {646//     new_test_ext().execute_with(|| {647//         let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();648//         let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();649//         let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();650651//         let size = 1024;652//         let origin1 = Origin::signed(1);653//         let origin2 = Origin::signed(2);654//         let origin3 = Origin::signed(3);655656//         assert_ok!(TemplateModule::create_collection(657//             origin1.clone(),658//             col_name1.clone(),659//             col_desc1.clone(),660//             token_prefix1.clone(),661//             size662//         ));663//         assert_ok!(TemplateModule::create_collection(664//             origin2.clone(),665//             col_name1.clone(),666//             col_desc1.clone(),667//             token_prefix1.clone(),668//             size669//         ));670//         assert_ok!(TemplateModule::create_collection(671//             origin3.clone(),672//             col_name1.clone(),673//             col_desc1.clone(),674//             token_prefix1.clone(),675//             size676//         ));677678//         assert_eq!(TemplateModule::collection(1).owner, 1);679//         assert_eq!(TemplateModule::collection(2).owner, 2);680//         assert_eq!(TemplateModule::collection(3).owner, 3);681//         // create items682//         assert_ok!(TemplateModule::create_item(683//             origin1.clone(),684//             1,685//             [1, 1, 1].to_vec()686//         ));687//         assert_ok!(TemplateModule::create_item(688//             origin1.clone(),689//             1,690//             [1, 1, 2].to_vec()691//         ));692//         assert_ok!(TemplateModule::create_item(693//             origin1.clone(),694//             1,695//             [1, 2, 3].to_vec()696//         ));697//         assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 3);698//         // burn one699//         assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2));700//         assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2);701//         // burn another one702//         assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3));703//         assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1);704//     });705// }