difftreelog
fixes
in: master
3 files changed
tests/src/createMultipleItems.test.tsdiffbeforeafterboth1//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});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 {12 createCollectionExpectSuccess,13 destroyCollectionExpectSuccess,14 IReFungibleTokenDataType,15} from './util/helpers';1617chai.use(chaiAsPromised);18const expect = chai.expect;1920interface ITokenDataType {21 Owner: number[];22 ConstData: number[];23 VariableData: number[];24}2526describe('Integration Test createMultipleItems(collection_id, owner, items_data):', () => {27 it('Create 0x31, 0x32, 0x33 items in active NFT collection and verify tokens data in chain', async () => {28 await usingApi(async (api: ApiPromise) => {29 const collectionId = await createCollectionExpectSuccess();30 const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;31 expect(itemsListIndexBefore.toNumber()).to.be.equal(0);32 const Alice = privateKey('//Alice');33 const args = [{ nft: ['0x31', '0x31'] }, { nft: ['0x32', '0x32'] }, { nft: ['0x33', '0x33'] }];34 const createMultipleItemsTx = await api.tx.nft35 .createMultipleItems(collectionId, Alice.address, args);36 await submitTransactionAsync(Alice, createMultipleItemsTx);37 const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;38 expect(itemsListIndexAfter.toNumber()).to.be.equal(3);39 const token1Data = await api.query.nft.nftItemList(collectionId, 1) as unknown as ITokenDataType;40 const token2Data = await api.query.nft.nftItemList(collectionId, 2) as unknown as ITokenDataType;41 const token3Data = await api.query.nft.nftItemList(collectionId, 3) as unknown as ITokenDataType;4243 expect(token1Data.Owner.toString()).to.be.equal(Alice.address);44 expect(token2Data.Owner.toString()).to.be.equal(Alice.address);45 expect(token3Data.Owner.toString()).to.be.equal(Alice.address);4647 expect(token1Data.ConstData.toString()).to.be.equal('0x31');48 expect(token2Data.ConstData.toString()).to.be.equal('0x32');49 expect(token3Data.ConstData.toString()).to.be.equal('0x33');5051 expect(token1Data.VariableData.toString()).to.be.equal('0x31');52 expect(token2Data.VariableData.toString()).to.be.equal('0x32');53 expect(token3Data.VariableData.toString()).to.be.equal('0x33');54 });55 });5657 it('Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async () => {58 await usingApi(async (api: ApiPromise) => {59 const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});60 const itemsListIndexBefore = await api.query.nft.itemListIndex(collectionId) as unknown as BN;61 expect(itemsListIndexBefore.toNumber()).to.be.equal(0);62 const Alice = privateKey('//Alice');63 const args = [64 { Refungible: ['0x31', '0x31'] },65 { Refungible: ['0x32', '0x32'] },66 { Refungible: ['0x33', '0x33'] },67 ];68 const createMultipleItemsTx = await api.tx.nft69 .createMultipleItems(collectionId, Alice.address, args);70 await submitTransactionAsync(Alice, createMultipleItemsTx);71 const itemsListIndexAfter = await api.query.nft.itemListIndex(collectionId) as unknown as BN;72 expect(itemsListIndexAfter.toNumber()).to.be.equal(3);73 const token1Data = await api.query.nft.reFungibleItemList(collectionId, 1) as unknown as IReFungibleTokenDataType;74 const token2Data = await api.query.nft.reFungibleItemList(collectionId, 2) as unknown as IReFungibleTokenDataType;75 const token3Data = await api.query.nft.reFungibleItemList(collectionId, 3) as unknown as IReFungibleTokenDataType;7677 expect(token1Data.Owner[0].Owner.toString()).to.be.equal(Alice.address);78 expect(token1Data.Owner[0].Fraction.toNumber()).to.be.equal(1);7980 expect(token2Data.Owner[0].Owner.toString()).to.be.equal(Alice.address);81 expect(token2Data.Owner[0].Fraction.toNumber()).to.be.equal(1);8283 expect(token3Data.Owner[0].Owner.toString()).to.be.equal(Alice.address);84 expect(token3Data.Owner[0].Fraction.toNumber()).to.be.equal(1);8586 expect(token1Data.ConstData.toString()).to.be.equal('0x31');87 expect(token2Data.ConstData.toString()).to.be.equal('0x32');88 expect(token3Data.ConstData.toString()).to.be.equal('0x33');8990 expect(token1Data.VariableData.toString()).to.be.equal('0x31');91 expect(token2Data.VariableData.toString()).to.be.equal('0x32');92 expect(token3Data.VariableData.toString()).to.be.equal('0x33');93 });94 });95});9697describe('Negative Integration Test createMultipleItems(collection_id, owner, items_data):', () => {98 it('Create token with not existing type', async () => {99 await usingApi(async (api: ApiPromise) => {100 const collectionId = await createCollectionExpectSuccess();101 const Alice = privateKey('//Alice');102 try {103 const args = [{ invalid: null }, { invalid: null }, { invalid: null }];104 const createMultipleItemsTx = await api.tx.nft105 .createMultipleItems(collectionId, Alice.address, args);106 await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;107 } catch (e) {108 // tslint:disable-next-line:no-unused-expression109 expect(e).to.be.exist;110 }111 });112 });113114 it('Create token in not existing collection', async () => {115 await usingApi(async (api: ApiPromise) => {116 const collectionId = await createCollectionExpectSuccess();117 const Alice = privateKey('//Alice');118 const createMultipleItemsTx = await api.tx.nft119 .createMultipleItems(collectionId + 1, Alice.address, ['NFT', 'NFT', 'NFT']);120 await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;121 });122 });123124 it('Create NFT and Re-fungible tokens that has reached the maximum data limit', async () => {125 await usingApi(async (api: ApiPromise) => {126 // NFT127 const collectionId = await createCollectionExpectSuccess();128 const Alice = privateKey('//Alice');129 const args = [130 { nft: ['A'.repeat(2049), 'A'.repeat(2049)] },131 { nft: ['B'.repeat(2049), 'B'.repeat(2049)] },132 { nft: ['C'.repeat(2049), 'C'.repeat(2049)] },133 ];134 const createMultipleItemsTx = await api.tx.nft135 .createMultipleItems(collectionId, Alice.address, args);136 await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;137138 // ReFungible139 const collectionIdReFungible =140 await createCollectionExpectSuccess({mode: {type: 'ReFungible', decimalPoints: 0}});141 const argsReFungible = [142 { ReFungible: ['1'.repeat(2049), '1'.repeat(2049)] },143 { ReFungible: ['2'.repeat(2049), '2'.repeat(2049)] },144 { ReFungible: ['3'.repeat(2049), '3'.repeat(2049)] },145 ];146 const createMultipleItemsTxFungible = await api.tx.nft147 .createMultipleItems(collectionIdReFungible, Alice.address, argsReFungible);148 await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTxFungible)).to.be.rejected;149 });150 });151152 it('Create tokens with different types', async () => {153 await usingApi(async (api: ApiPromise) => {154 const collectionId = await createCollectionExpectSuccess();155 const Alice = privateKey('//Alice');156 const createMultipleItemsTx = await api.tx.nft157 .createMultipleItems(collectionId, Alice.address, ['NFT', 'Fungible', 'ReFungible']);158 await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;159 // garbage collection :-D160 await destroyCollectionExpectSuccess(collectionId);161 });162 });163164 it('Create tokens with different data limits <> maximum data limit', async () => {165 await usingApi(async (api: ApiPromise) => {166 const collectionId = await createCollectionExpectSuccess();167 const Alice = privateKey('//Alice');168 const args = [169 { nft: ['A', 'A'] },170 { nft: ['B', 'B'.repeat(2049)] },171 { nft: ['C'.repeat(2049), 'C'] },172 ];173 const createMultipleItemsTx = await api.tx.nft174 .createMultipleItems(collectionId, Alice.address, args);175 await expect(submitTransactionExpectFailAsync(Alice, createMultipleItemsTx)).to.be.rejected;176 });177 });178});tests/src/substrate/substrate-api.tsdiffbeforeafterboth--- a/tests/src/substrate/substrate-api.ts
+++ b/tests/src/substrate/substrate-api.ts
@@ -102,12 +102,9 @@
try {
await transaction.signAndSend(sender, ({ events = [], status }) => {
const transactionStatus = getTransactionStatus(events, status);
-
- console.log('transactionStatus', transactionStatus, 'events', events);
-
- if (transactionStatus == TransactionStatus.Success) {
+ if (transactionStatus === TransactionStatus.Success) {
resolve(events);
- } else if (transactionStatus == TransactionStatus.Fail) {
+ } else if (transactionStatus === TransactionStatus.Fail) {
reject(events);
}
});
tests/src/util/helpers.tsdiffbeforeafterboth--- a/tests/src/util/helpers.ts
+++ b/tests/src/util/helpers.ts
@@ -51,7 +51,7 @@
Value: BN;
}
-interface IReFungibleTokenDataType {
+export interface IReFungibleTokenDataType {
Owner: IReFungibleOwner[];
ConstData: number[];
VariableData: number[];