git.delta.rocks / unique-network / refs/commits / 698c51fd21a7

difftreelog

fix move RMRK needed parts of deprecated helpers

Daniel Shiposha2022-10-11parent: #681fe40.patch.diff
in: master

20 files changed

modifiedtests/src/rmrk/acceptNft.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/acceptNft.test.ts
+++ b/tests/src/rmrk/acceptNft.test.ts
@@ -7,8 +7,7 @@
   acceptNft,
 } from './util/tx';
 import {NftIdTuple} from './util/fetch';
-import {isNftChildOfAnother, expectTxFailure} from './util/helpers';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
+import {isNftChildOfAnother, expectTxFailure, requirePallets, Pallets} from './util/helpers';
 
 describe('integration test: accept NFT', () => {
   let api: any;
modifiedtests/src/rmrk/addResource.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/addResource.test.ts
+++ b/tests/src/rmrk/addResource.test.ts
@@ -1,7 +1,7 @@
 import {expect} from 'chai';
 import {getApiConnection} from '../substrate/substrate-api';
 import {NftIdTuple} from './util/fetch';
-import {expectTxFailure, getResourceById} from './util/helpers';
+import {expectTxFailure, getResourceById, requirePallets, Pallets} from './util/helpers';
 import {
   addNftBasicResource,
   acceptNftResource,
@@ -12,7 +12,6 @@
   addNftComposableResource,
 } from './util/tx';
 import {RmrkTraitsResourceResourceInfo as ResourceInfo} from '@polkadot/types/lookup';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
 
 describe('integration test: add NFT resource', () => {
   const Alice = '//Alice';
modifiedtests/src/rmrk/addTheme.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/addTheme.test.ts
+++ b/tests/src/rmrk/addTheme.test.ts
@@ -1,9 +1,8 @@
 import {expect} from 'chai';
 import {getApiConnection} from '../substrate/substrate-api';
 import {createBase, addTheme} from './util/tx';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {getThemeNames} from './util/fetch';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
 
 describe('integration test: add Theme to Base', () => {
   let api: any;
modifiedtests/src/rmrk/burnNft.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/burnNft.test.ts
+++ b/tests/src/rmrk/burnNft.test.ts
@@ -1,11 +1,10 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {NftIdTuple, getChildren} from './util/fetch';
 import {burnNft, createCollection, sendNft, mintNft} from './util/tx';
 
 import chai from 'chai';
 import chaiAsPromised from 'chai-as-promised';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
modifiedtests/src/rmrk/changeCollectionIssuer.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/changeCollectionIssuer.test.ts
+++ b/tests/src/rmrk/changeCollectionIssuer.test.ts
@@ -1,6 +1,5 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {
   changeIssuer,
   createCollection,
modifiedtests/src/rmrk/createBase.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/createBase.test.ts
+++ b/tests/src/rmrk/createBase.test.ts
@@ -1,5 +1,5 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
+import {requirePallets, Pallets} from './util/helpers';
 import {createCollection, createBase} from './util/tx';
 
 describe('integration test: create new Base', () => {
modifiedtests/src/rmrk/createCollection.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/createCollection.test.ts
+++ b/tests/src/rmrk/createCollection.test.ts
@@ -1,5 +1,5 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
+import {requirePallets, Pallets} from './util/helpers';
 import {createCollection} from './util/tx';
 
 describe('Integration test: create new collection', () => {
modifiedtests/src/rmrk/deleteCollection.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/deleteCollection.test.ts
+++ b/tests/src/rmrk/deleteCollection.test.ts
@@ -1,6 +1,5 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {createCollection, deleteCollection} from './util/tx';
 
 describe('integration test: delete collection', () => {
modifiedtests/src/rmrk/equipNft.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/equipNft.test.ts
+++ b/tests/src/rmrk/equipNft.test.ts
@@ -1,9 +1,8 @@
 import {ApiPromise} from '@polkadot/api';
 import {expect} from 'chai';
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
 import {getNft, getParts, NftIdTuple} from './util/fetch';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {
   addNftComposableResource,
   addNftSlotResource,
modifiedtests/src/rmrk/getOwnedNfts.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/getOwnedNfts.test.ts
+++ b/tests/src/rmrk/getOwnedNfts.test.ts
@@ -1,6 +1,6 @@
 import {expect} from 'chai';
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
+import {requirePallets, Pallets} from './util/helpers';
 import {getOwnedNfts} from './util/fetch';
 import {mintNft, createCollection} from './util/tx';
 
modifiedtests/src/rmrk/lockCollection.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/lockCollection.test.ts
+++ b/tests/src/rmrk/lockCollection.test.ts
@@ -1,6 +1,5 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {createCollection, lockCollection, mintNft} from './util/tx';
 
 describe('integration test: lock collection', () => {
modifiedtests/src/rmrk/mintNft.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/mintNft.test.ts
+++ b/tests/src/rmrk/mintNft.test.ts
@@ -1,8 +1,7 @@
 import {expect} from 'chai';
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
 import {getNft} from './util/fetch';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {createCollection, mintNft} from './util/tx';
 
 describe('integration test: mint new NFT', () => {
modifiedtests/src/rmrk/rejectNft.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/rejectNft.test.ts
+++ b/tests/src/rmrk/rejectNft.test.ts
@@ -7,8 +7,7 @@
   rejectNft,
 } from './util/tx';
 import {getChildren, NftIdTuple} from './util/fetch';
-import {isNftChildOfAnother, expectTxFailure} from './util/helpers';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
+import {isNftChildOfAnother, expectTxFailure, requirePallets, Pallets} from './util/helpers';
 
 describe('integration test: reject NFT', () => {
   let api: any;
modifiedtests/src/rmrk/removeResource.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/removeResource.test.ts
+++ b/tests/src/rmrk/removeResource.test.ts
@@ -1,9 +1,8 @@
 import {expect} from 'chai';
 import privateKey from '../substrate/privateKey';
 import {executeTransaction, getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
 import {getNft, NftIdTuple} from './util/fetch';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {
   acceptNft, acceptResourceRemoval, addNftBasicResource,
   createBase,
modifiedtests/src/rmrk/sendNft.test.tsdiffbeforeafterboth
before · tests/src/rmrk/sendNft.test.ts
1import {expect} from 'chai';2import {getApiConnection} from '../substrate/substrate-api';3import {createCollection, mintNft, sendNft} from './util/tx';4import {NftIdTuple} from './util/fetch';5import {isNftChildOfAnother, expectTxFailure} from './util/helpers';6import {requirePallets, Pallets} from '../deprecated-helpers/helpers';78describe('integration test: send NFT', () => {9  let api: any;10  before(async function () {11    api = await getApiConnection();12    await requirePallets(this, [Pallets.RmrkCore]);13  });1415  const maxNftId = 0xFFFFFFFF;1617  const alice = '//Alice';18  const bob = '//Bob';1920  const createTestCollection = async (issuerUri: string) => {21    return await createCollection(22      api,23      issuerUri,24      'nft-collection-metadata',25      null,26      'nft-collection',27    );28  };293031  it('send NFT to another user', async () => {32    const originalOwnerUri = alice;33    const newOwnerUri = bob;3435    const collectionId = await createTestCollection(alice);3637    const nftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'nft-metadata');3839    await sendNft(api, 'sent', originalOwnerUri, collectionId, nftId, newOwnerUri);40  });4142  it('[negative] unable to send non-existing NFT', async () => {43    const originalOwnerUri = alice;44    const newOwnerUri = bob;4546    const collectionId = 0;47    const tx = sendNft(api, 'sent', originalOwnerUri, collectionId, maxNftId, newOwnerUri);4849    await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);50  });5152  it('[negative] unable to send NFT by a not-an-owner', async () => {53    const originalOwnerUri = alice;54    const newOwnerUri = bob;5556    const collectionId = await createTestCollection(alice);5758    const nftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'nft-metadata');5960    const tx = sendNft(api, 'sent', newOwnerUri, collectionId, nftId, newOwnerUri);61    await expectTxFailure(/rmrkCore\.NoPermission/, tx);62  });6364  it('send NFT to another NFT (same owner)', async () => {65    const originalOwnerUri = alice;6667    const collectionId = await createTestCollection(alice);6869    const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');70    const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');7172    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];7374    await sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);7576    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);77    expect(isChild).to.be.true;78  });7980  it('[negative] send non-existing NFT to another NFT', async () => {81    const originalOwnerUri = alice;8283    const collectionId = await createTestCollection(alice);8485    const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');86    const childNftId = maxNftId;8788    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];8990    const tx = sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);9192    await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);9394    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);95    expect(isChild).to.be.false;96  });9798  it('send NFT to another NFT (by not-an-owner)', async () => {99    const originalOwnerUri = alice;100101    const collectionId = await createTestCollection(alice);102103    const author = alice;104    const attacker = bob;105106    const parentNftId = await mintNft(api, author, originalOwnerUri, collectionId, 'parent-nft-metadata');107    const childNftId = await mintNft(api, author, originalOwnerUri, collectionId, 'child-nft-metadata');108109    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];110111    const tx = sendNft(api, 'sent', attacker, collectionId, childNftId, newOwnerNFT);112113    await expectTxFailure(/rmrkCore\.NoPermission/, tx);114115    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);116    expect(isChild).to.be.false;117  });118119  it('[negative] send NFT to non-existing NFT', async () => {120    const originalOwnerUri = alice;121122    const collectionId = await createTestCollection(alice);123124    const parentNftId = maxNftId;125    const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');126127    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];128129    const tx = sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);130131    await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);132133    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);134    expect(isChild).to.be.false;135  });136137  it('send NFT to another NFT owned by another user', async () => {138    const ownerAlice = alice;139    const ownerBob = bob;140141    const aliceCollectionId = await createTestCollection(alice);142    const bobCollectionId = await createTestCollection(bob);143144    const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');145    const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');146147    const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];148149    await sendNft(api, 'pending', bob, bobCollectionId, childNftId, newOwnerNFT);150  });151152  it('[negative] unable to send NFT to itself', async () => {153    const nftOwner = alice;154    const collectionId = await createTestCollection(alice);155156    const nftId = await mintNft(api, alice, nftOwner, collectionId, 'ouroboros-nft-metadata');157158    const newOwnerNFT: NftIdTuple = [collectionId, nftId];159160    const tx = sendNft(api, 'sent', alice, collectionId, nftId, newOwnerNFT);161162    await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);163164    const isChild = await isNftChildOfAnother(api, collectionId, nftId, newOwnerNFT);165    expect(isChild).to.be.false;166  });167168  it('[negative] unable to send NFT to child NFT', async () => {169    const originalOwnerUri = alice;170171    const collectionId = await createTestCollection(alice);172173    const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');174    const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');175176    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];177178    await sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);179180    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);181    expect(isChild).to.be.true;182183    const descendentOwner: NftIdTuple = [collectionId, childNftId];184    const tx = sendNft(api, 'sent', alice, collectionId, parentNftId, descendentOwner);185186    await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);187    const isOuroboros = await isNftChildOfAnother(api, collectionId, parentNftId, descendentOwner);188    expect(isOuroboros).to.be.false;189  });190191  it('[negative] unable to send NFT to descendent NFT', async () => {192    const originalOwnerUri = alice;193194    const collectionId = await createTestCollection(alice);195196    const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');197    const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');198    const grandsonNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'grandson-nft-metadata');199200    const ownerParentNFT: NftIdTuple = [collectionId, parentNftId];201202    await sendNft(api, 'sent', alice, collectionId, childNftId, ownerParentNFT);203204    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, ownerParentNFT);205    expect(isChild).to.be.true;206207    const ownerChildNFT: NftIdTuple = [collectionId, childNftId];208    await sendNft(api, 'sent', alice, collectionId, grandsonNftId, ownerChildNFT);209210    const isGrandson = await isNftChildOfAnother(api, collectionId, grandsonNftId, ownerChildNFT);211    expect(isGrandson).to.be.true;212213    const ownerGrandsonNFT: NftIdTuple = [collectionId, grandsonNftId];214    const tx = sendNft(api, 'sent', alice, collectionId, parentNftId, ownerGrandsonNFT);215216    await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);217    const isOuroboros = await isNftChildOfAnother(api, collectionId, parentNftId, ownerGrandsonNFT);218    expect(isOuroboros).to.be.false;219  });220221  it('send nested NFT to another user', async () => {222    const originalOwner = alice;223    const newOwner = bob;224225    const collectionId = await createTestCollection(alice);226227    const parentNftId = await mintNft(api, alice, originalOwner, collectionId, 'parent-nft-metadata');228    const childNftId = await mintNft(api, alice, originalOwner, collectionId, 'child-nft-metadata');229230    const parentNftTuple: NftIdTuple = [collectionId, parentNftId];231232    await sendNft(api, 'sent', originalOwner, collectionId, childNftId, parentNftTuple);233234    await sendNft(api, 'sent', originalOwner, collectionId, childNftId, newOwner);235  });236237  it('[negative] send nested NFT to another user (by a not-root-owner)', async () => {238    const originalOwner = alice;239    const newOwner = bob;240241    const collectionId = await createTestCollection(alice);242243    const parentNftId = await mintNft(api, alice, originalOwner, collectionId, 'parent-nft-metadata');244    const childNftId = await mintNft(api, alice, originalOwner, collectionId, 'child-nft-metadata');245246    const parentNftTuple: NftIdTuple = [collectionId, parentNftId];247248    await sendNft(api, 'sent', originalOwner, collectionId, childNftId, parentNftTuple);249250    const tx = sendNft(api, 'sent', newOwner, collectionId, childNftId, newOwner);251252    await expectTxFailure(/rmrkCore\.NoPermission/, tx);253  });254255  after(() => { api.disconnect(); });256});
after · tests/src/rmrk/sendNft.test.ts
1import {expect} from 'chai';2import {getApiConnection} from '../substrate/substrate-api';3import {createCollection, mintNft, sendNft} from './util/tx';4import {NftIdTuple} from './util/fetch';5import {isNftChildOfAnother, expectTxFailure, requirePallets, Pallets} from './util/helpers';67describe('integration test: send NFT', () => {8  let api: any;9  before(async function () {10    api = await getApiConnection();11    await requirePallets(this, [Pallets.RmrkCore]);12  });1314  const maxNftId = 0xFFFFFFFF;1516  const alice = '//Alice';17  const bob = '//Bob';1819  const createTestCollection = async (issuerUri: string) => {20    return await createCollection(21      api,22      issuerUri,23      'nft-collection-metadata',24      null,25      'nft-collection',26    );27  };282930  it('send NFT to another user', async () => {31    const originalOwnerUri = alice;32    const newOwnerUri = bob;3334    const collectionId = await createTestCollection(alice);3536    const nftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'nft-metadata');3738    await sendNft(api, 'sent', originalOwnerUri, collectionId, nftId, newOwnerUri);39  });4041  it('[negative] unable to send non-existing NFT', async () => {42    const originalOwnerUri = alice;43    const newOwnerUri = bob;4445    const collectionId = 0;46    const tx = sendNft(api, 'sent', originalOwnerUri, collectionId, maxNftId, newOwnerUri);4748    await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);49  });5051  it('[negative] unable to send NFT by a not-an-owner', async () => {52    const originalOwnerUri = alice;53    const newOwnerUri = bob;5455    const collectionId = await createTestCollection(alice);5657    const nftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'nft-metadata');5859    const tx = sendNft(api, 'sent', newOwnerUri, collectionId, nftId, newOwnerUri);60    await expectTxFailure(/rmrkCore\.NoPermission/, tx);61  });6263  it('send NFT to another NFT (same owner)', async () => {64    const originalOwnerUri = alice;6566    const collectionId = await createTestCollection(alice);6768    const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');69    const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');7071    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];7273    await sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);7475    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);76    expect(isChild).to.be.true;77  });7879  it('[negative] send non-existing NFT to another NFT', async () => {80    const originalOwnerUri = alice;8182    const collectionId = await createTestCollection(alice);8384    const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');85    const childNftId = maxNftId;8687    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];8889    const tx = sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);9091    await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);9293    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);94    expect(isChild).to.be.false;95  });9697  it('send NFT to another NFT (by not-an-owner)', async () => {98    const originalOwnerUri = alice;99100    const collectionId = await createTestCollection(alice);101102    const author = alice;103    const attacker = bob;104105    const parentNftId = await mintNft(api, author, originalOwnerUri, collectionId, 'parent-nft-metadata');106    const childNftId = await mintNft(api, author, originalOwnerUri, collectionId, 'child-nft-metadata');107108    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];109110    const tx = sendNft(api, 'sent', attacker, collectionId, childNftId, newOwnerNFT);111112    await expectTxFailure(/rmrkCore\.NoPermission/, tx);113114    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);115    expect(isChild).to.be.false;116  });117118  it('[negative] send NFT to non-existing NFT', async () => {119    const originalOwnerUri = alice;120121    const collectionId = await createTestCollection(alice);122123    const parentNftId = maxNftId;124    const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');125126    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];127128    const tx = sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);129130    await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);131132    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);133    expect(isChild).to.be.false;134  });135136  it('send NFT to another NFT owned by another user', async () => {137    const ownerAlice = alice;138    const ownerBob = bob;139140    const aliceCollectionId = await createTestCollection(alice);141    const bobCollectionId = await createTestCollection(bob);142143    const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');144    const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');145146    const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];147148    await sendNft(api, 'pending', bob, bobCollectionId, childNftId, newOwnerNFT);149  });150151  it('[negative] unable to send NFT to itself', async () => {152    const nftOwner = alice;153    const collectionId = await createTestCollection(alice);154155    const nftId = await mintNft(api, alice, nftOwner, collectionId, 'ouroboros-nft-metadata');156157    const newOwnerNFT: NftIdTuple = [collectionId, nftId];158159    const tx = sendNft(api, 'sent', alice, collectionId, nftId, newOwnerNFT);160161    await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);162163    const isChild = await isNftChildOfAnother(api, collectionId, nftId, newOwnerNFT);164    expect(isChild).to.be.false;165  });166167  it('[negative] unable to send NFT to child NFT', async () => {168    const originalOwnerUri = alice;169170    const collectionId = await createTestCollection(alice);171172    const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');173    const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');174175    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];176177    await sendNft(api, 'sent', alice, collectionId, childNftId, newOwnerNFT);178179    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, newOwnerNFT);180    expect(isChild).to.be.true;181182    const descendentOwner: NftIdTuple = [collectionId, childNftId];183    const tx = sendNft(api, 'sent', alice, collectionId, parentNftId, descendentOwner);184185    await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);186    const isOuroboros = await isNftChildOfAnother(api, collectionId, parentNftId, descendentOwner);187    expect(isOuroboros).to.be.false;188  });189190  it('[negative] unable to send NFT to descendent NFT', async () => {191    const originalOwnerUri = alice;192193    const collectionId = await createTestCollection(alice);194195    const parentNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'parent-nft-metadata');196    const childNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'child-nft-metadata');197    const grandsonNftId = await mintNft(api, alice, originalOwnerUri, collectionId, 'grandson-nft-metadata');198199    const ownerParentNFT: NftIdTuple = [collectionId, parentNftId];200201    await sendNft(api, 'sent', alice, collectionId, childNftId, ownerParentNFT);202203    const isChild = await isNftChildOfAnother(api, collectionId, childNftId, ownerParentNFT);204    expect(isChild).to.be.true;205206    const ownerChildNFT: NftIdTuple = [collectionId, childNftId];207    await sendNft(api, 'sent', alice, collectionId, grandsonNftId, ownerChildNFT);208209    const isGrandson = await isNftChildOfAnother(api, collectionId, grandsonNftId, ownerChildNFT);210    expect(isGrandson).to.be.true;211212    const ownerGrandsonNFT: NftIdTuple = [collectionId, grandsonNftId];213    const tx = sendNft(api, 'sent', alice, collectionId, parentNftId, ownerGrandsonNFT);214215    await expectTxFailure(/rmrkCore\.CannotSendToDescendentOrSelf/, tx);216    const isOuroboros = await isNftChildOfAnother(api, collectionId, parentNftId, ownerGrandsonNFT);217    expect(isOuroboros).to.be.false;218  });219220  it('send nested NFT to another user', async () => {221    const originalOwner = alice;222    const newOwner = bob;223224    const collectionId = await createTestCollection(alice);225226    const parentNftId = await mintNft(api, alice, originalOwner, collectionId, 'parent-nft-metadata');227    const childNftId = await mintNft(api, alice, originalOwner, collectionId, 'child-nft-metadata');228229    const parentNftTuple: NftIdTuple = [collectionId, parentNftId];230231    await sendNft(api, 'sent', originalOwner, collectionId, childNftId, parentNftTuple);232233    await sendNft(api, 'sent', originalOwner, collectionId, childNftId, newOwner);234  });235236  it('[negative] send nested NFT to another user (by a not-root-owner)', async () => {237    const originalOwner = alice;238    const newOwner = bob;239240    const collectionId = await createTestCollection(alice);241242    const parentNftId = await mintNft(api, alice, originalOwner, collectionId, 'parent-nft-metadata');243    const childNftId = await mintNft(api, alice, originalOwner, collectionId, 'child-nft-metadata');244245    const parentNftTuple: NftIdTuple = [collectionId, parentNftId];246247    await sendNft(api, 'sent', originalOwner, collectionId, childNftId, parentNftTuple);248249    const tx = sendNft(api, 'sent', newOwner, collectionId, childNftId, newOwner);250251    await expectTxFailure(/rmrkCore\.NoPermission/, tx);252  });253254  after(() => { api.disconnect(); });255});
modifiedtests/src/rmrk/setCollectionProperty.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/setCollectionProperty.test.ts
+++ b/tests/src/rmrk/setCollectionProperty.test.ts
@@ -1,6 +1,5 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {createCollection, setPropertyCollection} from './util/tx';
 
 describe('integration test: set collection property', () => {
modifiedtests/src/rmrk/setEquippableList.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/setEquippableList.test.ts
+++ b/tests/src/rmrk/setEquippableList.test.ts
@@ -1,6 +1,5 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {createCollection, createBase, setEquippableList} from './util/tx';
 
 describe("integration test: set slot's Equippable List", () => {
modifiedtests/src/rmrk/setNftProperty.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/setNftProperty.test.ts
+++ b/tests/src/rmrk/setNftProperty.test.ts
@@ -1,7 +1,6 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
 import {NftIdTuple} from './util/fetch';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {createCollection, mintNft, sendNft, setNftProperty} from './util/tx';
 
 describe('integration test: set NFT property', () => {
modifiedtests/src/rmrk/setResourcePriorities.test.tsdiffbeforeafterboth
--- a/tests/src/rmrk/setResourcePriorities.test.ts
+++ b/tests/src/rmrk/setResourcePriorities.test.ts
@@ -1,6 +1,5 @@
 import {getApiConnection} from '../substrate/substrate-api';
-import {requirePallets, Pallets} from '../deprecated-helpers/helpers';
-import {expectTxFailure} from './util/helpers';
+import {expectTxFailure, requirePallets, Pallets} from './util/helpers';
 import {mintNft, createCollection, setResourcePriorities} from './util/tx';
 
 describe('integration test: set NFT resource priorities', () => {
modifiedtests/src/rmrk/util/helpers.tsdiffbeforeafterboth
--- a/tests/src/rmrk/util/helpers.ts
+++ b/tests/src/rmrk/util/helpers.ts
@@ -10,6 +10,8 @@
 import {NftIdTuple, getChildren, getOwnedNfts, getCollectionProperties, getNftProperties, getResources} from './fetch';
 import chaiAsPromised from 'chai-as-promised';
 import chai from 'chai';
+import {getApiConnection} from '../../substrate/substrate-api';
+import {Context} from 'mocha';
 
 chai.use(chaiAsPromised);
 const expect = chai.expect;
@@ -19,6 +21,45 @@
     successData: T | null;
 }
 
+export enum Pallets {
+  Inflation = 'inflation',
+  RmrkCore = 'rmrkcore',
+  RmrkEquip = 'rmrkequip',
+  ReFungible = 'refungible',
+  Fungible = 'fungible',
+  NFT = 'nonfungible',
+  Scheduler = 'scheduler',
+  AppPromotion = 'apppromotion',
+}
+
+let modulesNames: any;
+export function getModuleNames(api: ApiPromise): string[] {
+  if (typeof modulesNames === 'undefined')
+    modulesNames = api.runtimeMetadata.asLatest.pallets.map(m => m.name.toString().toLowerCase());
+  return modulesNames;
+}
+
+export async function missingRequiredPallets(requiredPallets: string[]): Promise<string[]> {
+  const api = await getApiConnection();
+  const pallets = getModuleNames(api);
+
+  return requiredPallets.filter(p => !pallets.includes(p));
+}
+
+export async function requirePallets(mocha: Context, requiredPallets: string[]) {
+  const missingPallets = await missingRequiredPallets(requiredPallets);
+
+  if (missingPallets.length > 0) {
+    const skippingTestMsg = `\tSkipping test "${mocha.test?.title}".`;
+    const missingPalletsMsg = `\tThe following pallets are missing:\n\t- ${missingPallets.join('\n\t- ')}`;
+    const skipMsg = `${skippingTestMsg}\n${missingPalletsMsg}`;
+
+    console.error('\x1b[38:5:208m%s\x1b[0m', skipMsg);
+
+    mocha.skip();
+  }
+}
+
 export function makeNftOwner(api: ApiPromise, owner: string | NftIdTuple): NftOwner {
   const isNftSending = (typeof owner !== 'string');