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

difftreelog

source

tests/src/createMultipleItems.test.ts6.6 KiBsourcehistory
1//2// This file is subject to the terms and conditions defined in3// file 'LICENSE', which is part of this source code package.4//5import { ApiPromise } from '@polkadot/api';6import BN from 'bn.js';7import chai from 'chai';8import chaiAsPromised from 'chai-as-promised';9import privateKey from './substrate/privateKey';10import { default as usingApi, submitTransactionAsync, submitTransactionExpectFailAsync } from './substrate/substrate-api';11import {createCollectionExpectSuccess, destroyCollectionExpectSuccess} from './util/helpers';1213chai.use(chaiAsPromised);14const expect = chai.expect;1516interface ITokenDataType {17  Owner: number[];18  ConstData: number[];19  VariableData: number[];20}2122describe('Integration Test createMultipleItems(collection_id, owner, items_data):', () => {23  it('Create  0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain', async () => {24    await usingApi(async (api: ApiPromise) => {25      const collectionId = await createCollectionExpectSuccess();26      const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;27      expect(itemsListIndexBefore.toNumber()).to.be.equal(0);28      const Alice = privateKey('//Alice');29      const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];30      const createMultipleItemsTx = await api.tx.nft31        .createMultipleItems(collectionId, Alice.address, args);32      await submitTransactionAsync(Alice, createMultipleItemsTx);33      const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;34      expect(itemsListIndexAfter.toNumber()).to.be.equal(3);35      const token1Data = await api.query.nft.nftItemList(collectionId, 1) as unknown as ITokenDataType;36      const token2Data = await api.query.nft.nftItemList(collectionId, 2) as unknown as ITokenDataType;37      const token3Data = await api.query.nft.nftItemList(collectionId, 3) as unknown as ITokenDataType;3839      expect(token1Data.Owner.toString()).to.be.equal(Alice.address);40      expect(token2Data.Owner.toString()).to.be.equal(Alice.address);41      expect(token3Data.Owner.toString()).to.be.equal(Alice.address);4243      expect(token1Data.ConstData.toString()).to.be.equal('0x31');44      expect(token2Data.ConstData.toString()).to.be.equal('0x32');45      expect(token3Data.ConstData.toString()).to.be.equal('0x33');4647      expect(token1Data.VariableData.toString()).to.be.equal('0x31');48      expect(token2Data.VariableData.toString()).to.be.equal('0x32');49      expect(token3Data.VariableData.toString()).to.be.equal('0x33');5051      // garbage collection :-D52      await destroyCollectionExpectSuccess(collectionId);53    });54  });55});5657describe('Negative Integration Test createMultipleItems(collection_id, owner, items_data):', () => {58  it('Create token with not existing type', async () => {59    await usingApi(async (api: ApiPromise) => {60      const collectionId = await createCollectionExpectSuccess();61      const Alice = privateKey('//Alice');62      try {63        const createMultipleItemsTx = await api.tx.nft64          .createMultipleItems(collectionId, Alice.address, ['UNKNOWN', 'UNKNOWN', 'UNKNOWN']);65        await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;66      } catch (e) {67        // tslint:disable-next-line:no-unused-expression68        expect(e).to.be.exist;69      }70      // garbage collection :-D71      await destroyCollectionExpectSuccess(collectionId);72    });73  });7475  it('Create token in not existing collection', async () => {76    await usingApi(async (api: ApiPromise) => {77      const collectionId = await createCollectionExpectSuccess();78      const Alice = privateKey('//Alice');79      const createMultipleItemsTx = await api.tx.nft80        .createMultipleItems(collectionId + 1, Alice.address, ['NFT', 'NFT', 'NFT']);81      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;82      // garbage collection :-D83      await destroyCollectionExpectSuccess(collectionId);84    });85  });8687  it('Create NFT and Re-fungible tokens that has reached the maximum data limit', async () => {88    await usingApi(async (api: ApiPromise) => {89      // NFT90      const collectionId = await createCollectionExpectSuccess();91      const Alice = privateKey('//Alice');92      const args = [93        { nft: ['A'.repeat(2049), 'A'.repeat(2049)] },94        { nft: ['B'.repeat(2049), 'B'.repeat(2049)] },95        { nft: ['C'.repeat(2049), 'C'.repeat(2049)] },96      ];97      const createMultipleItemsTx = await api.tx.nft98        .createMultipleItems(collectionId, Alice.address, args);99      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;100      // garbage collection :-D101      await destroyCollectionExpectSuccess(collectionId);102103      // Fungible104      const collectionIdFungible = await createCollectionExpectSuccess();105      const argsFungible = [106        { fungible: parseInt('1'.repeat(2049), 10) },107        { fungible: parseInt('2'.repeat(2049), 10) },108        { fungible: parseInt('3'.repeat(2049), 10) },109      ];110      const createMultipleItemsTxFungible = await api.tx.nft111        .createMultipleItems(collectionIdFungible, Alice.address, argsFungible);112      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTxFungible)).to.be.rejected;113      // garbage collection :-D114      await destroyCollectionExpectSuccess(collectionId);115    });116  });117118  it('Create tokens with different types', async () => {119    await usingApi(async (api: ApiPromise) => {120      const collectionId = await createCollectionExpectSuccess();121      const Alice = privateKey('//Alice');122      const createMultipleItemsTx = await api.tx.nft123        .createMultipleItems(collectionId, Alice.address, ['NFT', 'Fungible', 'ReFungible']);124      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;125      // garbage collection :-D126      await destroyCollectionExpectSuccess(collectionId);127    });128  });129130  it('Create tokens with different data limits <> maximum data limit', async () => {131    await usingApi(async (api: ApiPromise) => {132      const collectionId = await createCollectionExpectSuccess();133      const Alice = privateKey('//Alice');134      const args = [135        { nft: ['A', 'A'] },136        { nft: ['B', 'B'.repeat(2049)] },137        { nft: ['C'.repeat(2049), 'C'] },138      ];139      const createMultipleItemsTx = await api.tx.nft140        .createMultipleItems(collectionId, Alice.address, args);141      await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;142      // garbage collection :-D143      await destroyCollectionExpectSuccess(collectionId);144    });145  });146});