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
3085dependencies = [3085dependencies = [
3086 "frame-support",3086 "frame-support",
3087 "frame-system",3087 "frame-system",
3088 "log",
3088 "pallet-transaction-payment",3089 "pallet-transaction-payment",
3089 "parity-scale-codec",3090 "parity-scale-codec",
3090 "serde",3091 "serde",
modifiedpallets/nft/Cargo.tomldiffbeforeafterboth
36[dependencies]36[dependencies]
37# third-party dependencies37# third-party dependencies
38serde = { version = "1.0.102", features = ["derive"] }38serde = { version = "1.0.102", features = ["derive"] }
39log = "0.4.8"
3940
40[dependencies.sp-std]41[dependencies.sp-std]
41default-features = false42default-features = false
modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
371 let item = NftItemType {371 let item = NftItemType {
372 collection: collection_id,372 collection: collection_id,
373 owner: owner,373 owner: owner,
374 data: properties,374 data: properties.clone(),
375 };375 };
376 376
377 Self::add_nft_item(item)?;377 Self::add_nft_item(item)?;
380 CollectionMode::ReFungible(_, _) => {380 CollectionMode::ReFungible(_, _) => {
381 let mut owner_list = Vec::new();381 let mut owner_list = Vec::new();
382 let value = (10 as u128).pow(target_collection.decimal_points);382 let value = (10 as u128).pow(target_collection.decimal_points);
383 owner_list.push(Ownership {owner: owner, fraction: value});383 owner_list.push(Ownership {owner: owner.clone(), fraction: value});
384384
385 let item = ReFungibleItemType {385 let item = ReFungibleItemType {
386 collection: collection_id,386 collection: collection_id,
387 owner: owner_list,387 owner: owner_list,
388 data: properties388 data: properties.clone()
389 };389 };
390 390
391 Self::add_refungible_item(item)?;391 Self::add_refungible_item(item)?;
392 },392 },
393 _ => ()393 _ => { ensure!(1 == 0,"just error"); }
394
394 };395 };
395396
595 Self::add_token_index(item.collection, current_index, owner.clone())?;596 Self::add_token_index(item.collection, current_index, owner.clone())?;
596597
597 <ItemListIndex>::insert(item.collection, current_index);598 <ItemListIndex>::insert(item.collection, current_index);
598 <ReFungibleItemList<T>>::insert(item.collection, current_index, item); 599 <ReFungibleItemList<T>>::insert(item.collection, current_index, itemcopy);
599 600
600 // Update balance601 // Update balance
601 let new_balance = <Balance<T>>::get(itemcopy.collection, owner.clone()).checked_add(value).unwrap();602 let new_balance = <Balance<T>>::get(item.collection, owner.clone()).checked_add(value).unwrap();
602 <Balance<T>>::insert(itemcopy.collection, owner.clone(), new_balance);603 <Balance<T>>::insert(item.collection, owner.clone(), new_balance);
603604
604 Ok(())605 Ok(())
605 }606 }
626 let item = full_item.owner.iter().filter(|i| i.owner == owner).next().unwrap();627 let item = full_item.owner.iter().filter(|i| i.owner == owner).next().unwrap();
627 let amount = item.fraction;628 let amount = item.fraction;
628629
629 ensure!(amount < value.into(),"Item balance not enouth");630 ensure!(amount >= value.into(),"Item balance not enouth");
630631
631 // update balance632 // update balance
632 let balance_old_owner = <Balance<T>>::get(collection_id, item.owner.clone()).checked_sub(value).unwrap();633 let balance_old_owner = <Balance<T>>::get(collection_id, item.owner.clone()).checked_sub(value).unwrap();
638 let old_owner = item.owner.clone();639 let old_owner = item.owner.clone();
639 let new_owner_has_account = full_item.owner.iter().any(|i| i.owner == new_owner);640 let new_owner_has_account = full_item.owner.iter().any(|i| i.owner == new_owner);
640
641 // transfer
642 if amount == value.into() && !new_owner_has_account641 let val64 = value.into();
642
643 // transfer
644 if amount == val64 && !new_owner_has_account
643 {645 {
644 // change owner646 // change owner
645 // new owner do not have account647 // new owner do not have account
653 else655 else
654 {656 {
655 let mut new_full_item = full_item.clone();657 let mut new_full_item = full_item.clone();
656 new_full_item.owner.iter_mut().find(|i| i.owner == owner).unwrap().fraction -= amount;658 new_full_item.owner.iter_mut().find(|i| i.owner == owner).unwrap().fraction -= val64;
657659
658 // separate amount660 // separate amount
659 if new_owner_has_account {661 if new_owner_has_account {
660 // new owner has account662 // new owner has account
661 new_full_item.owner.iter_mut().find(|i| i.owner == new_owner).unwrap().fraction += amount;663 new_full_item.owner.iter_mut().find(|i| i.owner == new_owner).unwrap().fraction += val64;
662 }664 }
663 else665 else
664 {666 {
665 // new owner do not have account667 // new owner do not have account
666 new_full_item.owner.push(Ownership { owner: new_owner.clone(), fraction: amount});668 new_full_item.owner.push(Ownership { owner: new_owner.clone(), fraction: val64});
667 Self::add_token_index(collection_id, item_id, new_owner.clone())?;669 Self::add_token_index(collection_id, item_id, new_owner.clone())?;
668 }670 }
669671
modifiedpallets/nft/src/tests.rsdiffbeforeafterboth
1// Tests to be written here1// Tests to be written here
2use crate::mock::*;2use crate::mock::*;
3use crate::{CollectionMode, Ownership};
3use frame_support::{assert_noop, assert_ok};4use frame_support::{assert_noop, assert_ok};
45
5#[test]6#[test]
6fn create_collection_test() {7fn create_nft_item() {
7 new_test_ext().execute_with(|| {8 new_test_ext().execute_with(|| {
8 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();9 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 col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
10 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();11 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
12 let mode: CollectionMode = CollectionMode::NFT(2000);
1113
12 let size = 1024;
13 let origin1 = Origin::signed(1);14 let origin1 = Origin::signed(1);
14 assert_ok!(TemplateModule::create_collection(15 assert_ok!(TemplateModule::create_collection(
15 origin1.clone(),16 origin1.clone(),
16 col_name1.clone(),17 col_name1.clone(),
17 col_desc1.clone(),18 col_desc1.clone(),
18 token_prefix1.clone(),19 token_prefix1.clone(),
19 size20 mode
20 ));21 ));
21 assert_eq!(TemplateModule::collection(1).owner, 1);22 assert_eq!(TemplateModule::collection(1).owner, 1);
22 });
23}
2423
25#[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();
3124
32 let size = 1024;25 assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));
33 let origin1 = Origin::signed(1);
34
35 assert_ok!(TemplateModule::create_collection(
36 origin1.clone(),
37 col_name1.clone(),
38 col_desc1.clone(),
39 token_prefix1.clone(),
40 size
41 ));
42 assert_ok!(TemplateModule::change_collection_owner(
43 origin1.clone(),
44 1,
45 2
46 ));
47 assert_eq!(TemplateModule::collection(1).owner, 2);26 assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec());
48 });27 });
49}28}
5029
51#[test]30#[test]
52fn destroy_collection() {31fn create_refungible_item() {
53 new_test_ext().execute_with(|| {32 new_test_ext().execute_with(|| {
54 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();33 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>>();34 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
56 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();35 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
36 let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);
5737
58 let size = 1024;
59 let origin1 = Origin::signed(1);38 let origin1 = Origin::signed(1);
60
61 assert_ok!(TemplateModule::create_collection(39 assert_ok!(TemplateModule::create_collection(
62 origin1.clone(),40 origin1.clone(),
63 col_name1.clone(),41 col_name1.clone(),
64 col_desc1.clone(),42 col_desc1.clone(),
65 token_prefix1.clone(),43 token_prefix1.clone(),
66 size44 mode
67 ));45 ));
68 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));46 assert_eq!(TemplateModule::collection(1).owner, 1);
47
48
49 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 });
69 });52 });
70}53}
7154
72#[test]55#[test]
73fn create_item() {56fn transfer_refungible_item() {
74 new_test_ext().execute_with(|| {57 new_test_ext().execute_with(|| {
75 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();58 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>>();59 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
77 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();60 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
61 let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);
7862
79 let size = 1024;
80 let origin1 = Origin::signed(1);63 let origin1 = Origin::signed(1);
81 let origin2 = Origin::signed(2);64 let origin2 = Origin::signed(2);
82
83 assert_ok!(TemplateModule::create_collection(65 assert_ok!(TemplateModule::create_collection(
84 origin1.clone(),66 origin1.clone(),
85 col_name1.clone(),67 col_name1.clone(),
86 col_desc1.clone(),68 col_desc1.clone(),
87 token_prefix1.clone(),69 token_prefix1.clone(),
88 size70 mode
89 ));71 ));
90 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));72 assert_eq!(TemplateModule::collection(1).owner, 1);
91 assert_ok!(TemplateModule::create_item(
92 origin2.clone(),
93 1,
94 [1, 1, 1].to_vec()
95 ));
9673
97 // check balance (collection with id = 1, user id = 2)74 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]);
79
80 // change owner scenario
81 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 });
98 assert_eq!(TemplateModule::balance_count((1, 2)), 1);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]);
87
88 // split item scenario
89 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]);
96
97 // split item and new owner has account scenario
98 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]);
99 });105 });
100}106}
101107
108
102#[test]109#[test]
103fn burn_item() {110fn transfer_nft_item() {
104 new_test_ext().execute_with(|| {111 new_test_ext().execute_with(|| {
105 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();112 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>>();113 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
107 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();114 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
115 let mode: CollectionMode = CollectionMode::NFT(2000);
108116
109 let size = 1024;
110 let origin1 = Origin::signed(1);117 let origin1 = Origin::signed(1);
111 let origin2 = Origin::signed(2);
112
113 assert_ok!(TemplateModule::create_collection(118 assert_ok!(TemplateModule::create_collection(
114 origin1.clone(),119 origin1.clone(),
115 col_name1.clone(),120 col_name1.clone(),
116 col_desc1.clone(),121 col_desc1.clone(),
117 token_prefix1.clone(),122 token_prefix1.clone(),
118 size123 mode
119 ));124 ));
120 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));125 assert_eq!(TemplateModule::collection(1).owner, 1);
121 assert_ok!(TemplateModule::create_item(
122 origin2.clone(),
123 1,
124 [1, 1, 1].to_vec()
125 ));
126126
127 // check balance (collection with id = 1, user id = 2)
128 assert_eq!(TemplateModule::balance_count((1, 2)), 1);
129127
130 // burn item128 assert_ok!(TemplateModule::create_item(origin1.clone(), 1, [1,2,3].to_vec(), 1));
131 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1));
132 assert_noop!(129 assert_eq!(TemplateModule::nft_item_id(1,1).data, [1,2,3].to_vec());
133 TemplateModule::burn_item(origin1.clone(), 1, 1),130 assert_eq!(TemplateModule::balance_count(1,1), 1);
134 "Item does not exists"131 assert_eq!(TemplateModule::address_tokens(1,1), [1]);
135 );
136132
137 assert_eq!(TemplateModule::balance_count((1, 1)), 0);133 // default scenario
134 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]);
138 });140 });
139}141}
140142
141#[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();
147143
148 let size = 1024;144// #[test]
145// fn create_collection_test() {
146// new_test_ext().execute_with(|| {
149 let origin1 = Origin::signed(1);147// let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
150 let origin2 = Origin::signed(2);148// let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
151 let origin3 = Origin::signed(3);149// let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
152150
153 assert_ok!(TemplateModule::create_collection(151// let size = 1024;
154 origin1.clone(),
155 col_name1.clone(),152// let origin1 = Origin::signed(1);
156 col_desc1.clone(),
157 token_prefix1.clone(),
158 size
159 ));
160 assert_ok!(TemplateModule::create_collection(153// assert_ok!(TemplateModule::create_collection(
161 origin2.clone(),154// origin1.clone(),
162 col_name1.clone(),155// col_name1.clone(),
163 col_desc1.clone(),156// col_desc1.clone(),
164 token_prefix1.clone(),157// token_prefix1.clone(),
165 size158// size
166 ));159// ));
167 assert_ok!(TemplateModule::create_collection(160// assert_eq!(TemplateModule::collection(1).owner, 1);
168 origin3.clone(),
169 col_name1.clone(),
170 col_desc1.clone(),
171 token_prefix1.clone(),161// });
172 size162// }
173 ));
174163
175 assert_eq!(TemplateModule::collection(1).owner, 1);164// #[test]
165// fn change_collection_owner() {
166// new_test_ext().execute_with(|| {
176 assert_eq!(TemplateModule::collection(2).owner, 2);167// let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
177 assert_eq!(TemplateModule::collection(3).owner, 3);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();
178170
179 // collection admin171// let size = 1024;
180 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
181 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));172// let origin1 = Origin::signed(1);
182173
183 assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);174// assert_ok!(TemplateModule::create_collection(
175// origin1.clone(),
176// col_name1.clone(),
177// col_desc1.clone(),
178// token_prefix1.clone(),
179// size
180// ));
184 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);181// assert_ok!(TemplateModule::change_collection_owner(
182// origin1.clone(),
183// 1,
184// 2
185// ));
186// assert_eq!(TemplateModule::collection(1).owner, 2);
185 });187// });
186}188// }
187189
188#[test]190// #[test]
189fn remove_collection_admin() {191// fn destroy_collection() {
190 new_test_ext().execute_with(|| {192// new_test_ext().execute_with(|| {
191 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();193// 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>>();194// let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
193 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();195// let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
194196
195 let size = 1024;197// let size = 1024;
196 let origin1 = Origin::signed(1);198// let origin1 = Origin::signed(1);
197 let origin2 = Origin::signed(2);
198 let origin3 = Origin::signed(3);
199199
200 assert_ok!(TemplateModule::create_collection(200// assert_ok!(TemplateModule::create_collection(
201 origin1.clone(),201// origin1.clone(),
202 col_name1.clone(),202// col_name1.clone(),
203 col_desc1.clone(),203// col_desc1.clone(),
204 token_prefix1.clone(),204// token_prefix1.clone(),
205 size205// size
206 ));206// ));
207 assert_ok!(TemplateModule::create_collection(207// assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));
208 origin2.clone(),
209 col_name1.clone(),
210 col_desc1.clone(),
211 token_prefix1.clone(),208// });
212 size
213 ));
214 assert_ok!(TemplateModule::create_collection(209// }
215 origin3.clone(),
216 col_name1.clone(),
217 col_desc1.clone(),
218 token_prefix1.clone(),
219 size
220 ));
221210
222 assert_eq!(TemplateModule::collection(1).owner, 1);211// #[test]
212// fn create_item() {
213// new_test_ext().execute_with(|| {
223 assert_eq!(TemplateModule::collection(2).owner, 2);214// let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
224 assert_eq!(TemplateModule::collection(3).owner, 3);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();
225217
226 // collection admin218// let size = 1024;
227 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));219// let origin1 = Origin::signed(1);
228 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));220// let origin2 = Origin::signed(2);
229221
230 assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);222// assert_ok!(TemplateModule::create_collection(
223// origin1.clone(),
224// col_name1.clone(),
225// col_desc1.clone(),
226// token_prefix1.clone(),
227// size
228// ));
231 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);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// ));
232235
233 // remove admin236// // check balance (collection with id = 1, user id = 2)
234 assert_ok!(TemplateModule::remove_collection_admin(
235 origin2.clone(),
236 1,
237 3
238 ));
239 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false);237// assert_eq!(TemplateModule::balance_count((1, 2)), 1);
240 });238// });
241}239// }
242240
243#[test]241// #[test]
244fn balance_of() {242// fn burn_item() {
245 new_test_ext().execute_with(|| {243// new_test_ext().execute_with(|| {
246 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();244// 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>>();245// let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
248 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();246// let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
249247
250 let size = 1024;248// let size = 1024;
251 let origin1 = Origin::signed(1);249// let origin1 = Origin::signed(1);
252 let origin2 = Origin::signed(2);250// let origin2 = Origin::signed(2);
253 let origin3 = Origin::signed(3);
254251
255 assert_ok!(TemplateModule::create_collection(252// assert_ok!(TemplateModule::create_collection(
256 origin1.clone(),253// origin1.clone(),
257 col_name1.clone(),254// col_name1.clone(),
258 col_desc1.clone(),255// col_desc1.clone(),
259 token_prefix1.clone(),256// token_prefix1.clone(),
260 size257// size
261 ));258// ));
262 assert_ok!(TemplateModule::create_collection(259// assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
263 origin2.clone(),
264 col_name1.clone(),
265 col_desc1.clone(),
266 token_prefix1.clone(),
267 size
268 ));
269 assert_ok!(TemplateModule::create_collection(260// assert_ok!(TemplateModule::create_item(
270 origin3.clone(),261// origin2.clone(),
271 col_name1.clone(),262// 1,
272 col_desc1.clone(),263// [1, 1, 1].to_vec()
273 token_prefix1.clone(),
274 size264// ));
275 ));
276265
277 assert_eq!(TemplateModule::collection(1).owner, 1);266// // check balance (collection with id = 1, user id = 2)
278 assert_eq!(TemplateModule::collection(2).owner, 2);
279 assert_eq!(TemplateModule::collection(3).owner, 3);267// assert_eq!(TemplateModule::balance_count((1, 2)), 1);
280268
281 // check balance before269// // burn item
282 assert_eq!(TemplateModule::balance_count((1, 1)), 0);270// 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// );
283275
284 // create item276// assert_eq!(TemplateModule::balance_count((1, 1)), 0);
285 assert_ok!(TemplateModule::create_item(
286 origin1.clone(),
287 1,
288 [1, 1, 1].to_vec()
289 ));277// });
278// }
290279
291 // check balance (collection with id = 1, user id = 2)280// #[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>>();
292 assert_eq!(TemplateModule::balance_count((1, 1)), 1);284// let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
293 assert_eq!(TemplateModule::item_id((1, 1)).owner, 1);285// let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
294 });
295}
296286
297#[test]
298fn transfer() {287// let size = 1024;
299 new_test_ext().execute_with(|| {
300 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();288// let origin1 = Origin::signed(1);
301 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();289// let origin2 = Origin::signed(2);
302 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();290// let origin3 = Origin::signed(3);
303291
304 let size = 1024;292// assert_ok!(TemplateModule::create_collection(
305 let origin1 = Origin::signed(1);293// origin1.clone(),
294// col_name1.clone(),
306 let origin2 = Origin::signed(2);295// col_desc1.clone(),
296// token_prefix1.clone(),
297// size
298// ));
299// assert_ok!(TemplateModule::create_collection(
300// origin2.clone(),
307 let origin3 = Origin::signed(3);301// col_name1.clone(),
302// col_desc1.clone(),
303// token_prefix1.clone(),
304// size
305// ));
306// assert_ok!(TemplateModule::create_collection(
307// origin3.clone(),
308// col_name1.clone(),
309// col_desc1.clone(),
310// token_prefix1.clone(),
311// size
312// ));
308313
309 assert_ok!(TemplateModule::create_collection(314// assert_eq!(TemplateModule::collection(1).owner, 1);
310 origin1.clone(),
311 col_name1.clone(),
312 col_desc1.clone(),
313 token_prefix1.clone(),
314 size
315 ));
316 assert_ok!(TemplateModule::create_collection(315// assert_eq!(TemplateModule::collection(2).owner, 2);
317 origin2.clone(),
318 col_name1.clone(),
319 col_desc1.clone(),
320 token_prefix1.clone(),
321 size
322 ));
323 assert_ok!(TemplateModule::create_collection(316// assert_eq!(TemplateModule::collection(3).owner, 3);
324 origin3.clone(),
325 col_name1.clone(),
326 col_desc1.clone(),
327 token_prefix1.clone(),
328 size
329 ));
330317
331 assert_eq!(TemplateModule::collection(1).owner, 1);318// // collection admin
332 assert_eq!(TemplateModule::collection(2).owner, 2);319// assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
333 assert_eq!(TemplateModule::collection(3).owner, 3);320// assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));
334321
335 // create item322// assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);
336 assert_ok!(TemplateModule::create_item(
337 origin1.clone(),
338 1,
339 [1, 1, 1].to_vec()323// assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);
340 ));324// });
325// }
341326
342 // transfer327// #[test]
328// fn remove_collection_admin() {
329// new_test_ext().execute_with(|| {
343 assert_ok!(TemplateModule::transfer(origin1.clone(), 1, 1, 2));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>>();
344 assert_eq!(TemplateModule::item_id((1, 1)).owner, 2);332// let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
345333
346 // balance_of check334// let size = 1024;
347 assert_eq!(TemplateModule::balance_count((1, 1)), 0);335// let origin1 = Origin::signed(1);
348 assert_eq!(TemplateModule::balance_count((1, 2)), 1);336// let origin2 = Origin::signed(2);
349 });337// let origin3 = Origin::signed(3);
350}
351338
352#[test]339// assert_ok!(TemplateModule::create_collection(
353fn approve() {340// origin1.clone(),
341// col_name1.clone(),
354 new_test_ext().execute_with(|| {342// col_desc1.clone(),
343// token_prefix1.clone(),
344// size
355 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();345// ));
346// assert_ok!(TemplateModule::create_collection(
347// origin2.clone(),
348// col_name1.clone(),
356 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();349// col_desc1.clone(),
350// token_prefix1.clone(),
351// size
352// ));
357 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();353// assert_ok!(TemplateModule::create_collection(
354// origin3.clone(),
355// col_name1.clone(),
356// col_desc1.clone(),
357// token_prefix1.clone(),
358// size
359// ));
358360
359 let size = 1024;361// assert_eq!(TemplateModule::collection(1).owner, 1);
360 let origin1 = Origin::signed(1);
361 let origin2 = Origin::signed(2);362// assert_eq!(TemplateModule::collection(2).owner, 2);
362 let origin3 = Origin::signed(3);363// assert_eq!(TemplateModule::collection(3).owner, 3);
363364
364 assert_ok!(TemplateModule::create_collection(365// // collection admin
365 origin1.clone(),
366 col_name1.clone(),366// assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));
367 col_desc1.clone(),
368 token_prefix1.clone(),
369 size
370 ));
371 assert_ok!(TemplateModule::create_collection(
372 origin2.clone(),
373 col_name1.clone(),
374 col_desc1.clone(),
375 token_prefix1.clone(),
376 size
377 ));
378 assert_ok!(TemplateModule::create_collection(367// assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));
379 origin3.clone(),
380 col_name1.clone(),
381 col_desc1.clone(),
382 token_prefix1.clone(),
383 size
384 ));
385368
386 assert_eq!(TemplateModule::collection(1).owner, 1);369// assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);
387 assert_eq!(TemplateModule::collection(2).owner, 2);
388 assert_eq!(TemplateModule::collection(3).owner, 3);370// assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);
389371
390 // create item372// // remove admin
391 assert_ok!(TemplateModule::create_item(373// assert_ok!(TemplateModule::remove_collection_admin(
392 origin1.clone(),374// origin2.clone(),
393 1,375// 1,
394 [1, 1, 1].to_vec()376// 3
377// ));
395 ));378// assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false);
379// });
380// }
396381
397 // approve382// #[test]
383// fn balance_of() {
384// new_test_ext().execute_with(|| {
398 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));385// let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
399 assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);386// let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
400 });387// let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
401}
402388
403#[test]
404fn get_approved() {389// let size = 1024;
405 new_test_ext().execute_with(|| {
406 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();390// let origin1 = Origin::signed(1);
407 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();391// let origin2 = Origin::signed(2);
408 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();392// let origin3 = Origin::signed(3);
409393
410 let size = 1024;394// assert_ok!(TemplateModule::create_collection(
411 let origin1 = Origin::signed(1);395// origin1.clone(),
396// col_name1.clone(),
412 let origin2 = Origin::signed(2);397// col_desc1.clone(),
398// token_prefix1.clone(),
399// size
400// ));
401// assert_ok!(TemplateModule::create_collection(
402// origin2.clone(),
413 let origin3 = Origin::signed(3);403// col_name1.clone(),
404// col_desc1.clone(),
405// token_prefix1.clone(),
406// size
407// ));
408// assert_ok!(TemplateModule::create_collection(
409// origin3.clone(),
410// col_name1.clone(),
411// col_desc1.clone(),
412// token_prefix1.clone(),
413// size
414// ));
414415
415 assert_ok!(TemplateModule::create_collection(416// assert_eq!(TemplateModule::collection(1).owner, 1);
416 origin1.clone(),
417 col_name1.clone(),
418 col_desc1.clone(),
419 token_prefix1.clone(),
420 size
421 ));
422 assert_ok!(TemplateModule::create_collection(417// assert_eq!(TemplateModule::collection(2).owner, 2);
423 origin2.clone(),
424 col_name1.clone(),
425 col_desc1.clone(),
426 token_prefix1.clone(),
427 size
428 ));
429 assert_ok!(TemplateModule::create_collection(418// assert_eq!(TemplateModule::collection(3).owner, 3);
430 origin3.clone(),
431 col_name1.clone(),
432 col_desc1.clone(),
433 token_prefix1.clone(),
434 size
435 ));
436419
437 assert_eq!(TemplateModule::collection(1).owner, 1);420// // check balance before
438 assert_eq!(TemplateModule::collection(2).owner, 2);
439 assert_eq!(TemplateModule::collection(3).owner, 3);421// assert_eq!(TemplateModule::balance_count((1, 1)), 0);
440422
441 // create item423// // create item
442 assert_ok!(TemplateModule::create_item(424// assert_ok!(TemplateModule::create_item(
443 origin1.clone(),425// origin1.clone(),
444 1,426// 1,
445 [1, 1, 1].to_vec()427// [1, 1, 1].to_vec()
446 ));428// ));
447429
448 // approve430// // check balance (collection with id = 1, user id = 2)
449 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));431// assert_eq!(TemplateModule::balance_count((1, 1)), 1);
450 assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);432// assert_eq!(TemplateModule::item_id((1, 1)).owner, 1);
451 });433// });
452}434// }
453435
454#[test]436// #[test]
455fn transfer_from() {437// fn transfer() {
456 new_test_ext().execute_with(|| {438// new_test_ext().execute_with(|| {
457 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();439// 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>>();440// let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
459 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();441// let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
460442
461 let size = 1024;443// let size = 1024;
462 let origin1 = Origin::signed(1);444// let origin1 = Origin::signed(1);
463 let origin2 = Origin::signed(2);445// let origin2 = Origin::signed(2);
464 let origin3 = Origin::signed(3);446// let origin3 = Origin::signed(3);
465447
466 assert_ok!(TemplateModule::create_collection(448// assert_ok!(TemplateModule::create_collection(
467 origin1.clone(),449// origin1.clone(),
468 col_name1.clone(),450// col_name1.clone(),
469 col_desc1.clone(),451// col_desc1.clone(),
470 token_prefix1.clone(),452// token_prefix1.clone(),
471 size453// size
472 ));454// ));
473 assert_ok!(TemplateModule::create_collection(455// assert_ok!(TemplateModule::create_collection(
474 origin2.clone(),456// origin2.clone(),
475 col_name1.clone(),457// col_name1.clone(),
476 col_desc1.clone(),458// col_desc1.clone(),
477 token_prefix1.clone(),459// token_prefix1.clone(),
478 size460// size
479 ));461// ));
480 assert_ok!(TemplateModule::create_collection(462// assert_ok!(TemplateModule::create_collection(
481 origin3.clone(),463// origin3.clone(),
482 col_name1.clone(),464// col_name1.clone(),
483 col_desc1.clone(),465// col_desc1.clone(),
484 token_prefix1.clone(),466// token_prefix1.clone(),
485 size467// size
486 ));468// ));
487469
488 assert_eq!(TemplateModule::collection(1).owner, 1);470// assert_eq!(TemplateModule::collection(1).owner, 1);
489 assert_eq!(TemplateModule::collection(2).owner, 2);471// assert_eq!(TemplateModule::collection(2).owner, 2);
490 assert_eq!(TemplateModule::collection(3).owner, 3);472// assert_eq!(TemplateModule::collection(3).owner, 3);
491473
492 // create item474// // create item
493 assert_ok!(TemplateModule::create_item(475// assert_ok!(TemplateModule::create_item(
494 origin1.clone(),476// origin1.clone(),
495 1,477// 1,
496 [1, 1, 1].to_vec()478// [1, 1, 1].to_vec()
497 ));479// ));
498480
499 // approve481// // transfer
500 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));482// assert_ok!(TemplateModule::transfer(origin1.clone(), 1, 1, 2));
501 assert_ok!(TemplateModule::transfer_from(origin1.clone(), 1, 1, 2));483// assert_eq!(TemplateModule::item_id((1, 1)).owner, 2);
502 });
503}
504484
505#[test]
506fn index_list() {485// // balance_of check
507 new_test_ext().execute_with(|| {
508 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();486// assert_eq!(TemplateModule::balance_count((1, 1)), 0);
509 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();487// assert_eq!(TemplateModule::balance_count((1, 2)), 1);
510 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();488// });
489// }
511490
512 let size = 1024;491// #[test]
492// fn approve() {
493// new_test_ext().execute_with(|| {
513 let origin1 = Origin::signed(1);494// let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();
514 let origin2 = Origin::signed(2);495// let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();
515 let origin3 = Origin::signed(3);496// let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();
516497
517 assert_ok!(TemplateModule::create_collection(498// let size = 1024;
518 origin1.clone(),
519 col_name1.clone(),499// let origin1 = Origin::signed(1);
520 col_desc1.clone(),500// let origin2 = Origin::signed(2);
521 token_prefix1.clone(),
522 size
523 ));
524 assert_ok!(TemplateModule::create_collection(
525 origin2.clone(),
526 col_name1.clone(),501// let origin3 = Origin::signed(3);
527 col_desc1.clone(),
528 token_prefix1.clone(),
529 size
530 ));
531 assert_ok!(TemplateModule::create_collection(
532 origin3.clone(),
533 col_name1.clone(),
534 col_desc1.clone(),
535 token_prefix1.clone(),
536 size
537 ));
538502
539 assert_eq!(TemplateModule::collection(1).owner, 1);503// assert_ok!(TemplateModule::create_collection(
540 assert_eq!(TemplateModule::collection(2).owner, 2);504// origin1.clone(),
541 assert_eq!(TemplateModule::collection(3).owner, 3);505// col_name1.clone(),
542 // create items506// col_desc1.clone(),
543 assert_ok!(TemplateModule::create_item(507// token_prefix1.clone(),
544 origin1.clone(),508// size
545 1,509// ));
546 [1, 1, 1].to_vec()510// assert_ok!(TemplateModule::create_collection(
547 ));511// origin2.clone(),
548 assert_ok!(TemplateModule::create_item(512// col_name1.clone(),
549 origin1.clone(),513// col_desc1.clone(),
550 1,514// token_prefix1.clone(),
551 [1, 1, 2].to_vec()515// size
552 ));516// ));
553 assert_ok!(TemplateModule::create_item(517// assert_ok!(TemplateModule::create_collection(
554 origin1.clone(),518// origin3.clone(),
555 1,519// col_name1.clone(),
556 [1, 2, 3].to_vec()520// col_desc1.clone(),
557 ));521// token_prefix1.clone(),
558 assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 3);522// size
559 // burn one523// ));
560 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2));524
561 assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2);525// assert_eq!(TemplateModule::collection(1).owner, 1);
562 // burn another one526// assert_eq!(TemplateModule::collection(2).owner, 2);
563 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3));527// assert_eq!(TemplateModule::collection(3).owner, 3);
564 assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1);528
565 });529// // create item
566}530// assert_ok!(TemplateModule::create_item(
531// origin1.clone(),
532// 1,
533// [1, 1, 1].to_vec()
534// ));
535
536// // approve
537// assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
538// assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);
539// });
540// }
541
542// #[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();
548
549// let size = 1024;
550// let origin1 = Origin::signed(1);
551// let origin2 = Origin::signed(2);
552// let origin3 = Origin::signed(3);
553
554// assert_ok!(TemplateModule::create_collection(
555// origin1.clone(),
556// col_name1.clone(),
557// col_desc1.clone(),
558// token_prefix1.clone(),
559// size
560// ));
561// assert_ok!(TemplateModule::create_collection(
562// origin2.clone(),
563// col_name1.clone(),
564// col_desc1.clone(),
565// token_prefix1.clone(),
566// size
567// ));
568// assert_ok!(TemplateModule::create_collection(
569// origin3.clone(),
570// col_name1.clone(),
571// col_desc1.clone(),
572// token_prefix1.clone(),
573// size
574// ));
575
576// assert_eq!(TemplateModule::collection(1).owner, 1);
577// assert_eq!(TemplateModule::collection(2).owner, 2);
578// assert_eq!(TemplateModule::collection(3).owner, 3);
579
580// // create item
581// assert_ok!(TemplateModule::create_item(
582// origin1.clone(),
583// 1,
584// [1, 1, 1].to_vec()
585// ));
586
587// // approve
588// assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
589// assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);
590// });
591// }
592
593// #[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();
599
600// let size = 1024;
601// let origin1 = Origin::signed(1);
602// let origin2 = Origin::signed(2);
603// let origin3 = Origin::signed(3);
604
605// assert_ok!(TemplateModule::create_collection(
606// origin1.clone(),
607// col_name1.clone(),
608// col_desc1.clone(),
609// token_prefix1.clone(),
610// size
611// ));
612// assert_ok!(TemplateModule::create_collection(
613// origin2.clone(),
614// col_name1.clone(),
615// col_desc1.clone(),
616// token_prefix1.clone(),
617// size
618// ));
619// assert_ok!(TemplateModule::create_collection(
620// origin3.clone(),
621// col_name1.clone(),
622// col_desc1.clone(),
623// token_prefix1.clone(),
624// size
625// ));
626
627// assert_eq!(TemplateModule::collection(1).owner, 1);
628// assert_eq!(TemplateModule::collection(2).owner, 2);
629// assert_eq!(TemplateModule::collection(3).owner, 3);
630
631// // create item
632// assert_ok!(TemplateModule::create_item(
633// origin1.clone(),
634// 1,
635// [1, 1, 1].to_vec()
636// ));
637
638// // approve
639// assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));
640// assert_ok!(TemplateModule::transfer_from(origin1.clone(), 1, 1, 2));
641// });
642// }
643
644// #[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();
650
651// let size = 1024;
652// let origin1 = Origin::signed(1);
653// let origin2 = Origin::signed(2);
654// let origin3 = Origin::signed(3);
655
656// assert_ok!(TemplateModule::create_collection(
657// origin1.clone(),
658// col_name1.clone(),
659// col_desc1.clone(),
660// token_prefix1.clone(),
661// size
662// ));
663// assert_ok!(TemplateModule::create_collection(
664// origin2.clone(),
665// col_name1.clone(),
666// col_desc1.clone(),
667// token_prefix1.clone(),
668// size
669// ));
670// assert_ok!(TemplateModule::create_collection(
671// origin3.clone(),
672// col_name1.clone(),
673// col_desc1.clone(),
674// token_prefix1.clone(),
675// size
676// ));
677
678// 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 items
682// 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 one
699// assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2));
700// assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2);
701// // burn another one
702// assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3));
703// assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1);
704// });
705// }
567706