difftreelog
Merge pull request #137 from usetech-llc/feature/NFTPAR-299_storage_option_refactor
in: master
Fix unit tests
3 files changed
pallets/nft/src/lib.rsdiffbeforeafterboth1295 Self::check_white_list(&target_collection, &spender)?;1295 Self::check_white_list(&target_collection, &spender)?;1296 }1296 }129712971298 let allowance_exists = <Allowances<T>>::contains_key(collection_id, (item_id, &sender, &spender));1298 let allowance: u128 = amount1299 let mut allowance: u128 = amount;1300 if allowance_exists {1301 allowance += <Allowances<T>>::get(collection_id, (item_id, &sender, &spender));1299 .checked_add(<Allowances<T>>::get(collection_id, (item_id, &sender, &spender)))1302 }1300 .ok_or(Error::<T>::NumOverflow)?;1303 if let Some(limit) = allowance_limit {1301 if let Some(limit) = allowance_limit {1304 ensure!(limit >= allowance, Error::<T>::TokenValueTooLow);1302 ensure!(limit >= allowance, Error::<T>::TokenValueTooLow);1305 }1303 }1335 let sender = ensure_signed(origin)?;1333 let sender = ensure_signed(origin)?;1336 let target_collection = Self::get_collection(collection_id)?;1334 let target_collection = Self::get_collection(collection_id)?;13371338 let mut appoved_transfer = false;133913351340 // Check approval1336 // Check approval1341 let mut approval: u128 = 0;1337 let approval: u128 = <Allowances<T>>::get(collection_id, (item_id, &from, &sender));1342 if <Allowances<T>>::contains_key(collection_id, (item_id, &from, &sender)) {1343 approval = <Allowances<T>>::get(collection_id, (item_id, &from, &sender));1344 ensure!(approval >= value, Error::<T>::TokenValueNotEnough);1345 appoved_transfer = true;1346 }134713381348 // Limits check1339 // Limits check1349 Self::is_correct_transfer(&target_collection, &recipient)?;1340 Self::is_correct_transfer(&target_collection, &recipient)?;135013411351 // Transfer permissions check 1342 // Transfer permissions check 1352 ensure!(1343 ensure!(1353 appoved_transfer || 1344 approval >= value || 1354 (1345 (1355 target_collection.limits.owner_can_transfer &&1346 target_collection.limits.owner_can_transfer &&1356 Self::is_owner_or_admin_permissions(&target_collection, sender.clone())1347 Self::is_owner_or_admin_permissions(&target_collection, sender.clone())pallets/nft/src/mock.rsdiffbeforeafterboth24 {24 {25 System: frame_system::{Module, Call, Config, Storage, Event<T>},25 System: frame_system::{Module, Call, Config, Storage, Event<T>},26 TemplateModule: pallet_template::{Module, Call, Storage},26 TemplateModule: pallet_template::{Module, Call, Storage},27 Balances: pallet_balances::{Module, Call, Storage},27 }28 }28);29);2930134}135}135136136parameter_types! {137parameter_types! {137 pub const CollectionCreationPrice: u64 = 1_000_000_000_000;138 pub const CollectionCreationPrice: u32 = 0;139 pub TreasuryAccountId: u64 = 1234;138}140}139141140impl pallet_template::Config for Test {142impl pallet_template::Config for Test {141 type Event = ();143 type Event = ();142 type WeightInfo = ();144 type WeightInfo = ();143 type CollectionCreationPrice = CollectionCreationPrice;145 type CollectionCreationPrice = CollectionCreationPrice;146 type Currency = pallet_balances::Module<Test>;147 type TreasuryAccountId = TreasuryAccountId;144}148}145149146// Build genesis storage according to the mock runtime.150// Build genesis storage according to the mock runtime.pallets/nft/src/tests.rsdiffbeforeafterboth121 121 122 let data = default_nft_data();122 let data = default_nft_data();123 create_test_item(collection_id, &data.clone().into());123 create_test_item(collection_id, &data.clone().into());124 let item = TemplateModule::nft_item_id(collection_id, 1).unwrap();124 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).const_data, data.const_data);125 assert_eq!(item.const_data, data.const_data);125 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).variable_data, data.variable_data);126 assert_eq!(item.variable_data, data.variable_data);126 });127 });127}128}128129146 items_data.clone().into_iter().map(|d| { d.into() }).collect()147 items_data.clone().into_iter().map(|d| { d.into() }).collect()147 ));148 ));148 for (index, data) in items_data.iter().enumerate() {149 for (index, data) in items_data.iter().enumerate() {149 assert_eq!(TemplateModule::nft_item_id(1, (index + 1) as TokenId).const_data.to_vec(), data.const_data);150 let item = TemplateModule::nft_item_id(1, (index + 1) as TokenId).unwrap(); 151 assert_eq!(item.const_data.to_vec(), data.const_data);150 assert_eq!(TemplateModule::nft_item_id(1, (index + 1) as TokenId).variable_data.to_vec(), data.variable_data);152 assert_eq!(item.variable_data.to_vec(), data.variable_data);151 }153 }152 });154 });153}155}160162161 let data = default_re_fungible_data();163 let data = default_re_fungible_data();162 create_test_item(collection_id, &data.clone().into());164 create_test_item(collection_id, &data.clone().into());165 let item = TemplateModule::refungible_item_id(collection_id, 1).unwrap();163 assert_eq!(166 assert_eq!(164 TemplateModule::refungible_item_id(collection_id, 1).const_data,167 item.const_data,165 data.const_data168 data.const_data166 );169 );167 assert_eq!(170 assert_eq!(168 TemplateModule::refungible_item_id(collection_id, 1).variable_data,171 item.variable_data,169 data.variable_data172 data.variable_data170 );173 );171 assert_eq!(174 assert_eq!(172 TemplateModule::refungible_item_id(collection_id, 1).owner[0],175 item.owner[0],173 Ownership {176 Ownership {174 owner: 1,177 owner: 1,175 fraction: 1023178 fraction: 1023197 ));200 ));198 for (index, data) in items_data.iter().enumerate() {201 for (index, data) in items_data.iter().enumerate() {199202200 let item = TemplateModule::refungible_item_id(1, (index + 1) as TokenId);203 let item = TemplateModule::refungible_item_id(1, (index + 1) as TokenId).unwrap();201 assert_eq!(item.const_data.to_vec(), data.const_data);204 assert_eq!(item.const_data.to_vec(), data.const_data);202 assert_eq!(item.variable_data.to_vec(), data.variable_data);205 assert_eq!(item.variable_data.to_vec(), data.variable_data);203 assert_eq!(206 assert_eq!(299302300 let origin1 = Origin::signed(1);303 let origin1 = Origin::signed(1);301 let origin2 = Origin::signed(2);304 let origin2 = Origin::signed(2);305 {306 let item = TemplateModule::refungible_item_id(collection_id, 1).unwrap();302 assert_eq!(307 assert_eq!(303 TemplateModule::refungible_item_id(collection_id, 1).const_data,308 item.const_data,304 data.const_data309 data.const_data305 );310 );306 assert_eq!(311 assert_eq!(307 TemplateModule::refungible_item_id(collection_id, 1).variable_data,312 item.variable_data,308 data.variable_data313 data.variable_data309 );314 );310 assert_eq!(315 assert_eq!(311 TemplateModule::refungible_item_id(collection_id, 1).owner[0],316 item.owner[0],312 Ownership {317 Ownership {313 owner: 1,318 owner: 1,314 fraction: 1023319 fraction: 1023315 }320 }316 );321 );322 }317 assert_eq!(TemplateModule::balance_count(1, 1), 1023);323 assert_eq!(TemplateModule::balance_count(1, 1), 1023);318 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);324 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);319325320 // change owner scenario326 // change owner scenario321 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1023));327 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1023));322 assert_eq!(328 assert_eq!(323 TemplateModule::refungible_item_id(1, 1).owner[0],329 TemplateModule::refungible_item_id(1, 1).unwrap().owner[0],324 Ownership {330 Ownership {325 owner: 2,331 owner: 2,326 fraction: 1023332 fraction: 1023333339334 // split item scenario340 // split item scenario335 assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 500));341 assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 500));342 {343 let item = TemplateModule::refungible_item_id(1, 1).unwrap();336 assert_eq!(344 assert_eq!(337 TemplateModule::refungible_item_id(1, 1).owner[0],345 item.owner[0],338 Ownership {346 Ownership {339 owner: 2,347 owner: 2,340 fraction: 523348 fraction: 523341 }349 }342 );350 );343 assert_eq!(351 assert_eq!(344 TemplateModule::refungible_item_id(1, 1).owner[1],352 item.owner[1],345 Ownership {353 Ownership {346 owner: 3,354 owner: 3,347 fraction: 500355 fraction: 500348 }356 }349 );357 );358 }350 assert_eq!(TemplateModule::balance_count(1, 2), 523);359 assert_eq!(TemplateModule::balance_count(1, 2), 523);351 assert_eq!(TemplateModule::balance_count(1, 3), 500);360 assert_eq!(TemplateModule::balance_count(1, 3), 500);352 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);361 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);353 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);362 assert_eq!(TemplateModule::address_tokens(1, 3), [1]);354363355 // split item and new owner has account scenario364 // split item and new owner has account scenario356 assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 200));365 assert_ok!(TemplateModule::transfer(origin2.clone(), 3, 1, 1, 200));366 {367 let item = TemplateModule::refungible_item_id(1, 1).unwrap();357 assert_eq!(368 assert_eq!(358 TemplateModule::refungible_item_id(1, 1).owner[0],369 item.owner[0],359 Ownership {370 Ownership {360 owner: 2,371 owner: 2,361 fraction: 323372 fraction: 323362 }373 }363 );374 );364 assert_eq!(375 assert_eq!(365 TemplateModule::refungible_item_id(1, 1).owner[1],376 item.owner[1],366 Ownership {377 Ownership {367 owner: 3,378 owner: 3,368 fraction: 700379 fraction: 700369 }380 }370 );381 );382 }371 assert_eq!(TemplateModule::balance_count(1, 2), 323);383 assert_eq!(TemplateModule::balance_count(1, 2), 323);372 assert_eq!(TemplateModule::balance_count(1, 3), 700);384 assert_eq!(TemplateModule::balance_count(1, 3), 700);373 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);385 assert_eq!(TemplateModule::address_tokens(1, 2), [1]);390 let origin1 = Origin::signed(1);402 let origin1 = Origin::signed(1);391 // default scenario403 // default scenario392 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));404 assert_ok!(TemplateModule::transfer(origin1.clone(), 2, 1, 1, 1000));393 assert_eq!(TemplateModule::nft_item_id(1, 1).owner, 2);405 assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().owner, 2);394 assert_eq!(TemplateModule::balance_count(1, 1), 0);406 assert_eq!(TemplateModule::balance_count(1, 1), 0);395 assert_eq!(TemplateModule::balance_count(1, 2), 1);407 assert_eq!(TemplateModule::balance_count(1, 2), 1);396 // assert_eq!(TemplateModule::address_tokens(1, 1), []);408 // assert_eq!(TemplateModule::address_tokens(1, 1), []);456 let data = default_nft_data();468 let data = default_nft_data();457 create_test_item(collection_id, &data.clone().into());469 create_test_item(collection_id, &data.clone().into());458470459 assert_eq!(TemplateModule::nft_item_id(1, 1).const_data, data.const_data);471 assert_eq!(TemplateModule::nft_item_id(1, 1).unwrap().const_data, data.const_data);460 assert_eq!(TemplateModule::balance_count(1, 1), 1);472 assert_eq!(TemplateModule::balance_count(1, 1), 1);461 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);473 assert_eq!(TemplateModule::address_tokens(1, 1), [1]);462474605 1,617 1,606 1,618 1,607 4619 4608 ), Error::<Test>::TokenValueNotEnough);620 ), Error::<Test>::NoPermission);609 });621 });610}622}611623685 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1, 5));697 assert_ok!(TemplateModule::burn_item(origin1.clone(), 1, 1, 5));686 assert_noop!(698 assert_noop!(687 TemplateModule::burn_item(origin1.clone(), 1, 1, 5),699 TemplateModule::burn_item(origin1.clone(), 1, 1, 5),688 Error::<Test>::TokenNotFound700 Error::<Test>::TokenValueNotEnough689 );701 );690702691 assert_eq!(TemplateModule::balance_count(1, 1), 0);703 assert_eq!(TemplateModule::balance_count(1, 1), 0);807 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);819 assert_eq!(TemplateModule::balance_count(nft_collection_id, 1), 1);808 assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 5);820 assert_eq!(TemplateModule::balance_count(fungible_collection_id, 1), 5);809 assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 1023);821 assert_eq!(TemplateModule::balance_count(re_fungible_collection_id, 1), 1023);810 assert_eq!(TemplateModule::nft_item_id(nft_collection_id, 1).owner, 1);822 assert_eq!(TemplateModule::nft_item_id(nft_collection_id, 1).unwrap().owner, 1);811 assert_eq!(TemplateModule::fungible_item_id(fungible_collection_id, 1).value, 5);823 assert_eq!(TemplateModule::fungible_item_id(fungible_collection_id, 1).value, 5);812 assert_eq!(TemplateModule::refungible_item_id(re_fungible_collection_id, 1).owner[0].owner, 1);824 assert_eq!(TemplateModule::refungible_item_id(re_fungible_collection_id, 1).unwrap().owner[0].owner, 1);813 });825 });814}826}8158271876 let variable_data = b"test set_variable_meta_data method.".to_vec();1888 let variable_data = b"test set_variable_meta_data method.".to_vec();1877 assert_ok!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone()));1889 assert_ok!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone()));187818901879 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).variable_data, variable_data);1891 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).unwrap().variable_data, variable_data);1880 });1892 });1881}1893}188218941895 let variable_data = b"test set_variable_meta_data method.".to_vec();1907 let variable_data = b"test set_variable_meta_data method.".to_vec();1896 assert_ok!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone()));1908 assert_ok!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone()));189719091898 assert_eq!(TemplateModule::refungible_item_id(collection_id, 1).variable_data, variable_data);1910 assert_eq!(TemplateModule::refungible_item_id(collection_id, 1).unwrap().variable_data, variable_data);1899 });1911 });1900}1912}19011913