git.delta.rocks / unique-network / refs/commits / 008a188c3ea9

difftreelog

source

tests/src/setVariableMetadataSponsoringRateLimit.test.ts5.3 KiBsourcehistory
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617import {IKeyringPair} from '@polkadot/types/types';18import {expect} from 'chai';19import privateKey from './substrate/privateKey';20import usingApi from './substrate/substrate-api';21import {22  confirmSponsorshipExpectSuccess,23  createCollectionExpectSuccess,24  createItemExpectSuccess,25  findUnusedAddress,26  getDetailedCollectionInfo,27  setCollectionLimitsExpectSuccess,28  setCollectionSponsorExpectSuccess,29  setVariableMetaDataExpectFailure,30  setVariableMetaDataExpectSuccess,31} from './util/helpers';3233describe('Integration Test setVariableMetadataSponsoringRateLimit', () => {34  let alice: IKeyringPair;35  let userWithNoBalance: IKeyringPair;3637  before(async () => {38    await usingApi(async (api) => {39      alice = privateKey('//Alice');40      userWithNoBalance = await findUnusedAddress(api);41    });42  });4344  it('sponsored setVariableMetaData can be called twice with 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: {Blocks: 0},50    });5152    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);53    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);54    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);55  });5657  it('sponsored setVariableMetaData can\'t be called twice without pause for free', async () => {58    const collectionId = await createCollectionExpectSuccess();59    await setCollectionSponsorExpectSuccess(collectionId, alice.address);60    await confirmSponsorshipExpectSuccess(collectionId);61    await setCollectionLimitsExpectSuccess(alice, collectionId, {62      sponsoredDataRateLimit: {Blocks: 10},63    });6465    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);66    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);67    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2, 3]);68  });6970  it('sponsored setVariableMetaData can\'t be called for free with variable metadata above collection limits', async () => {71    const collectionId = await createCollectionExpectSuccess();72    await setCollectionSponsorExpectSuccess(collectionId, alice.address);73    await confirmSponsorshipExpectSuccess(collectionId);74    await setCollectionLimitsExpectSuccess(alice, collectionId, {75      sponsoredDataRateLimit: {Blocks: 0},76      sponsoredDataSize: 1,77    });78    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);7980    await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1]);81    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2]);82  });8384  it('Default value of rate limit does not sponsor setting variable metadata', async () => {85    const collectionId = await createCollectionExpectSuccess();86    await setCollectionSponsorExpectSuccess(collectionId, alice.address);87    await confirmSponsorshipExpectSuccess(collectionId);8889    const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);90    await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1]);91  });9293  it('sponsoring of data is disabled by default', async () => {94    await usingApi(async api => {95      const collectionId = await createCollectionExpectSuccess();9697      const collection = (await getDetailedCollectionInfo(api, collectionId))!;98      // limit is none = default is used99      expect(collection?.limits.sponsoredDataRateLimit.isNone);100    });101  });102103  it('sponsoring can be disabled explicitly', async () => {104    await usingApi(async api => {105      const collectionId = await createCollectionExpectSuccess();106107      await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsoredDataRateLimit: {Blocks: 6}});108      {109        const collection = (await getDetailedCollectionInfo(api, collectionId))!;110        expect(collection?.limits.sponsoredDataRateLimit.unwrap().asBlocks.toNumber()).to.equal(6);111      }112113      await setCollectionLimitsExpectSuccess(alice, collectionId, {sponsoredDataRateLimit: 'SponsoringDisabled'});114      {115        const collection = (await getDetailedCollectionInfo(api, collectionId))!;116        // disabled sponsoring = default value117        expect(collection?.limits.sponsoredDataRateLimit.unwrap().isNone).to.true;118      }119    });120  });121});