git.delta.rocks / unique-network / refs/commits / 4640cd75b996

difftreelog

source

tests/src/setCollectionLimits.test.ts4.4 KiBsourcehistory
1// https://unique-network.readthedocs.io/en/latest/jsapi.html#setchainlimits2import { ApiPromise, Keyring } from '@polkadot/api';3import { IKeyringPair } from '@polkadot/types/types';4import chai from 'chai';5import chaiAsPromised from 'chai-as-promised';6import usingApi, {submitTransactionAsync, submitTransactionExpectFailAsync} from './substrate/substrate-api';7import { ICollectionInterface } from './types';8import {9  createCollectionExpectSuccess, getCreatedCollectionCount,10  getCreateItemResult,11  getDetailedCollectionInfo,12} from './util/helpers';1314chai.use(chaiAsPromised);15const expect = chai.expect;1617let alice: IKeyringPair;18let bob: IKeyringPair;19let collectionIdForTesting: number;2021const accountTokenOwnershipLimit = 0;22const sponsoredDataSize = 0;23const sponsoredMintSize = 0;24const tokenLimit = 0;2526describe('hooks', () => {27  before(async () => {28    await usingApi(async () => {29      const keyring = new Keyring({ type: 'sr25519' });30      alice = keyring.addFromUri('//Alice');31    });32  });33  it('choose or create collection for testing', async () => {34    await usingApi(async () => {35      collectionIdForTesting = await createCollectionExpectSuccess({name: 'A', description: 'B', tokenPrefix: 'C', mode: {type: 'NFT'}});36    });37  });38});3940describe('setCollectionLimits positive', () => {41  let tx;42  before(async () => {43    await usingApi(async () => {44      const keyring = new Keyring({ type: 'sr25519' });45      alice = keyring.addFromUri('//Alice');46    });47  });48  it('execute setCollectionLimits with predefined params ', async () => {49    await usingApi(async (api: ApiPromise) => {50      tx = api.tx.nft.setCollectionLimits(51        collectionIdForTesting,52        {53          accountTokenOwnershipLimit,54          sponsoredDataSize,55          sponsoredMintSize,56          tokenLimit,57        },58      );59      const events = await submitTransactionAsync(alice, tx);60      const result = getCreateItemResult(events);61      // tslint:disable-next-line:no-unused-expression62      expect(result.success).to.be.true;63    });64  });65  it('get collection limits defined in previous test', async () => {66    await usingApi(async (api: ApiPromise) => {67      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;68      expect(collectionInfo.Limits.AccountTokenOwnershipLimit.toNumber()).to.be.equal(accountTokenOwnershipLimit);69      expect(collectionInfo.Limits.SponsoredMintSize.toNumber()).to.be.equal(sponsoredMintSize);70      expect(collectionInfo.Limits.TokenLimit.toNumber()).to.be.equal(tokenLimit);71      expect(collectionInfo.Limits.SponsorTimeout.toNumber()).to.be.equal(sponsoredDataSize);72    });73  });74});7576describe('setCollectionLimits negative', () => {77  let tx;78  before(async () => {79    await usingApi(async () => {80      const keyring = new Keyring({ type: 'sr25519' });81      alice = keyring.addFromUri('//Alice');82      bob = keyring.addFromUri('//Bob');83    });84  });85  it('execute setCollectionLimits for not exists collection', async () => {86    await usingApi(async (api: ApiPromise) => {87      const collectionCount = await getCreatedCollectionCount(api);88      const nonExistedCollectionId = collectionCount + 1;89      tx = api.tx.nft.setCollectionLimits(90        nonExistedCollectionId,91        {92          accountTokenOwnershipLimit,93          sponsoredDataSize,94          sponsoredMintSize,95          tokenLimit,96        },97      );98      await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;99    });100  });101  it('execute setCollectionLimits from user who is not owner of this collection', async () => {102    await usingApi(async (api: ApiPromise) => {103      tx = api.tx.nft.setCollectionLimits(104        collectionIdForTesting,105        {106          accountTokenOwnershipLimit,107          sponsoredDataSize,108          sponsoredMintSize,109          tokenLimit,110        },111      );112      await expect(submitTransactionExpectFailAsync(bob, tx)).to.be.rejected;113    });114  });115  it('execute setCollectionLimits with incorrect limits', async () => {116    await usingApi(async (api: ApiPromise) => {117      tx = api.tx.nft.setCollectionLimits(118        collectionIdForTesting,119        {120          accountTokenOwnershipLimit: 'awdawd',121          sponsorTransferTimeout: 'awd',122          sponsoredDataSize: '12312312312312312',123          tokenLimit: '-100',124        },125      );126      await expect(submitTransactionExpectFailAsync(alice, tx)).to.be.rejected;127    });128  });129});