12use crate::mock::*;3use crate::{ApprovePermissions, 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);2324 assert_ok!(TemplateModule::create_item(25 origin1.clone(),26 1,27 [1, 2, 3].to_vec(),28 129 ));30 assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());31 });32}3334#[test]35fn create_refungible_item() {36 new_test_ext().execute_with(|| {37 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();38 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();39 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();40 let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);4142 let origin1 = Origin::signed(1);43 assert_ok!(TemplateModule::create_collection(44 origin1.clone(),45 col_name1.clone(),46 col_desc1.clone(),47 token_prefix1.clone(),48 mode49 ));50 assert_eq!(TemplateModule::collection(1).owner, 1);5152 assert_ok!(TemplateModule::create_item(53 origin1.clone(),54 1,55 [1, 2, 3].to_vec(),56 157 ));58 assert_eq!(59 TemplateModule::refungible_item_id(1, 1).data,60 [1, 2, 3].to_vec()61 );62 assert_eq!(63 TemplateModule::refungible_item_id(1, 1).owner[0],64 Ownership {65 owner: 1,66 fraction: 100067 }68 );69 });70}7172#[test]73fn create_fungible_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();78 let mode: CollectionMode = CollectionMode::Fungible(3);7980 let origin1 = Origin::signed(1);81 assert_ok!(TemplateModule::create_collection(82 origin1.clone(),83 col_name1.clone(),84 col_desc1.clone(),85 token_prefix1.clone(),86 mode87 ));88 assert_eq!(TemplateModule::collection(1).owner, 1);8990 assert_ok!(TemplateModule::create_item(91 origin1.clone(),92 1,93 [].to_vec(),94 195 ));96 assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);97 assert_eq!(TemplateModule::balance_count(1, 1), 1000);98 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);99 });100}101102#[test]103fn transfer_fungible_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();108 let mode: CollectionMode = CollectionMode::Fungible(3);109110 let origin1 = Origin::signed(1);111 let origin2 = Origin::signed(2);112 assert_ok!(TemplateModule::create_collection(113 origin1.clone(),114 col_name1.clone(),115 col_desc1.clone(),116 token_prefix1.clone(),117 mode118 ));119 assert_eq!(TemplateModule::collection(1).owner, 1);120121 assert_ok!(TemplateModule::create_item(122 origin1.clone(),123 1,124 [].to_vec(),125 1126 ));127 assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);128 assert_eq!(TemplateModule::balance_count(1, 1), 1000);129 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);130131 132 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));133 assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 2);134 assert_eq!(TemplateModule::fungible_item_id(1, 1).value, 1000);135 assert_eq!(TemplateModule::balance_count(1, 1), 0);136 assert_eq!(TemplateModule::balance_count(1, 2), 1000);137 assert_eq!(TemplateModule::address_tokens(1, 1), []);138 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);139140 141 assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 500));142 assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 2);143 assert_eq!(TemplateModule::fungible_item_id(1, 2).owner, 3);144 assert_eq!(TemplateModule::balance_count(1, 2), 500);145 assert_eq!(TemplateModule::balance_count(1, 3), 500);146 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);147 assert_eq!(TemplateModule::address_tokens(1, 3), [2]);148149 150 assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 200));151 assert_eq!(TemplateModule::fungible_item_id(1, 1).value, 300);152 assert_eq!(TemplateModule::fungible_item_id(1, 2).value, 700);153 assert_eq!(TemplateModule::balance_count(1, 2), 300);154 assert_eq!(TemplateModule::balance_count(1, 3), 700);155 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);156 assert_eq!(TemplateModule::address_tokens(1, 3), [2]);157 });158}159160#[test]161fn transfer_refungible_item() {162 new_test_ext().execute_with(|| {163 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();164 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();165 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();166 let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);167168 let origin1 = Origin::signed(1);169 let origin2 = Origin::signed(2);170 assert_ok!(TemplateModule::create_collection(171 origin1.clone(),172 col_name1.clone(),173 col_desc1.clone(),174 token_prefix1.clone(),175 mode176 ));177 assert_eq!(TemplateModule::collection(1).owner, 1);178179 assert_ok!(TemplateModule::create_item(180 origin1.clone(),181 1,182 [1, 2, 3].to_vec(),183 1184 ));185 assert_eq!(186 TemplateModule::refungible_item_id(1, 1).data,187 [1, 2, 3].to_vec()188 );189 assert_eq!(190 TemplateModule::refungible_item_id(1, 1).owner[0],191 Ownership {192 owner: 1,193 fraction: 1000194 }195 );196 assert_eq!(TemplateModule::balance_count(1, 1), 1000);197 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);198199 200 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));201 assert_eq!(202 TemplateModule::refungible_item_id(1, 1).owner[0],203 Ownership {204 owner: 2,205 fraction: 1000206 }207 );208 assert_eq!(TemplateModule::balance_count(1, 1), 0);209 assert_eq!(TemplateModule::balance_count(1, 2), 1000);210 assert_eq!(TemplateModule::address_tokens(1, 1), []);211 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);212213 214 assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 500));215 assert_eq!(216 TemplateModule::refungible_item_id(1, 1).owner[0],217 Ownership {218 owner: 2,219 fraction: 500220 }221 );222 assert_eq!(223 TemplateModule::refungible_item_id(1, 1).owner[1],224 Ownership {225 owner: 3,226 fraction: 500227 }228 );229 assert_eq!(TemplateModule::balance_count(1, 2), 500);230 assert_eq!(TemplateModule::balance_count(1, 3), 500);231 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);232 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);233234 235 assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 200));236 assert_eq!(237 TemplateModule::refungible_item_id(1, 1).owner[0],238 Ownership {239 owner: 2,240 fraction: 300241 }242 );243 assert_eq!(244 TemplateModule::refungible_item_id(1, 1).owner[1],245 Ownership {246 owner: 3,247 fraction: 700248 }249 );250 assert_eq!(TemplateModule::balance_count(1, 2), 300);251 assert_eq!(TemplateModule::balance_count(1, 3), 700);252 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);253 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);254 });255}256257#[test]258fn transfer_nft_item() {259 new_test_ext().execute_with(|| {260 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();261 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();262 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();263 let mode: CollectionMode = CollectionMode::NFT(2000);264265 let origin1 = Origin::signed(1);266 assert_ok!(TemplateModule::create_collection(267 origin1.clone(),268 col_name1.clone(),269 col_desc1.clone(),270 token_prefix1.clone(),271 mode272 ));273 assert_eq!(TemplateModule::collection(1).owner, 1);274275 assert_ok!(TemplateModule::create_item(276 origin1.clone(),277 1,278 [1, 2, 3].to_vec(),279 1280 ));281 assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());282 assert_eq!(TemplateModule::balance_count(1, 1), 1);283 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);284285 286 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));287 assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 2);288 assert_eq!(TemplateModule::balance_count(1, 1), 0);289 assert_eq!(TemplateModule::balance_count(1, 2), 1);290 assert_eq!(TemplateModule::address_tokens(1, 1), []);291 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);292 });293}294295#[test]296fn nft_approve_and_transfer_from() {297 new_test_ext().execute_with(|| {298 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();299 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();300 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();301 let mode: CollectionMode = CollectionMode::NFT(2000);302303 let origin1 = Origin::signed(1);304 let origin2 = Origin::signed(2);305 assert_ok!(TemplateModule::create_collection(306 origin1.clone(),307 col_name1.clone(),308 col_desc1.clone(),309 token_prefix1.clone(),310 mode311 ));312 assert_eq!(TemplateModule::collection(1).owner, 1);313314 assert_ok!(TemplateModule::create_item(315 origin1.clone(),316 1,317 [1, 2, 3].to_vec(),318 1319 ));320 assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());321 assert_eq!(TemplateModule::balance_count(1, 1), 1);322 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);323324 assert_noop!(325 TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 1),326 "You do not have permissions to modify this collection"327 );328329 330 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));331 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);332 assert_ok!(TemplateModule::approve(origin1.clone(), 10, 1, 1));333 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 2);334 assert_eq!(335 TemplateModule::approved(1, (1, 1))[0],336 ApprovePermissions {337 approved: 2,338 amount: 100000000339 }340 );341342 assert_ok!(TemplateModule::transfer_from(343 origin2.clone(),344 1,345 3,346 1,347 1,348 1349 ));350 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 0);351 });352}353354#[test]355fn refungible_approve_and_transfer_from() {356 new_test_ext().execute_with(|| {357 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();358 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();359 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();360 let mode: CollectionMode = CollectionMode::ReFungible(2000, 3);361362 let origin1 = Origin::signed(1);363 let origin2 = Origin::signed(2);364 assert_ok!(TemplateModule::create_collection(365 origin1.clone(),366 col_name1.clone(),367 col_desc1.clone(),368 token_prefix1.clone(),369 mode370 ));371 assert_eq!(TemplateModule::collection(1).owner, 1);372373 assert_ok!(TemplateModule::create_item(374 origin1.clone(),375 1,376 [1, 2, 3].to_vec(),377 1378 ));379 assert_eq!(380 TemplateModule::refungible_item_id(1, 1).data,381 [1, 2, 3].to_vec()382 );383 assert_eq!(384 TemplateModule::refungible_item_id(1, 1).owner[0],385 Ownership {386 owner: 1,387 fraction: 1000388 }389 );390 assert_eq!(TemplateModule::balance_count(1, 1), 1000);391 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);392393 assert_noop!(394 TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 1),395 "You do not have permissions to modify this collection"396 );397398 399 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));400 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);401 assert_ok!(TemplateModule::approve(origin1.clone(), 10, 1, 1));402 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 2);403 assert_eq!(404 TemplateModule::approved(1, (1, 1))[0],405 ApprovePermissions {406 approved: 2,407 amount: 100000000408 }409 );410411 assert_ok!(TemplateModule::transfer_from(412 origin2.clone(),413 1,414 3,415 1,416 1,417 100418 ));419 assert_eq!(TemplateModule::balance_count(1, 1), 900);420 assert_eq!(TemplateModule::balance_count(1, 3), 100);421 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);422 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);423424 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);425 assert_eq!(426 TemplateModule::approved(1, (1, 1))[0],427 ApprovePermissions {428 approved: 10,429 amount: 100000000430 }431 );432 });433}434435#[test]436fn fungible_approve_and_transfer_from() {437 new_test_ext().execute_with(|| {438 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();439 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();440 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();441 let mode: CollectionMode = CollectionMode::Fungible(3);442443 let origin1 = Origin::signed(1);444 let origin2 = Origin::signed(2);445 assert_ok!(TemplateModule::create_collection(446 origin1.clone(),447 col_name1.clone(),448 col_desc1.clone(),449 token_prefix1.clone(),450 mode451 ));452 assert_eq!(TemplateModule::collection(1).owner, 1);453454 assert_ok!(TemplateModule::create_item(455 origin1.clone(),456 1,457 [].to_vec(),458 1459 ));460 assert_eq!(TemplateModule::fungible_item_id(1, 1).owner, 1);461 assert_eq!(TemplateModule::balance_count(1, 1), 1000);462 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);463464 assert_noop!(465 TemplateModule::transfer_from(origin2.clone(), 1, 3, 1, 1, 1),466 "You do not have permissions to modify this collection"467 );468469 470 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));471 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);472 assert_ok!(TemplateModule::approve(origin1.clone(), 10, 1, 1));473 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 2);474 assert_eq!(475 TemplateModule::approved(1, (1, 1))[0],476 ApprovePermissions {477 approved: 2,478 amount: 100000000479 }480 );481482 assert_ok!(TemplateModule::transfer_from(483 origin2.clone(),484 1,485 3,486 1,487 1,488 100489 ));490 assert_eq!(TemplateModule::balance_count(1, 1), 900);491 assert_eq!(TemplateModule::balance_count(1, 3), 100);492 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);493 assert_eq!(TemplateModule::address_tokens(1, 3), [2]);494495 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 1);496 assert_eq!(497 TemplateModule::approved(1, (1, 1))[0],498 ApprovePermissions {499 approved: 10,500 amount: 100000000501 }502 );503504 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));505 assert_ok!(TemplateModule::transfer_from(506 origin2.clone(),507 1,508 3,509 1,510 1,511 900512 ));513 assert_eq!(TemplateModule::balance_count(1, 1), 0);514 assert_eq!(TemplateModule::balance_count(1, 3), 1000);515 assert_eq!(TemplateModule::address_tokens(1, 1), []);516 assert_eq!(TemplateModule::address_tokens(1, 3), [2]);517518 assert_eq!(TemplateModule::approved(1, (1, 1)).len(), 0);519 });520}521522#[test]523fn change_collection_owner() {524 new_test_ext().execute_with(|| {525 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();526 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();527 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();528 let mode: CollectionMode = CollectionMode::NFT(2000);529530 let origin1 = Origin::signed(1);531 assert_ok!(TemplateModule::create_collection(532 origin1.clone(),533 col_name1.clone(),534 col_desc1.clone(),535 token_prefix1.clone(),536 mode537 ));538 assert_ok!(TemplateModule::change_collection_owner(539 origin1.clone(),540 1,541 2542 ));543 assert_eq!(TemplateModule::collection(1).owner, 2);544 });545}546547#[test]548fn destroy_collection() {549 new_test_ext().execute_with(|| {550 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();551 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();552 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();553 let mode: CollectionMode = CollectionMode::NFT(2000);554555 let origin1 = Origin::signed(1);556 assert_ok!(TemplateModule::create_collection(557 origin1.clone(),558 col_name1.clone(),559 col_desc1.clone(),560 token_prefix1.clone(),561 mode562 ));563 assert_ok!(TemplateModule::destroy_collection(origin1.clone(), 1));564 });565}566567#[test]568fn burn_nft_item() {569 new_test_ext().execute_with(|| {570 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();571 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();572 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();573 let mode: CollectionMode = CollectionMode::NFT(2000);574575 let origin1 = Origin::signed(1);576 let origin2 = Origin::signed(2);577 assert_ok!(TemplateModule::create_collection(578 origin1.clone(),579 col_name1.clone(),580 col_desc1.clone(),581 token_prefix1.clone(),582 mode583 ));584 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));585 assert_ok!(TemplateModule::create_item(586 origin2.clone(),587 1,588 [1, 2, 3].to_vec(),589 1590 ));591592 assert_eq!(TemplateModule::nft_item_id(1, 1).data, [1, 2, 3].to_vec());593594 595 assert_eq!(TemplateModule::balance_count(1, 1), 1);596597 598 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1));599 assert_noop!(600 TemplateModule::burn_item(origin1.clone(), 1, 1),601 "Item does not exists"602 );603604 assert_eq!(TemplateModule::balance_count(1, 1), 0);605 });606}607608#[test]609fn burn_fungible_item() {610 new_test_ext().execute_with(|| {611 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();612 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();613 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();614 let mode: CollectionMode = CollectionMode::Fungible(3);615616 let origin1 = Origin::signed(1);617 let origin2 = Origin::signed(2);618 assert_ok!(TemplateModule::create_collection(619 origin1.clone(),620 col_name1.clone(),621 col_desc1.clone(),622 token_prefix1.clone(),623 mode624 ));625 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));626 assert_ok!(TemplateModule::create_item(627 origin2.clone(),628 1,629 [].to_vec(),630 1631 ));632633 634 assert_eq!(TemplateModule::balance_count(1, 1), 1000);635636 637 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1));638 assert_noop!(639 TemplateModule::burn_item(origin1.clone(), 1, 1),640 "Item does not exists"641 );642643 assert_eq!(TemplateModule::balance_count(1, 1), 0);644 });645}646647#[test]648fn burn_refungible_item() {649 new_test_ext().execute_with(|| {650 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();651 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();652 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();653 let mode: CollectionMode = CollectionMode::ReFungible(200, 3);654655 let origin1 = Origin::signed(1);656 let origin2 = Origin::signed(2);657 assert_ok!(TemplateModule::create_collection(658 origin1.clone(),659 col_name1.clone(),660 col_desc1.clone(),661 token_prefix1.clone(),662 mode663 ));664 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));665 assert_ok!(TemplateModule::create_item(666 origin2.clone(),667 1,668 [1, 2, 3].to_vec(),669 1670 ));671672 assert_eq!(673 TemplateModule::refungible_item_id(1, 1).data,674 [1, 2, 3].to_vec()675 );676677 678 assert_eq!(TemplateModule::balance_count(1, 1), 1000);679680 681 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1));682 assert_noop!(683 TemplateModule::burn_item(origin1.clone(), 1, 1),684 "Item does not exists"685 );686687 assert_eq!(TemplateModule::balance_count(1, 1), 0);688 });689}690691#[test]692fn add_collection_admin() {693 new_test_ext().execute_with(|| {694 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();695 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();696 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();697 let mode: CollectionMode = CollectionMode::NFT(2000);698699 let origin1 = Origin::signed(1);700 let origin2 = Origin::signed(2);701 let origin3 = Origin::signed(3);702 assert_ok!(TemplateModule::create_collection(703 origin1.clone(),704 col_name1.clone(),705 col_desc1.clone(),706 token_prefix1.clone(),707 mode.clone()708 ));709 assert_ok!(TemplateModule::create_collection(710 origin2.clone(),711 col_name1.clone(),712 col_desc1.clone(),713 token_prefix1.clone(),714 mode.clone()715 ));716 assert_ok!(TemplateModule::create_collection(717 origin3.clone(),718 col_name1.clone(),719 col_desc1.clone(),720 token_prefix1.clone(),721 mode.clone()722 ));723724 assert_eq!(TemplateModule::collection(1).owner, 1);725 assert_eq!(TemplateModule::collection(2).owner, 2);726 assert_eq!(TemplateModule::collection(3).owner, 3);727728 729 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));730 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));731732 assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);733 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);734 });735}736737#[test]738fn remove_collection_admin() {739 new_test_ext().execute_with(|| {740 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();741 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();742 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();743 let mode: CollectionMode = CollectionMode::NFT(2000);744745 let origin1 = Origin::signed(1);746 let origin2 = Origin::signed(2);747 let origin3 = Origin::signed(3);748749 assert_ok!(TemplateModule::create_collection(750 origin1.clone(),751 col_name1.clone(),752 col_desc1.clone(),753 token_prefix1.clone(),754 mode.clone()755 ));756 assert_ok!(TemplateModule::create_collection(757 origin2.clone(),758 col_name1.clone(),759 col_desc1.clone(),760 token_prefix1.clone(),761 mode.clone()762 ));763 assert_ok!(TemplateModule::create_collection(764 origin3.clone(),765 col_name1.clone(),766 col_desc1.clone(),767 token_prefix1.clone(),768 mode.clone()769 ));770771 assert_eq!(TemplateModule::collection(1).owner, 1);772 assert_eq!(TemplateModule::collection(2).owner, 2);773 assert_eq!(TemplateModule::collection(3).owner, 3);774775 776 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 2));777 assert_ok!(TemplateModule::add_collection_admin(origin1.clone(), 1, 3));778779 assert_eq!(TemplateModule::admin_list_collection(1).contains(&2), true);780 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), true);781782 783 assert_ok!(TemplateModule::remove_collection_admin(784 origin2.clone(),785 1,786 3787 ));788 assert_eq!(TemplateModule::admin_list_collection(1).contains(&3), false);789 });790}791792#[test]793fn balance_of() {794 new_test_ext().execute_with(|| {795 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();796 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();797 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();798 let nft_mode: CollectionMode = CollectionMode::NFT(2000);799 let furg_mode: CollectionMode = CollectionMode::Fungible(3);800 let refung_mode: CollectionMode = CollectionMode::ReFungible(2000, 3);801802 let origin1 = Origin::signed(1);803804 assert_ok!(TemplateModule::create_collection(805 origin1.clone(),806 col_name1.clone(),807 col_desc1.clone(),808 token_prefix1.clone(),809 nft_mode.clone()810 ));811 assert_ok!(TemplateModule::create_collection(812 origin1.clone(),813 col_name1.clone(),814 col_desc1.clone(),815 token_prefix1.clone(),816 furg_mode.clone()817 ));818 assert_ok!(TemplateModule::create_collection(819 origin1.clone(),820 col_name1.clone(),821 col_desc1.clone(),822 token_prefix1.clone(),823 refung_mode.clone()824 ));825826 assert_eq!(TemplateModule::collection(1).owner, 1);827 assert_eq!(TemplateModule::collection(2).owner, 1);828 assert_eq!(TemplateModule::collection(3).owner, 1);829830 831 assert_eq!(TemplateModule::balance_count(1, 1), 0);832 assert_eq!(TemplateModule::balance_count(2, 1), 0);833 assert_eq!(TemplateModule::balance_count(3, 1), 0);834835 836 assert_ok!(TemplateModule::create_item(837 origin1.clone(),838 1,839 [1, 1, 1].to_vec(),840 1841 ));842843 assert_ok!(TemplateModule::create_item(844 origin1.clone(),845 2,846 [].to_vec(),847 1848 ));849850 assert_ok!(TemplateModule::create_item(851 origin1.clone(),852 3,853 [1, 1, 1].to_vec(),854 1855 ));856857 858 assert_eq!(TemplateModule::balance_count(1, 1), 1);859 assert_eq!(TemplateModule::balance_count(2, 1), 1000);860 assert_eq!(TemplateModule::balance_count(3, 1), 1000);861 assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 1);862 assert_eq!(TemplateModule::fungible_item_id(2, 1).owner, 1);863 assert_eq!(TemplateModule::refungible_item_id(3, 1).owner[0].owner, 1);864 });865}866867#[test]868fn approve() {869 new_test_ext().execute_with(|| {870 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();871 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();872 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();873 let nft_mode: CollectionMode = CollectionMode::NFT(2000);874 let origin1 = Origin::signed(1);875876 assert_ok!(TemplateModule::create_collection(877 origin1.clone(),878 col_name1.clone(),879 col_desc1.clone(),880 token_prefix1.clone(),881 nft_mode.clone()882 ));883884 assert_eq!(TemplateModule::collection(1).owner, 1);885886 887 assert_ok!(TemplateModule::create_item(888 origin1.clone(),889 1,890 [1, 1, 1].to_vec(),891 1892 ));893894 895 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));896 assert_eq!(TemplateModule::approved(1, (1, 1))[0].approved, 2);897 });898}899900#[test]901fn transfer_from() {902 new_test_ext().execute_with(|| {903 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();904 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();905 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();906 let mode: CollectionMode = CollectionMode::NFT(2000);907 let origin1 = Origin::signed(1);908 let origin2 = Origin::signed(2);909910 assert_ok!(TemplateModule::create_collection(911 origin1.clone(),912 col_name1.clone(),913 col_desc1.clone(),914 token_prefix1.clone(),915 mode916 ));917918 assert_eq!(TemplateModule::collection(1).owner, 1);919920 921 assert_ok!(TemplateModule::create_item(922 origin1.clone(),923 1,924 [1, 1, 1].to_vec(),925 1926 ));927928 929 assert_ok!(TemplateModule::approve(origin1.clone(), 2, 1, 1));930 assert_eq!(TemplateModule::approved(1, (1, 1))[0].approved, 2);931 assert_ok!(TemplateModule::transfer_from(932 origin2.clone(),933 1,934 2,935 1,936 1,937 1938 ));939940 941 assert_eq!(TemplateModule::balance_count(1, 1), 0);942 assert_eq!(TemplateModule::balance_count(1, 2), 1);943 });944}