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 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});