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

difftreelog

source

tests/src/setCollectionLimits.test.ts4.7 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 } 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: 'NFT'});36      console.log('collectionIdForTesting', collectionIdForTesting);37    });38  });39});4041describe('setCollectionLimits positive', () => {42  let tx;43  before(async () => {44    await usingApi(async () => {45      const keyring = new Keyring({ type: 'sr25519' });46      alice = keyring.addFromUri('//Alice');47    });48  });49  it('execute setCollectionLimits with predefined params ', async () => {50    await usingApi(async (api: ApiPromise) => {51      tx = api.tx.nft.setCollectionLimits(52        collectionIdForTesting,53        {54          accountTokenOwnershipLimit,55          sponsoredDataSize,56          sponsoredMintSize,57          tokenLimit,58        },59      );60      const events = await submitTransactionAsync(alice, tx);61      const result = getCreateItemResult(events);62      // tslint:disable-next-line:no-unused-expression63      expect(result.success).to.be.true;64    });65  });66  it('get collection limits defined in previous test', async () => {67    await usingApi(async (api: ApiPromise) => {68      const collectionInfo = await getDetailedCollectionInfo(api, collectionIdForTesting) as ICollectionInterface;69      expect(collectionInfo.Limits.AccountTokenOwnershipLimit.toNumber()).to.be.equal(accountTokenOwnershipLimit);70      expect(collectionInfo.Limits.SponsoredMintSize.toNumber()).to.be.equal(sponsoredMintSize);71      expect(collectionInfo.Limits.TokenLimit.toNumber()).to.be.equal(tokenLimit);72      expect(collectionInfo.Limits.SponsorTimeout.toNumber()).to.be.equal(sponsoredDataSize);73    });74  });75});7677describe('setCollectionLimits negative', () => {78  let tx;79  before(async () => {80    await usingApi(async () => {81      const keyring = new Keyring({ type: 'sr25519' });82      alice = keyring.addFromUri('//Alice');83      bob = keyring.addFromUri('//Bob');84    });85  });86  it('execute setCollectionLimits for not exists collection', async () => {87    await usingApi(async (api: ApiPromise) => {88      const collectionCount = await getCreatedCollectionCount(api);89      const nonExistedCollectionId = collectionCount + 1;90      tx = api.tx.nft.setCollectionLimits(91        nonExistedCollectionId,92        {93          accountTokenOwnershipLimit,94          sponsoredDataSize,95          sponsoredMintSize,96          tokenLimit,97        },98      );99      try {100        await submitTransactionAsync(alice, tx);101      } catch (e) {102        // tslint:disable-next-line:no-unused-expression103        expect(e).to.be.exist;104      }105    });106  });107  it('execute setCollectionLimits from user who is not owner of this collection', async () => {108    await usingApi(async (api: ApiPromise) => {109      tx = api.tx.nft.setCollectionLimits(110        collectionIdForTesting,111        {112          accountTokenOwnershipLimit,113          sponsoredDataSize,114          sponsoredMintSize,115          tokenLimit,116        },117      );118      try {119        await submitTransactionAsync(bob, tx);120      } catch (e) {121        // tslint:disable-next-line:no-unused-expression122        expect(e).to.be.exist;123      }124    });125  });126  it('execute setCollectionLimits with incorrect limits', async () => {127    await usingApi(async (api: ApiPromise) => {128      tx = api.tx.nft.setCollectionLimits(129        collectionIdForTesting,130        {131          accountTokenOwnershipLimit: 'awdawd',132          sponsorTransferTimeout: 'awd',133          sponsoredDataSize: '12312312312312312',134          tokenLimit: '-100',135        },136      );137      try {138        await submitTransactionAsync(alice, tx);139      } catch (e) {140        // tslint:disable-next-line:no-unused-expression141        expect(e).to.be.exist;142      }143    });144  });145});