git.delta.rocks / unique-network / refs/commits / 9774e7914a1b

difftreelog

NFTPAR-142 Off-chain and on-chain data schema. set_variable_meta_data tests.

sotmorskiy2020-11-30parent: #0039ae3.patch.diff
in: master

2 files changed

modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
1162 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.");
11661166
1167 Self::item_exists(collection_id, item_id, &target_collection.mode)?;1167 Self::item_exists(collection_id, item_id, &target_collection.mode)?;
11681168
1169 match target_collection.mode1169 match target_collection.mode
1170 {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 };
11761176
modifiedpallets/nft/src/tests.rsdiffbeforeafterboth
1768 });1768 });
1769}1769}
1770
1771#[test]
1772fn set_variable_meta_data_on_nft_token_stores_variable_meta_data() {
1773 new_test_ext().execute_with(|| {
1774 default_limits();
1775
1776 let collection_id = create_test_collection(&CollectionMode::NFT, 1);
1777
1778 let origin1 = Origin::signed(1);
1779
1780 let data = default_nft_data();
1781 create_test_item(1, &data.into());
1782
1783 let variable_data = b"test set_variable_meta_data method.".to_vec();
1784 assert_ok!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone()));
1785
1786 assert_eq!(TemplateModule::nft_item_id(collection_id, 1).variable_data, variable_data);
1787 });
1788}
1789
1790#[test]
1791fn set_variable_meta_data_on_re_fungible_token_stores_variable_meta_data() {
1792 new_test_ext().execute_with(|| {
1793 default_limits();
1794
1795 let collection_id = create_test_collection(&CollectionMode::ReFungible(3), 1);
1796
1797 let origin1 = Origin::signed(1);
1798
1799 let data = default_re_fungible_data();
1800 create_test_item(1, &data.into());
1801
1802 let variable_data = b"test set_variable_meta_data method.".to_vec();
1803 assert_ok!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone()));
1804
1805 assert_eq!(TemplateModule::refungible_item_id(collection_id, 1).variable_data, variable_data);
1806 });
1807}
1808
1809
1810#[test]
1811fn set_variable_meta_data_on_fungible_token_fails() {
1812 new_test_ext().execute_with(|| {
1813 default_limits();
1814
1815 let collection_id = create_test_collection(&CollectionMode::Fungible(3), 1);
1816
1817 let origin1 = Origin::signed(1);
1818
1819 let data = default_fungible_data();
1820 create_test_item(1, &data.into());
1821
1822 let variable_data = b"test set_variable_meta_data method.".to_vec();
1823 assert_noop!(TemplateModule::set_variable_meta_data(origin1, collection_id, 1, variable_data.clone()), "Can't store metadata in fungible tokens.");
1824 });
1825}