12use crate::mock::*;3use frame_support::{assert_noop, assert_ok};45#[test]6fn create_collection_test() {7 new_test_ext().execute_with(|| {89 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();1213 let size = 1024;14 let origin1 = Origin::signed(1);15 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));16 assert_eq!(TemplateModule::collection(1).owner, 1);17 });18}1920#[test]21fn change_collection_owner() {22 new_test_ext().execute_with(|| {2324 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();25 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();26 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();2728 let size = 1024;29 let origin1 = Origin::signed(1);3031 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));32 assert_ok!(TemplateModule::change_collection_owner(33 origin1.clone(),34 1,35 236 ));37 assert_eq!(TemplateModule::collection(1).owner, 2);38 });39}4041#[test]42fn destroy_collection() {43 new_test_ext().execute_with(|| {4445 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();46 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();47 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();4849 let size = 1024;50 let origin1 = Origin::signed(1);5152 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));53 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));54 });55}5657#[test]58fn create_item() {59 new_test_ext().execute_with(|| {6061 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();62 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();63 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();6465 let size = 1024;66 let origin1 = Origin::signed(1);67 let origin2 = Origin::signed(2);6869 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));70 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));71 assert_ok!(TemplateModule::create_item(72 origin2.clone(),73 1,74 [1, 1, 1].to_vec()75 ));7677 78 assert_eq!(TemplateModule::balance_count((1, 2)), 1);79 });80}8182#[test]83fn burn_item() {84 new_test_ext().execute_with(|| {8586 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();87 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();88 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();8990 let size = 1024;91 let origin1 = Origin::signed(1);92 let origin2 = Origin::signed(2);9394 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));95 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));96 assert_ok!(TemplateModule::create_item(97 origin2.clone(),98 1,99 [1, 1, 1].to_vec()100 ));101102 103 assert_eq!(TemplateModule::balance_count((1, 2)), 1);104105 106 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1));107 assert_noop!(108 TemplateModule::burn_item(origin1.clone(), 1, 1),109 "Item does not exists"110 );111112 assert_eq!(TemplateModule::balance_count((1, 1)), 0);113 });114}115116#[test]117fn add_collection_admin() {118 new_test_ext().execute_with(|| {119120 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();121 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();122 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();123124 let size = 1024;125 let origin1 = Origin::signed(1);126 let origin2 = Origin::signed(2);127 let origin3 = Origin::signed(3);128129 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));130 assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));131 assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));132133 assert_eq!(TemplateModule::collection(1).owner, 1);134 assert_eq!(TemplateModule::collection(2).owner, 2);135 assert_eq!(TemplateModule::collection(3).owner, 3);136137 138 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));139 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));140141 assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);142 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);143 });144}145146#[test]147fn remove_collection_admin() {148 new_test_ext().execute_with(|| {149150 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();151 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();152 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();153154 let size = 1024;155 let origin1 = Origin::signed(1);156 let origin2 = Origin::signed(2);157 let origin3 = Origin::signed(3);158159 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));160 assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));161 assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));162163 assert_eq!(TemplateModule::collection(1).owner, 1);164 assert_eq!(TemplateModule::collection(2).owner, 2);165 assert_eq!(TemplateModule::collection(3).owner, 3);166167 168 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));169 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));170171 assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);172 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);173174 175 assert_ok!(TemplateModule::remove_collection_admin(176 origin2.clone(),177 1,178 3179 ));180 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false);181 });182}183184#[test]185fn balance_of() {186 new_test_ext().execute_with(|| {187188 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();189 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();190 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();191192 let size = 1024;193 let origin1 = Origin::signed(1);194 let origin2 = Origin::signed(2);195 let origin3 = Origin::signed(3);196197 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));198 assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));199 assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));200201 assert_eq!(TemplateModule::collection(1).owner, 1);202 assert_eq!(TemplateModule::collection(2).owner, 2);203 assert_eq!(TemplateModule::collection(3).owner, 3);204205 206 assert_eq!(TemplateModule::balance_count((1, 1)), 0);207208 209 assert_ok!(TemplateModule::create_item(210 origin1.clone(),211 1,212 [1, 1, 1].to_vec()213 ));214215 216 assert_eq!(TemplateModule::balance_count((1, 1)), 1);217 assert_eq!(TemplateModule::item_id((1, 1)).owner, 1);218 });219}220221#[test]222fn transfer() {223 new_test_ext().execute_with(|| {224225 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();226 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();227 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();228229 let size = 1024;230 let origin1 = Origin::signed(1);231 let origin2 = Origin::signed(2);232 let origin3 = Origin::signed(3);233234 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));235 assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));236 assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));237238 assert_eq!(TemplateModule::collection(1).owner, 1);239 assert_eq!(TemplateModule::collection(2).owner, 2);240 assert_eq!(TemplateModule::collection(3).owner, 3);241242 243 assert_ok!(TemplateModule::create_item(244 origin1.clone(),245 1,246 [1, 1, 1].to_vec()247 ));248249 250 assert_ok!(TemplateModule::transfer(origin1.clone(), 1, 1, 2));251 assert_eq!(TemplateModule::item_id((1, 1)).owner, 2);252253 254 assert_eq!(TemplateModule::balance_count((1, 1)), 0);255 assert_eq!(TemplateModule::balance_count((1, 2)), 1);256 });257}258259#[test]260fn approve() {261 new_test_ext().execute_with(|| {262263 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();264 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();265 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();266267 let size = 1024;268 let origin1 = Origin::signed(1);269 let origin2 = Origin::signed(2);270 let origin3 = Origin::signed(3);271272 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));273 assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));274 assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));275276 assert_eq!(TemplateModule::collection(1).owner, 1);277 assert_eq!(TemplateModule::collection(2).owner, 2);278 assert_eq!(TemplateModule::collection(3).owner, 3);279280 281 assert_ok!(TemplateModule::create_item(282 origin1.clone(),283 1,284 [1, 1, 1].to_vec()285 ));286287 288 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));289 assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);290 });291}292293#[test]294fn get_approved() {295 new_test_ext().execute_with(|| {296 297 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();298 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();299 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();300301 let size = 1024;302 let origin1 = Origin::signed(1);303 let origin2 = Origin::signed(2);304 let origin3 = Origin::signed(3);305306 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));307 assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));308 assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));309310 assert_eq!(TemplateModule::collection(1).owner, 1);311 assert_eq!(TemplateModule::collection(2).owner, 2);312 assert_eq!(TemplateModule::collection(3).owner, 3);313314 315 assert_ok!(TemplateModule::create_item(316 origin1.clone(),317 1,318 [1, 1, 1].to_vec()319 ));320321 322 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));323 assert_eq!(TemplateModule::approved((1, 1)).contains(&2), true);324 });325}326327#[test]328fn transfer_from() {329 new_test_ext().execute_with(|| {330331 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();332 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();333 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();334335 let size = 1024;336 let origin1 = Origin::signed(1);337 let origin2 = Origin::signed(2);338 let origin3 = Origin::signed(3);339340 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));341 assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));342 assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));343344 assert_eq!(TemplateModule::collection(1).owner, 1);345 assert_eq!(TemplateModule::collection(2).owner, 2);346 assert_eq!(TemplateModule::collection(3).owner, 3);347348 349 assert_ok!(TemplateModule::create_item(350 origin1.clone(),351 1,352 [1, 1, 1].to_vec()353 ));354355 356 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));357 assert_ok!(TemplateModule::transfer_from(origin1.clone(), 1, 1, 2));358 });359}360361#[test]362fn index_list() {363 new_test_ext().execute_with(|| {364365 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();366 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();367 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();368369 let size = 1024;370 let origin1 = Origin::signed(1);371 let origin2 = Origin::signed(2);372 let origin3 = Origin::signed(3);373374 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));375 assert_ok!(TemplateModule::create_collection(origin2.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));376 assert_ok!(TemplateModule::create_collection(origin3.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));377378 assert_eq!(TemplateModule::collection(1).owner, 1);379 assert_eq!(TemplateModule::collection(2).owner, 2);380 assert_eq!(TemplateModule::collection(3).owner, 3);381 382 assert_ok!(TemplateModule::create_item(383 origin1.clone(),384 1,385 [1, 1, 1].to_vec()386 ));387 assert_ok!(TemplateModule::create_item(388 origin1.clone(),389 1,390 [1, 1, 2].to_vec()391 ));392 assert_ok!(TemplateModule::create_item(393 origin1.clone(),394 1,395 [1, 2, 3].to_vec()396 ));397 assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 3);398 399 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2));400 assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2);401 402 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3));403 assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1);404 });405}406