123456import { IKeyringPair } from '@polkadot/types/types';7import privateKey from './substrate/privateKey';8import usingApi from './substrate/substrate-api';9import {10 confirmSponsorshipExpectSuccess,11 createCollectionExpectSuccess,12 createItemExpectSuccess,13 findNotExistingCollection,14 findUnusedAddress,15 setCollectionLimitsExpectSuccess,16 setCollectionSponsorExpectSuccess,17 setVariableMetaDataExpectFailure,18 setVariableMetaDataExpectSuccess,19 setVariableMetaDataSponsoringRateLimitExpectFailure,20 setVariableMetaDataSponsoringRateLimitExpectSuccess,21} from './util/helpers';2223describe('Integration Test setVariableMetadataSponsoringRateLimit', () => {24 let alice: IKeyringPair;25 let userWithNoBalance: IKeyringPair;2627 before(async () => {28 await usingApi(async (api) => {29 alice = privateKey('//Alice');30 userWithNoBalance = await findUnusedAddress(api);31 });32 });3334 it('sponsored setVariableMetaData can be called twice with pause for free', async () => {35 const collectionId = await createCollectionExpectSuccess();36 await setCollectionSponsorExpectSuccess(collectionId, alice.address);37 await confirmSponsorshipExpectSuccess(collectionId);38 await setVariableMetaDataSponsoringRateLimitExpectSuccess(alice, collectionId, 1);3940 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);41 await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);42 await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);43 });4445 it('sponsored setVariableMetaData can\'t be called twice without pause for free', async () => {46 const collectionId = await createCollectionExpectSuccess();47 await setCollectionSponsorExpectSuccess(collectionId, alice.address);48 await confirmSponsorshipExpectSuccess(collectionId);49 await setVariableMetaDataSponsoringRateLimitExpectSuccess(alice, collectionId, 10);5051 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);52 await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1, 2, 3]);53 await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2, 3]);54 });5556 it('sponsored setVariableMetaData can\'t be called for free with variable metadata above collection limits', async () => {57 const collectionId = await createCollectionExpectSuccess();58 await setCollectionSponsorExpectSuccess(collectionId, alice.address);59 await confirmSponsorshipExpectSuccess(collectionId);60 await setVariableMetaDataSponsoringRateLimitExpectSuccess(alice, collectionId, 1);61 await setCollectionLimitsExpectSuccess(alice, collectionId, {62 SponsoredDataSize: 1,63 });64 const itemId = await createItemExpectSuccess(alice, collectionId, 'NFT', userWithNoBalance.address);6566 await setVariableMetaDataExpectSuccess(userWithNoBalance, collectionId, itemId, [1]);67 await setVariableMetaDataExpectFailure(userWithNoBalance, collectionId, itemId, [1, 2]);68 });69});7071describe('Negative Integration Test setVariableMetadataSponsoringRateLimit', () => {72 let alice: IKeyringPair;73 let nonExistingCollection: number;7475 before(async () => {76 await usingApi(async (api) => {77 alice = privateKey('//Alice');78 nonExistingCollection = await findNotExistingCollection(api);79 });80 });8182 it('fails when called with non-existing collection id', async () => {83 await setVariableMetaDataSponsoringRateLimitExpectFailure(alice, nonExistingCollection, 1);84 });8586 it('fails when called by non collection sponsor', async () => {87 const collectionId = await createCollectionExpectSuccess();88 await setVariableMetaDataSponsoringRateLimitExpectFailure(alice, collectionId, 1);89 });90});