12use 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 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 128 assert_eq!(TemplateModule::balance_count((1, 2)), 1);129130 131 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 180 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 227 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 234 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 282 assert_eq!(TemplateModule::balance_count((1, 1)), 0);283284 285 assert_ok!(TemplateModule::create_item(286 origin1.clone(),287 1,288 [1, 1, 1].to_vec()289 ));290291 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 336 assert_ok!(TemplateModule::create_item(337 origin1.clone(),338 1,339 [1, 1, 1].to_vec()340 ));341342 343 assert_ok!(TemplateModule::transfer(origin1.clone(), 1, 1, 2));344 assert_eq!(TemplateModule::item_id((1, 1)).owner, 2);345346 347 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 391 assert_ok!(TemplateModule::create_item(392 origin1.clone(),393 1,394 [1, 1, 1].to_vec()395 ));396397 398 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 442 assert_ok!(TemplateModule::create_item(443 origin1.clone(),444 1,445 [1, 1, 1].to_vec()446 ));447448 449 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 493 assert_ok!(TemplateModule::create_item(494 origin1.clone(),495 1,496 [1, 1, 1].to_vec()497 ));498499 500 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 543 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 560 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2));561 assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2);562 563 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3));564 assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1);565 });566}