git.delta.rocks / unique-network / refs/commits / e4dd4c0eeff5

difftreelog

Merge pull request #133 from usetech-llc/feature/NFTPAR-196_sponsor_setVariableMetadata

Greg Zaitsev2021-03-22parents: #e72e7a9 #ff8c59d.patch.diff
in: master
Feature/nftpar 196 sponsor set variable metadata

3 files changed

modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
--- a/pallets/nft/src/lib.rs
+++ b/pallets/nft/src/lib.rs
@@ -174,7 +174,7 @@
     pub mint_mode: bool,
     pub offchain_schema: Vec<u8>,
     pub schema_version: SchemaVersion,
-    pub sponsorship: SponsorshipState<AccountId>,
+    pub sponsorship: SponsorshipState<T::AccountId>,
     pub limits: CollectionLimits<T::BlockNumber>, // Collection private restrictions 
     pub variable_on_chain_schema: Vec<u8>, //
     pub const_on_chain_schema: Vec<u8>, //
@@ -1853,8 +1853,6 @@
     }
 
     fn create_item_no_validation(collection: &CollectionHandle<T>, owner: T::AccountId, data: CreateItemData) -> DispatchResult {
-        let collection_id = collection.id;
-
         match data
         {
             CreateItemData::NFT(data) => {
@@ -2622,10 +2620,7 @@
                 // sponsor timeout
                 let block_number = <system::Module<T>>::block_number() as T::BlockNumber;
 
-                let collection = <Collection<T>>::get(collection_id);
-
                 let limit = collection.limits.sponsor_transfer_timeout;
-                let mut sponsored = true;
                 if <CreateItemBasket<T>>::contains_key((collection_id, &who)) {
                     let last_tx_block = <CreateItemBasket<T>>::get((collection_id, &who));
                     let limit_time = last_tx_block + limit.into();
@@ -2636,9 +2631,7 @@
                 <CreateItemBasket<T>>::insert((collection_id, who.clone()), block_number);
 
                 // check free create limit
-                if (collection.limits.sponsored_data_size >= (_properties.len() as u32)) &&
-                   (sponsored)
-                {
+                if collection.limits.sponsored_data_size >= (_properties.len() as u32) {
                     collection.sponsorship.sponsor()
                         .cloned()
                 } else {
@@ -2747,7 +2740,7 @@
                 let collection = <CollectionById<T>>::get(collection_id)?;
 
                 if
-                    collection.sponsor_confirmed &&
+                    collection.sponsorship.confirmed() &&
                     // Can't sponsor fungible collection, this tx will be rejected
                     // as invalid
                     !matches!(collection.mode, CollectionMode::Fungible(_)) &&
@@ -2769,7 +2762,7 @@
                 if !sponsor_metadata_changes {
                     None
                 } else {
-                    Some(collection.sponsor)
+                    collection.sponsorship.sponsor().cloned()
                 }
             }
 
modifiedtests/src/rpc.load.tsdiffbeforeafterboth
--- a/tests/src/rpc.load.ts
+++ b/tests/src/rpc.load.ts
@@ -110,7 +110,7 @@
     });
   });
 
-  it.only('Smart Contract RPC Load Test', async () => {
+  it('Smart Contract RPC Load Test', async () => {
     await usingApi(async api => {
 
       // Deploy smart contract
modifiedtests/src/setVariableMetadataSponsoringRateLimit.test.tsdiffbeforeafterboth
after · tests/src/setVariableMetadataSponsoringRateLimit.test.ts
1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//56import { IKeyringPair } from '@polkadot/types/types';7import privateKey from './substrate/privateKey';8import usingApi from './substrate/substrate-api';9import {10  confirmSponsorshipExpectSuccess,11  createCollectionExpectSuccess,12  createItemExpectSuccess,13  findUnusedAddress,14  setCollectionLimitsExpectSuccess,15  setCollectionSponsorExpectSuccess,16  setVariableMetaDataExpectFailure,17  setVariableMetaDataExpectSuccess,18} from './util/helpers';1920describe('Integration Test setVariableMetadataSponsoringRateLimit', () => {21  let alice: IKeyringPair;22  let userWithNoBalance: IKeyringPair;2324  before(async () => {25    await usingApi(async (api) => {26      alice = privateKey('//Alice');27      userWithNoBalance = await findUnusedAddress(api);28    });29  });3031  it('sponsored setVariableMetaData can be called twice with pause for free', async () => {32    const collectionId = await createCollectionExpectSuccess();33    await setCollectionSponsorExpectSuccess(collectionId, alice.address);34    await confirmSponsorshipExpectSuccess(collectionId);35    await setCollectionLimitsExpectSuccess(alice, collectionId, {36      SponsoredDataRateLimit: 0,37    });3839    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);40    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);41    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);42  });4344  it('sponsored setVariableMetaData can\'t be called twice without pause for free', async () => {45    const collectionId = await createCollectionExpectSuccess();46    await setCollectionSponsorExpectSuccess(collectionId, alice.address);47    await confirmSponsorshipExpectSuccess(collectionId);48    await setCollectionLimitsExpectSuccess(alice, collectionId, {49      SponsoredDataRateLimit: 10,50    });5152    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);53    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);54    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2, 3]);55  });5657  it('sponsored setVariableMetaData can\'t be called for free with variable metadata above collection limits', async () => {58    const collectionId = await createCollectionExpectSuccess();59    await setCollectionSponsorExpectSuccess(collectionId, alice.address);60    await confirmSponsorshipExpectSuccess(collectionId);61    await setCollectionLimitsExpectSuccess(alice, collectionId, {62      SponsoredDataRateLimit: 0,63      SponsoredDataSize: 1,64    });65    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);6667    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1]);68    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2]);69  });7071  it('Default value of rate limit does not sponsor setting variable metadata', async () => {72    const collectionId = await createCollectionExpectSuccess();73    await setCollectionSponsorExpectSuccess(collectionId, alice.address);74    await confirmSponsorshipExpectSuccess(collectionId);7576    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);77    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1]);78  });7980});