123use crate::{Error, mock::*};4use frame_support::{assert_ok, assert_noop};56#[test]7fn create_collection_test() {8 new_test_ext().execute_with(|| {910 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();11 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();12 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();1314 let size = 1024;15 let origin1 = Origin::signed(1);16 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));17 assert_eq!(TemplateModule::collection(1).owner, 1);18 });19}2021#[test]22fn change_collection_owner() {23 new_test_ext().execute_with(|| {2425 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();26 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();27 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();2829 let size = 1024;30 let origin1 = Origin::signed(1);3132 assert_ok!(TemplateModule::create_collection(origin1.clone(), col_name1.clone(), col_desc1.clone(), token_prefix1.clone(), size));33 assert_ok!(TemplateModule::change_collection_owner(34 origin1.clone(),35 1,36 237 ));38 assert_eq!(TemplateModule::collection(1).owner, 2);39 });40}4142#[test]43fn destroy_collection() {44 new_test_ext().execute_with(|| {4546 let col_name1: Vec<u16> = "Test1\0".encode_utf16().collect::<Vec<u16>>();47 let col_desc1: Vec<u16> = "TestDescription1\0".encode_utf16().collect::<Vec<u16>>();48 let token_prefix1: Vec<u8> = b"token_prefix1\0".to_vec();49 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(|| {296297 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);381382 383 assert_ok!(TemplateModule::create_item(384 origin1.clone(),385 1,386 [1, 1, 1].to_vec()387 ));388389 assert_ok!(TemplateModule::create_item(390 origin1.clone(),391 1,392 [1, 1, 2].to_vec()393 ));394395 assert_ok!(TemplateModule::create_item(396 origin1.clone(),397 1,398 [1, 2, 3].to_vec()399 ));400401 assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 3);402403 404 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 2));405 assert_eq!(TemplateModule::address_tokens((1, 1)).len(), 2);406407 408 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 3));409 assert_eq!(TemplateModule::address_tokens((1, 1))[0], 1);410 });411}