difftreelog
NFTPAR-142 Off-chain and on-chain data schema. set_variable_meta_data tests.
in: master
2 files changed
pallets/nft/src/lib.rsdiffbeforeafterboth1162 let target_collection = <Collection<T>>::get(collection_id);1162 let target_collection = <Collection<T>>::get(collection_id);1163 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||1163 ensure!(Self::is_item_owner(sender.clone(), collection_id, item_id) ||1164 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1164 Self::is_owner_or_admin_permissions(collection_id, sender.clone()),1165 "Only item owner, collection owner and admins can modify item");1165 "Only item owner, collection owner and admins can modify item.");116611661167 Self::item_exists(collection_id, item_id, &target_collection.mode)?;1167 Self::item_exists(collection_id, item_id, &target_collection.mode)?;116811681169 match target_collection.mode1169 match target_collection.mode1170 {1170 {1171 CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?,1171 CollectionMode::NFT => Self::set_nft_variable_data(collection_id, item_id, data)?,1172 CollectionMode::ReFungible(_) => Self::set_re_fungible_variable_data(collection_id, item_id, data)?,1172 CollectionMode::ReFungible(_) => Self::set_re_fungible_variable_data(collection_id, item_id, data)?,1173 CollectionMode::Fungible(_) => fail!("Can't store metadata in fungible tokens"),1173 CollectionMode::Fungible(_) => fail!("Can't store metadata in fungible tokens."),1174 _ => fail!("Unexpected collection type.")1174 _ => fail!("Unexpected collection type.")1175 };1175 };11761176pallets/nft/src/tests.rsdiffbeforeafterboth--- 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