From 9774e7914a1bd2a0e6c4a59f6642c3d21a010b46 Mon Sep 17 00:00:00 2001 From: sotmorskiy Date: Mon, 30 Nov 2020 06:03:40 +0000 Subject: [PATCH] NFTPAR-142 Off-chain and on-chain data schema. set_variable_meta_data tests. --- --- a/pallets/nft/src/lib.rs +++ b/pallets/nft/src/lib.rs @@ -1162,7 +1162,7 @@ let target_collection = >::get(collection_id); ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) || Self::is_owner_or_admin_permissions(collection_id, sender.clone()), - "Only item owner, collection owner and admins can modify item"); + "Only item owner, collection owner and admins can modify item."); Self::item_exists(collection_id, item_id, &target_collection.mode)?; @@ -1170,7 +1170,7 @@ { CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?, CollectionMode::ReFungible(_) => Self::set_re_fungible_variable_data(collection_id, item_id, data)?, - CollectionMode::Fungible(_) => fail!("Can't store metadata in fungible tokens"), + CollectionMode::Fungible(_) => fail!("Can't store metadata in fungible tokens."), _ => fail!("Unexpected collection type.") }; --- a/pallets/nft/src/tests.rs +++ b/pallets/nft/src/tests.rs @@ -1766,4 +1766,60 @@ assert_eq!(TemplateModule::collection(collection_id).const_on_chain_schema, b"".to_vec()); assert_eq!(TemplateModule::collection(collection_id).variable_on_chain_schema, b"test variable on chain schema".to_vec()); }); +} + +#[test] +fn set_variable_meta_data_on_nft_token_stores_variable_meta_data() { + new_test_ext().execute_with(|| { + default_limits(); + + let collection_id = create_test_collection(&CollectionMode::NFT, 1); + + let origin1 = Origin::signed(1); + + let data = default_nft_data(); + create_test_item(1, &data.into()); + + let variable_data = b"test set_variable_meta_data method.".to_vec(); + assert_ok!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone())); + + assert_eq!(TemplateModule::nft_item_id(collection_id, 1).variable_data, variable_data); + }); +} + +#[test] +fn set_variable_meta_data_on_re_fungible_token_stores_variable_meta_data() { + new_test_ext().execute_with(|| { + default_limits(); + + let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1); + + let origin1 = Origin::signed(1); + + let data = default_re_fungible_data(); + create_test_item(1, &data.into()); + + let variable_data = b"test set_variable_meta_data method.".to_vec(); + assert_ok!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone())); + + assert_eq!(TemplateModule::refungible_item_id(collection_id, 1).variable_data, variable_data); + }); +} + + +#[test] +fn set_variable_meta_data_on_fungible_token_fails() { + new_test_ext().execute_with(|| { + default_limits(); + + let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1); + + let origin1 = Origin::signed(1); + + let data = default_fungible_data(); + create_test_item(1, &data.into()); + + let variable_data = b"test set_variable_meta_data method.".to_vec(); + assert_noop!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone()), "Can't store metadata in fungible tokens."); + }); } \ No newline at end of file -- gitstuff