From 3d7ffe75f2a8c951ed2f13e7fdeb27975e196b0d Mon Sep 17 00:00:00 2001 From: Daniel Shiposha Date: Tue, 09 Aug 2022 16:45:25 +0000 Subject: [PATCH] fix: skip refungible and scheduler tests on qtz/unq --- --- a/tests/src/approve.test.ts +++ b/tests/src/approve.test.ts @@ -32,6 +32,8 @@ getCreatedCollectionCount, transferFromExpectSuccess, transferFromExpectFail, + requirePallets, + Pallets } from './util/helpers'; chai.use(chaiAsPromised); @@ -49,34 +51,44 @@ }); }); - it('Execute the extrinsic and check approvedList', async () => { + it('[nft] Execute the extrinsic and check approvedList', async () => { const nftCollectionId = await createCollectionExpectSuccess(); - // nft const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address); - // fungible + }); + + it('[fungible] Execute the extrinsic and check approvedList', async () => { const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address); - // reFungible + }); + + it('[refungible] Execute the extrinsic and check approvedList', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address); }); - it('Remove approval by using 0 amount', async () => { + it('[nft] Remove approval by using 0 amount', async () => { const nftCollectionId = await createCollectionExpectSuccess(); - // nft const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address, 1); await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address, 0); - // fungible + }); + + it('[fungible] Remove approval by using 0 amount', async () => { const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address, 1); await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address, 0); - // reFungible + }); + + it('[refungible] Remove approval by using 0 amount', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); @@ -117,7 +129,9 @@ await approveExpectSuccess(collectionId, itemId, bob, charlie.address); }); - it('ReFungible up to an approved amount', async () => { + it('ReFungible up to an approved amount', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}}); const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', bob.address); await approveExpectSuccess(collectionId, itemId, bob, charlie.address); @@ -151,7 +165,9 @@ await transferFromExpectSuccess(collectionId, itemId, charlie, bob, alice, 1, 'Fungible'); }); - it('ReFungible up to an approved amount', async () => { + it('ReFungible up to an approved amount', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}}); const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', bob.address); await approveExpectSuccess(collectionId, itemId, bob, charlie.address); @@ -188,7 +204,9 @@ await transferFromExpectFail(collectionId, itemId, charlie, bob, alice, 1); }); - it('ReFungible up to an approved amount', async () => { + it('ReFungible up to an approved amount', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}}); const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', bob.address); await approveExpectSuccess(collectionId, itemId, bob, charlie.address); @@ -250,7 +268,9 @@ await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, bob, charlie, 1); }); - it('ReFungible', async () => { + it('ReFungible', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); @@ -285,7 +305,9 @@ await approveExpectFail(fungibleCollectionId, newFungibleTokenId, bob, charlie, 11); }); - it('ReFungible', async () => { + it('ReFungible', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, bob, charlie, 101); @@ -325,7 +347,9 @@ await transferFromExpectSuccess(collectionId, itemId, bob, dave, alice, 1, 'Fungible'); }); - it('ReFungible up to an approved amount', async () => { + it('ReFungible up to an approved amount', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collectionId = await createCollectionExpectSuccess({mode:{type: 'ReFungible'}}); await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true}); const itemId = await createItemExpectSuccess(alice, collectionId, 'ReFungible', charlie.address); @@ -422,63 +446,87 @@ }); }); - it('Approve for a collection that does not exist', async () => { + it('[nft] Approve for a collection that does not exist', async () => { await usingApi(async (api: ApiPromise) => { - // nft const nftCollectionCount = await getCreatedCollectionCount(api); await approveExpectFail(nftCollectionCount + 1, 1, alice, bob); - // fungible + }); + }); + + it('[fungible] Approve for a collection that does not exist', async () => { + await usingApi(async (api: ApiPromise) => { const fungibleCollectionCount = await getCreatedCollectionCount(api); await approveExpectFail(fungibleCollectionCount + 1, 0, alice, bob); - // reFungible + }); + }); + + it('[refungible] Approve for a collection that does not exist', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + await usingApi(async (api: ApiPromise) => { const reFungibleCollectionCount = await getCreatedCollectionCount(api); await approveExpectFail(reFungibleCollectionCount + 1, 1, alice, bob); }); }); - it('Approve for a collection that was destroyed', async () => { - // nft + it('[nft] Approve for a collection that was destroyed', async () => { const nftCollectionId = await createCollectionExpectSuccess(); await destroyCollectionExpectSuccess(nftCollectionId); await approveExpectFail(nftCollectionId, 1, alice, bob); - // fungible + }); + + it('Approve for a collection that was destroyed', async () => { const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); await destroyCollectionExpectSuccess(fungibleCollectionId); await approveExpectFail(fungibleCollectionId, 0, alice, bob); - // reFungible + }); + + it('[refungible] Approve for a collection that was destroyed', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await destroyCollectionExpectSuccess(reFungibleCollectionId); await approveExpectFail(reFungibleCollectionId, 1, alice, bob); }); - it('Approve transfer of a token that does not exist', async () => { - // nft + it('[nft] Approve transfer of a token that does not exist', async () => { const nftCollectionId = await createCollectionExpectSuccess(); await approveExpectFail(nftCollectionId, 2, alice, bob); - // reFungible + }); + + it('[refungible] Approve transfer of a token that does not exist', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await approveExpectFail(reFungibleCollectionId, 2, alice, bob); }); - it('Approve using the address that does not own the approved token', async () => { + it('[nft] Approve using the address that does not own the approved token', async () => { const nftCollectionId = await createCollectionExpectSuccess(); - // nft const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); await approveExpectFail(nftCollectionId, newNftTokenId, bob, alice); - // fungible + }); + + it('[fungible] Approve using the address that does not own the approved token', async () => { const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); await approveExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice); - // reFungible + }); + + it('[refungible] Approve using the address that does not own the approved token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); await approveExpectFail(reFungibleCollectionId, newReFungibleTokenId, bob, alice); }); - it('should fail if approved more ReFungibles than owned', async () => { + it('should fail if approved more ReFungibles than owned', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const nftCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'ReFungible'); await transferExpectSuccess(nftCollectionId, newNftTokenId, alice, bob, 100, 'ReFungible'); --- a/tests/src/burnItem.test.ts +++ b/tests/src/burnItem.test.ts @@ -25,6 +25,8 @@ getBalance, setCollectionLimitsExpectSuccess, isTokenExists, + requirePallets, + Pallets } from './util/helpers'; import chai from 'chai'; @@ -80,7 +82,9 @@ }); }); - it('Burn item in ReFungible collection', async () => { + it('Burn item in ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const createMode = 'ReFungible'; const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}}); const tokenId = await createItemExpectSuccess(alice, collectionId, createMode); @@ -99,7 +103,9 @@ }); }); - it('Burn owned portion of item in ReFungible collection', async () => { + it('Burn owned portion of item in ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const createMode = 'ReFungible'; const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}}); const tokenId = await createItemExpectSuccess(alice, collectionId, createMode); @@ -189,7 +195,9 @@ }); // TODO: burnFrom - it('Burn item in ReFungible collection', async () => { + it('Burn item in ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const createMode = 'ReFungible'; const collectionId = await createCollectionExpectSuccess({mode: {type: createMode}}); await setCollectionLimitsExpectSuccess(alice, collectionId, {ownerCanTransfer: true}); --- a/tests/src/confirmSponsorship.test.ts +++ b/tests/src/confirmSponsorship.test.ts @@ -33,6 +33,8 @@ addCollectionAdminExpectSuccess, getCreatedCollectionCount, UNIQUE, + requirePallets, + Pallets } from './util/helpers'; import {IKeyringPair} from '@polkadot/types/types'; @@ -124,7 +126,9 @@ }); }); - it('ReFungible: Transfer fees are paid by the sponsor after confirmation', async () => { + it('ReFungible: Transfer fees are paid by the sponsor after confirmation', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await setCollectionSponsorExpectSuccess(collectionId, bob.address); await confirmSponsorshipExpectSuccess(collectionId, '//Bob'); @@ -252,7 +256,9 @@ }); }); - it('ReFungible: Sponsoring is rate limited', async () => { + it('ReFungible: Sponsoring is rate limited', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await setCollectionSponsorExpectSuccess(collectionId, bob.address); await confirmSponsorshipExpectSuccess(collectionId, '//Bob'); --- a/tests/src/createCollection.test.ts +++ b/tests/src/createCollection.test.ts @@ -16,7 +16,7 @@ import {expect} from 'chai'; import usingApi, {executeTransaction, submitTransactionAsync} from './substrate/substrate-api'; -import {createCollectionWithPropsExpectFailure, createCollectionExpectFailure, createCollectionExpectSuccess, getCreateCollectionResult, getDetailedCollectionInfo, createCollectionWithPropsExpectSuccess} from './util/helpers'; +import {createCollectionWithPropsExpectFailure, createCollectionExpectFailure, createCollectionExpectSuccess, getCreateCollectionResult, getDetailedCollectionInfo, createCollectionWithPropsExpectSuccess, requirePallets, Pallets} from './util/helpers'; describe('integration test: ext. createCollection():', () => { it('Create new NFT collection', async () => { @@ -34,7 +34,9 @@ it('Create new Fungible collection', async () => { await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); }); - it('Create new ReFungible collection', async () => { + it('Create new ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); }); --- a/tests/src/createItem.test.ts +++ b/tests/src/createItem.test.ts @@ -29,6 +29,8 @@ itApi, normalizeAccountId, getCreateItemResult, + requirePallets, + Pallets } from './util/helpers'; const expect = chai.expect; @@ -79,7 +81,9 @@ } }); - it('Create new item in ReFungible collection', async () => { + it('Create new item in ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const createMode = 'ReFungible'; const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode}}); await createItemExpectSuccess(alice, newCollectionID, createMode); @@ -96,7 +100,9 @@ await addCollectionAdminExpectSuccess(alice, newCollectionID, bob.address); await createItemExpectSuccess(bob, newCollectionID, createMode); }); - it('Create new item in ReFungible collection with collection admin permissions', async () => { + it('Create new item in ReFungible collection with collection admin permissions', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const createMode = 'ReFungible'; const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode}}); await addCollectionAdminExpectSuccess(alice, newCollectionID, bob.address); @@ -175,7 +181,9 @@ }); }); - it('Check total pieces of ReFungible token', async () => { + it('Check total pieces of ReFungible token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const createMode = 'ReFungible'; const createCollectionResult = await createCollection(api, alice, {mode: {type: createMode}}); @@ -219,7 +227,9 @@ const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode, decimalPoints: 0}}); await expect(createItemExpectSuccess(bob, newCollectionID, createMode)).to.be.rejected; }); - it('Regular user cannot create new item in ReFungible collection', async () => { + it('Regular user cannot create new item in ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const createMode = 'ReFungible'; const newCollectionID = await createCollectionExpectSuccess({mode: {type: createMode}}); await expect(createItemExpectSuccess(bob, newCollectionID, createMode)).to.be.rejected; @@ -296,7 +306,9 @@ }); }); - it('Check total pieces for invalid Refungible token', async () => { + it('Check total pieces for invalid Refungible token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const createCollectionResult = await createCollection(api, alice, {mode: {type: 'ReFungible'}}); const collectionId = createCollectionResult.collectionId; --- a/tests/src/createMultipleItems.test.ts +++ b/tests/src/createMultipleItems.test.ts @@ -33,6 +33,9 @@ createCollectionWithPropsExpectSuccess, createMultipleItemsWithPropsExpectSuccess, getTokenProperties, + requirePallets, + Pallets, + checkPalletsPresence } from './util/helpers'; chai.use(chaiAsPromised); @@ -91,7 +94,9 @@ }); }); - it('Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async () => { + it('Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api, privateKeyWrapper) => { const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const itemsListIndexBefore = await getLastTokenId(api, collectionId); @@ -272,7 +277,9 @@ }); }); - it('Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async () => { + it('Create 0x31, 0x32, 0x33 items in active ReFungible collection and verify tokens data in chain', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api: ApiPromise) => { const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const itemsListIndexBefore = await getLastTokenId(api, collectionId); @@ -335,7 +342,9 @@ }); }); - it('Regular user cannot create items in active ReFungible collection', async () => { + it('Regular user cannot create items in active ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api: ApiPromise) => { const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const itemsListIndexBefore = await getLastTokenId(api, collectionId); @@ -358,9 +367,8 @@ }); }); - it('Create NFT and Re-fungible tokens that has reached the maximum data limit', async () => { + it('Create NFTs that has reached the maximum data limit', async function() { await usingApi(async (api, privateKeyWrapper) => { - // NFT const collectionId = await createCollectionWithPropsExpectSuccess({ propPerm: [{key: 'key', permission: {mutable: true, collectionAdmin: true, tokenOwner: true}}], }); @@ -372,8 +380,13 @@ ]; const createMultipleItemsTx = api.tx.unique.createMultipleItems(collectionId, normalizeAccountId(alice.address), args); await expect(submitTransactionExpectFailAsync(alice, createMultipleItemsTx)).to.be.rejected; + }); + }); - // ReFungible + it('Create Refungible tokens that has reached the maximum data limit', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + await usingApi(async api => { const collectionIdReFungible = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); { @@ -402,8 +415,15 @@ it('Create tokens with different types', async () => { await usingApi(async (api: ApiPromise) => { const collectionId = await createCollectionExpectSuccess(); + + let types = ['NFT', 'Fungible']; + + if (await checkPalletsPresence([Pallets.ReFungible])) { + types.push('ReFungible'); + } + const createMultipleItemsTx = api.tx.unique - .createMultipleItems(collectionId, normalizeAccountId(alice.address), ['NFT', 'Fungible', 'ReFungible']); + .createMultipleItems(collectionId, normalizeAccountId(alice.address), types); await expect(executeTransaction(api, alice, createMultipleItemsTx)).to.be.rejectedWith(/nonfungible\.NotNonfungibleDataUsedToMintFungibleCollectionToken/); // garbage collection :-D // lol await destroyCollectionExpectSuccess(collectionId); --- a/tests/src/createMultipleItemsEx.test.ts +++ b/tests/src/createMultipleItemsEx.test.ts @@ -16,7 +16,7 @@ import {expect} from 'chai'; import usingApi, {executeTransaction} from './substrate/substrate-api'; -import {addCollectionAdminExpectSuccess, createCollectionExpectSuccess, createCollectionWithPropsExpectSuccess, getBalance, getLastTokenId, getTokenProperties} from './util/helpers'; +import {addCollectionAdminExpectSuccess, createCollectionExpectSuccess, createCollectionWithPropsExpectSuccess, getBalance, getLastTokenId, getTokenProperties, requirePallets, Pallets} from './util/helpers'; describe.only('Integration Test: createMultipleItemsEx', () => { it('can initialize multiple NFT with different owners', async () => { @@ -146,7 +146,9 @@ }); }); - it('can initialize an RFT with multiple owners', async () => { + it('can initialize an RFT with multiple owners', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api, privateKeyWrapper) => { const alice = privateKeyWrapper('//Alice'); const bob = privateKeyWrapper('//Bob'); @@ -178,7 +180,9 @@ }); }); - it('can initialize multiple RFTs with the same owner', async () => { + it('can initialize multiple RFTs with the same owner', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api, privateKeyWrapper) => { const alice = privateKeyWrapper('//Alice'); const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); @@ -389,7 +393,9 @@ }); }); - it('fails when trying to set multiple owners when creating multiple refungibles', async () => { + it('fails when trying to set multiple owners when creating multiple refungibles', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await usingApi(async (api, privateKeyWrapper) => { --- a/tests/src/destroyCollection.test.ts +++ b/tests/src/destroyCollection.test.ts @@ -25,6 +25,8 @@ addCollectionAdminExpectSuccess, getCreatedCollectionCount, createItemExpectSuccess, + requirePallets, + Pallets } from './util/helpers'; chai.use(chaiAsPromised); @@ -38,7 +40,9 @@ const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); await destroyCollectionExpectSuccess(collectionId); }); - it('ReFungible collection can be destroyed', async () => { + it('ReFungible collection can be destroyed', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await destroyCollectionExpectSuccess(collectionId); }); --- a/tests/src/eth/createRFTCollection.test.ts +++ b/tests/src/eth/createRFTCollection.test.ts @@ -16,7 +16,7 @@ import {evmToAddress} from '@polkadot/util-crypto'; import {expect} from 'chai'; -import {getCreatedCollectionCount, getDetailedCollectionInfo} from '../util/helpers'; +import {getCreatedCollectionCount, getDetailedCollectionInfo, requirePallets, Pallets} from '../util/helpers'; import { evmCollectionHelpers, collectionIdToAddress, @@ -28,6 +28,10 @@ } from './util/helpers'; describe('Create RFT collection from EVM', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('Create collection', async ({api, web3, privateKeyWrapper}) => { const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const collectionHelper = evmCollectionHelpers(web3, owner); @@ -146,6 +150,10 @@ }); describe('(!negative tests!) Create RFT collection from EVM', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('(!negative test!) Create collection (bad lengths)', async ({api, web3, privateKeyWrapper}) => { const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const helper = evmCollectionHelpers(web3, owner); @@ -228,4 +236,4 @@ .setCollectionLimit('badLimit', 'true') .call()).to.be.rejectedWith('unknown boolean limit "badLimit"'); }); -}); \ No newline at end of file +}); --- a/tests/src/eth/reFungible.test.ts +++ b/tests/src/eth/reFungible.test.ts @@ -14,12 +14,16 @@ // You should have received a copy of the GNU General Public License // along with Unique Network. If not, see . -import {createCollectionExpectSuccess, UNIQUE} from '../util/helpers'; +import {createCollectionExpectSuccess, UNIQUE, requirePallets, Pallets} from '../util/helpers'; import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, evmCollection, evmCollectionHelpers, GAS_ARGS, getCollectionAddressFromResult, itWeb3, normalizeEvents, recordEthFee, recordEvents, tokenIdToAddress} from './util/helpers'; import reFungibleTokenAbi from './reFungibleTokenAbi.json'; import {expect} from 'chai'; describe('Refungible: Information getting', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('totalSupply', async ({api, web3, privateKeyWrapper}) => { const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const helper = evmCollectionHelpers(web3, caller); @@ -120,6 +124,10 @@ }); describe('Refungible: Plain calls', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('Can perform mint()', async ({web3, api, privateKeyWrapper}) => { const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const helper = evmCollectionHelpers(web3, owner); @@ -399,6 +407,10 @@ }); describe('RFT: Fees', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('transferFrom() call fee is less than 0.2UNQ', async ({web3, api, privateKeyWrapper}) => { const caller = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const helper = evmCollectionHelpers(web3, caller); @@ -435,6 +447,10 @@ }); describe('Common metadata', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('Returns collection name', async ({api, web3, privateKeyWrapper}) => { const collection = await createCollectionExpectSuccess({ name: 'token name', @@ -462,4 +478,4 @@ expect(symbol).to.equal('TOK'); }); -}); \ No newline at end of file +}); --- a/tests/src/eth/reFungibleToken.test.ts +++ b/tests/src/eth/reFungibleToken.test.ts @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Unique Network. If not, see . -import {approve, createCollection, createRefungibleToken, transfer, transferFrom, UNIQUE} from '../util/helpers'; +import {approve, createCollection, createRefungibleToken, transfer, transferFrom, UNIQUE, requirePallets, Pallets} from '../util/helpers'; import {collectionIdToAddress, createEthAccount, createEthAccountWithBalance, evmCollection, evmCollectionHelpers, GAS_ARGS, getCollectionAddressFromResult, itWeb3, normalizeEvents, recordEthFee, recordEvents, subToEth, tokenIdToAddress, transferBalanceToEth} from './util/helpers'; import reFungibleTokenAbi from './reFungibleTokenAbi.json'; @@ -24,6 +24,10 @@ const expect = chai.expect; describe('Refungible token: Information getting', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('totalSupply', async ({api, web3, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); @@ -75,6 +79,10 @@ // FIXME: Need erc721 for ReFubgible. describe('Check ERC721 token URI for ReFungible', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('Empty tokenURI', async ({web3, api, privateKeyWrapper}) => { const owner = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const helper = evmCollectionHelpers(web3, owner); @@ -216,6 +224,10 @@ }); describe('Refungible: Plain calls', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('Can perform approve()', async ({web3, api, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); @@ -477,6 +489,10 @@ }); describe('Refungible: Fees', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('approve() call fee is less than 0.2UNQ', async ({web3, api, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); @@ -532,6 +548,10 @@ }); describe('Refungible: Substrate calls', () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + }); + itWeb3('Events emitted for approve()', async ({web3, api, privateKeyWrapper}) => { const alice = privateKeyWrapper('//Alice'); --- a/tests/src/eth/scheduling.test.ts +++ b/tests/src/eth/scheduling.test.ts @@ -16,9 +16,13 @@ import {expect} from 'chai'; import {createEthAccountWithBalance, deployFlipper, GAS_ARGS, itWeb3, subToEth, transferBalanceToEth} from './util/helpers'; -import {scheduleExpectSuccess, waitNewBlocks} from '../util/helpers'; +import {scheduleExpectSuccess, waitNewBlocks, requirePallets, Pallets} from '../util/helpers'; describe('Scheduing EVM smart contracts', () => { + before(async function() { + await requirePallets(this, [Pallets.Scheduler]); + }); + itWeb3('Successfully schedules and periodically executes an EVM contract', async ({api, web3, privateKeyWrapper}) => { const deployer = await createEthAccountWithBalance(api, web3, privateKeyWrapper); const flipper = await deployFlipper(web3, deployer); @@ -51,4 +55,4 @@ expect(await flipper.methods.getValue().call()).to.be.equal(initialValue); } }); -}); \ No newline at end of file +}); --- a/tests/src/limits.test.ts +++ b/tests/src/limits.test.ts @@ -27,6 +27,8 @@ transferExpectSuccess, getFreeBalance, waitNewBlocks, burnItemExpectSuccess, + requirePallets, + Pallets } from './util/helpers'; import {expect} from 'chai'; @@ -67,7 +69,9 @@ describe('Number of tokens per address (ReFungible)', () => { let alice: IKeyringPair; - before(async () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api, privateKeyWrapper) => { alice = privateKeyWrapper('//Alice'); }); @@ -367,7 +371,9 @@ let bob: IKeyringPair; let charlie: IKeyringPair; - before(async () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api, privateKeyWrapper) => { alice = privateKeyWrapper('//Alice'); bob = privateKeyWrapper('//Bob'); --- a/tests/src/nesting/nest.test.ts +++ b/tests/src/nesting/nest.test.ts @@ -17,6 +17,8 @@ transferExpectSuccess, transferFromExpectSuccess, setCollectionLimitsExpectSuccess, + requirePallets, + Pallets } from '../util/helpers'; import {IKeyringPair} from '@polkadot/types/types'; @@ -311,7 +313,9 @@ // ---------- Re-Fungible ---------- - it('ReFungible: allows an Owner to nest/unnest their token', async () => { + it('ReFungible: allows an Owner to nest/unnest their token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true}}); @@ -333,7 +337,9 @@ }); }); - it('ReFungible: allows an Owner to nest/unnest their token (Restricted nesting)', async () => { + it('ReFungible: allows an Owner to nest/unnest their token (Restricted nesting)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); const targetToken = await createItemExpectSuccess(alice, collectionNFT, 'NFT', {Substrate: alice.address}); @@ -715,7 +721,9 @@ // ---------- Re-Fungible ---------- - it('ReFungible: disallows to nest token if nesting is disabled', async () => { + it('ReFungible: disallows to nest token if nesting is disabled', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {}}); @@ -745,7 +753,9 @@ }); }); - it('ReFungible: disallows a non-Owner to nest someone else\'s token', async () => { + it('ReFungible: disallows a non-Owner to nest someone else\'s token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true}}); @@ -773,7 +783,9 @@ }); }); - it('ReFungible: disallows a non-Owner to nest someone else\'s token (Restricted nesting)', async () => { + it('ReFungible: disallows a non-Owner to nest someone else\'s token (Restricted nesting)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await addToAllowListExpectSuccess(alice, collectionNFT, bob.address); @@ -800,7 +812,9 @@ }); }); - it('ReFungible: disallows to nest token to an unlisted collection', async () => { + it('ReFungible: disallows to nest token to an unlisted collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const collectionNFT = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await setCollectionPermissionsExpectSuccess(alice, collectionNFT, {nesting: {tokenOwner: true, restricted:[]}}); --- a/tests/src/nesting/properties.test.ts +++ b/tests/src/nesting/properties.test.ts @@ -8,6 +8,8 @@ createItemExpectSuccess, getCreateCollectionResult, transferExpectSuccess, + requirePallets, + Pallets } from '../util/helpers'; import {IKeyringPair} from '@polkadot/types/types'; import {tokenIdToAddress} from '../eth/util/helpers'; @@ -64,7 +66,9 @@ await testMakeSureSuppliesRequired({type: 'NFT'}); }); - it('Makes sure collectionById supplies required fields for ReFungible', async () => { + it('Makes sure collectionById supplies required fields for ReFungible', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testMakeSureSuppliesRequired({type: 'ReFungible'}); }); }); @@ -120,7 +124,9 @@ it('Sets properties for a NFT collection', async () => { await testSetsPropertiesForCollection('NFT'); }); - it('Sets properties for a ReFungible collection', async () => { + it('Sets properties for a ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testSetsPropertiesForCollection('ReFungible'); }); @@ -178,7 +184,9 @@ it('Check valid names for NFT collection properties keys', async () => { await testCheckValidNames('NFT'); }); - it('Check valid names for ReFungible collection properties keys', async () => { + it('Check valid names for ReFungible collection properties keys', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testCheckValidNames('ReFungible'); }); @@ -209,7 +217,9 @@ it('Changes properties of a NFT collection', async () => { await testChangesProperties({type: 'NFT'}); }); - it('Changes properties of a ReFungible collection', async () => { + it('Changes properties of a ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testChangesProperties({type: 'ReFungible'}); }); @@ -238,7 +248,9 @@ it('Deletes properties of a NFT collection', async () => { await testDeleteProperties({type: 'NFT'}); }); - it('Deletes properties of a ReFungible collection', async () => { + it('Deletes properties of a ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testDeleteProperties({type: 'ReFungible'}); }); }); @@ -269,7 +281,9 @@ it('Fails to set properties in a NFT collection if not its onwer/administrator', async () => { await testFailsSetPropertiesIfNotOwnerOrAdmin({type: 'NFT'}); }); - it('Fails to set properties in a ReFungible collection if not its onwer/administrator', async () => { + it('Fails to set properties in a ReFungible collection if not its onwer/administrator', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testFailsSetPropertiesIfNotOwnerOrAdmin({type: 'ReFungible'}); }); @@ -307,7 +321,9 @@ it('Fails to set properties that exceed the limits (NFT)', async () => { await testFailsSetPropertiesThatExeedLimits({type: 'NFT'}); }); - it('Fails to set properties that exceed the limits (ReFungible)', async () => { + it('Fails to set properties that exceed the limits (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testFailsSetPropertiesThatExeedLimits({type: 'ReFungible'}); }); @@ -337,7 +353,9 @@ it('Fails to set more properties than it is allowed (NFT)', async () => { await testFailsSetMorePropertiesThanAllowed({type: 'NFT'}); }); - it('Fails to set more properties than it is allowed (ReFungible)', async () => { + it('Fails to set more properties than it is allowed (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testFailsSetMorePropertiesThanAllowed({type: 'ReFungible'}); }); @@ -392,7 +410,9 @@ it('Fails to set properties with invalid names (NFT)', async () => { await testFailsSetPropertiesWithInvalidNames({type: 'NFT'}); }); - it('Fails to set properties with invalid names (ReFungible)', async () => { + it('Fails to set properties with invalid names (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testFailsSetPropertiesWithInvalidNames({type: 'ReFungible'}); }); }); @@ -443,7 +463,9 @@ it('Sets access rights to properties of a collection (NFT)', async () => { await testSetsAccessRightsToProperties({type: 'NFT'}); }); - it('Sets access rights to properties of a collection (ReFungible)', async () => { + it('Sets access rights to properties of a collection (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testSetsAccessRightsToProperties({type: 'ReFungible'}); }); @@ -472,7 +494,9 @@ it('Changes access rights to properties of a NFT collection', async () => { await testChangesAccessRightsToProperty({type: 'NFT'}); }); - it('Changes access rights to properties of a ReFungible collection', async () => { + it('Changes access rights to properties of a ReFungible collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testChangesAccessRightsToProperty({type: 'ReFungible'}); }); }); @@ -502,7 +526,9 @@ it('Prevents from setting access rights to properties of a NFT collection if not an onwer/admin', async () => { await testPreventsFromSettingAccessRightsNotAdminOrOwner({type: 'NFT'}); }); - it('Prevents from setting access rights to properties of a ReFungible collection if not an onwer/admin', async () => { + it('Prevents from setting access rights to properties of a ReFungible collection if not an onwer/admin', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testPreventsFromSettingAccessRightsNotAdminOrOwner({type: 'ReFungible'}); }); @@ -531,7 +557,9 @@ it('Prevents from adding too many possible properties (NFT)', async () => { await testPreventFromAddingTooManyPossibleProperties({type: 'NFT'}); }); - it('Prevents from adding too many possible properties (ReFungible)', async () => { + it('Prevents from adding too many possible properties (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testPreventFromAddingTooManyPossibleProperties({type: 'ReFungible'}); }); @@ -560,7 +588,9 @@ it('Prevents access rights to be modified if constant (NFT)', async () => { await testPreventAccessRightsModifiedIfConstant({type: 'NFT'}); }); - it('Prevents access rights to be modified if constant (ReFungible)', async () => { + it('Prevents access rights to be modified if constant (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testPreventAccessRightsModifiedIfConstant({type: 'ReFungible'}); }); @@ -608,7 +638,9 @@ it('Prevents adding properties with invalid names (NFT)', async () => { await testPreventsAddingPropertiesWithInvalidNames({type: 'NFT'}); }); - it('Prevents adding properties with invalid names (ReFungible)', async () => { + it('Prevents adding properties with invalid names (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testPreventsAddingPropertiesWithInvalidNames({type: 'ReFungible'}); }); }); @@ -651,7 +683,9 @@ it('Reads yet empty properties of a token (NFT)', async () => { await testReadsYetEmptyProperties({type: 'NFT'}); }); - it('Reads yet empty properties of a token (ReFungible)', async () => { + it('Reads yet empty properties of a token (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testReadsYetEmptyProperties({type: 'ReFungible'}); }); @@ -696,7 +730,9 @@ it('Assigns properties to a token according to permissions (NFT)', async () => { await testAssignPropertiesAccordingToPermissions({type: 'NFT'}, 1); }); - it('Assigns properties to a token according to permissions (ReFungible)', async () => { + it('Assigns properties to a token according to permissions (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testAssignPropertiesAccordingToPermissions({type: 'ReFungible'}, 100); }); @@ -749,7 +785,9 @@ it('Changes properties of a token according to permissions (NFT)', async () => { await testChangesPropertiesAccordingPermission({type: 'NFT'}, 1); }); - it('Changes properties of a token according to permissions (ReFungible)', async () => { + it('Changes properties of a token according to permissions (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testChangesPropertiesAccordingPermission({type: 'ReFungible'}, 100); }); @@ -802,7 +840,9 @@ it('Deletes properties of a token according to permissions (NFT)', async () => { await testDeletePropertiesAccordingPermission({type: 'NFT'}, 1); }); - it('Deletes properties of a token according to permissions (ReFungible)', async () => { + it('Deletes properties of a token according to permissions (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testDeletePropertiesAccordingPermission({type: 'ReFungible'}, 100); }); @@ -1029,7 +1069,9 @@ it('Forbids changing/deleting properties of a token if the user is outside of permissions (NFT)', async () => { await testForbidsChangingDeletingPropertiesUserOutsideOfPermissions({type: 'NFT'}, 1); }); - it('Forbids changing/deleting properties of a token if the user is outside of permissions (ReFungible)', async () => { + it('Forbids changing/deleting properties of a token if the user is outside of permissions (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testForbidsChangingDeletingPropertiesUserOutsideOfPermissions({type: 'ReFungible'}, 100); }); @@ -1062,7 +1104,9 @@ it('Forbids changing/deleting properties of a token if the property is permanent (immutable) (NFT)', async () => { await testForbidsChangingDeletingPropertiesIfPropertyImmutable({type: 'NFT'}, 1); }); - it('Forbids changing/deleting properties of a token if the property is permanent (immutable) (ReFungible)', async () => { + it('Forbids changing/deleting properties of a token if the property is permanent (immutable) (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testForbidsChangingDeletingPropertiesIfPropertyImmutable({type: 'ReFungible'}, 100); }); @@ -1096,7 +1140,9 @@ it('Forbids adding properties to a token if the property is not declared / forbidden with the \'None\' permission (NFT)', async () => { await testForbidsAddingPropertiesIfPropertyNotDeclared({type: 'NFT'}, 1); }); - it('Forbids adding properties to a token if the property is not declared / forbidden with the \'None\' permission (ReFungible)', async () => { + it('Forbids adding properties to a token if the property is not declared / forbidden with the \'None\' permission (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testForbidsAddingPropertiesIfPropertyNotDeclared({type: 'ReFungible'}, 100); }); @@ -1140,7 +1186,9 @@ it('Forbids adding too many properties to a token (NFT)', async () => { await testForbidsAddingTooManyProperties({type: 'NFT'}, 1); }); - it('Forbids adding too many properties to a token (ReFungible)', async () => { + it('Forbids adding too many properties to a token (ReFungible)', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await testForbidsAddingTooManyProperties({type: 'ReFungible'}, 100); }); }); @@ -1149,7 +1197,9 @@ let collection: number; let token: number; - before(async () => { + before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api, privateKeyWrapper) => { alice = privateKeyWrapper('//Alice'); bob = privateKeyWrapper('//Bob'); --- a/tests/src/nesting/rules-smoke.test.ts +++ b/tests/src/nesting/rules-smoke.test.ts @@ -1,7 +1,7 @@ import {expect} from 'chai'; import {tokenIdToAddress} from '../eth/util/helpers'; import usingApi, {executeTransaction} from '../substrate/substrate-api'; -import {createCollectionExpectSuccess, createFungibleItemExpectSuccess, createItemExpectSuccess, CrossAccountId, getCreateCollectionResult} from '../util/helpers'; +import {createCollectionExpectSuccess, createFungibleItemExpectSuccess, createItemExpectSuccess, CrossAccountId, getCreateCollectionResult, requirePallets, Pallets} from '../util/helpers'; import {IKeyringPair} from '@polkadot/types/types'; describe('nesting check', () => { @@ -47,7 +47,9 @@ }); }); - it('called for refungible', async () => { + it('called for refungible', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await expect(executeTransaction(api, alice, api.tx.unique.createItem(collection, nestTarget, {ReFungible: {}}))) --- a/tests/src/nesting/unnest.test.ts +++ b/tests/src/nesting/unnest.test.ts @@ -10,6 +10,8 @@ setCollectionPermissionsExpectSuccess, transferExpectSuccess, transferFromExpectSuccess, + requirePallets, + Pallets } from '../util/helpers'; import {IKeyringPair} from '@polkadot/types/types'; @@ -80,7 +82,9 @@ }); }); - it('ReFungible: allows the owner to successfully unnest a token', async () => { + it('ReFungible: allows the owner to successfully unnest a token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async api => { const collection = await createCollectionExpectSuccess({mode: {type: 'NFT'}}); await setCollectionPermissionsExpectSuccess(alice, collection, {nesting: {tokenOwner: true}}); --- a/tests/src/nextSponsoring.test.ts +++ b/tests/src/nextSponsoring.test.ts @@ -27,6 +27,8 @@ transferExpectSuccess, normalizeAccountId, getNextSponsored, + requirePallets, + Pallets } from './util/helpers'; chai.use(chaiAsPromised); @@ -89,7 +91,9 @@ }); }); - it('ReFungible', async () => { + it('ReFungible', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api: ApiPromise) => { const createMode = 'ReFungible'; --- a/tests/src/pallet-presence.test.ts +++ b/tests/src/pallet-presence.test.ts @@ -49,8 +49,6 @@ 'inflation', 'unique', 'nonfungible', - 'refungible', - 'scheduler', 'charging', ]; @@ -66,8 +64,16 @@ await usingApi(async api => { const chain = await api.rpc.system.chain(); - if (!chain.eq('UNIQUE')) { - requiredPallets.push(...['rmrkcore', 'rmrkequip']); + const refungible = 'refungible'; + const scheduler = 'scheduler'; + const rmrkPallets = ['rmrkcore', 'rmrkequip']; + + if (chain.eq('OPAL by UNIQUE')) { + requiredPallets.push(refungible, scheduler, ...rmrkPallets); + } else if (chain.eq('QUARTZ by UNIQUE')) { + // Insert Quartz additional pallets here + } else if (chain.eq('UNIQUE')) { + // Insert Unique additional pallets here } }); }); --- a/tests/src/refungible.test.ts +++ b/tests/src/refungible.test.ts @@ -38,6 +38,7 @@ getDestroyItemsResult, getModuleNames, Pallets, + requirePallets } from './util/helpers'; import chai from 'chai'; @@ -52,6 +53,8 @@ describe('integration test: Refungible functionality:', async () => { before(async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api, privateKeyWrapper) => { alice = privateKeyWrapper('//Alice'); bob = privateKeyWrapper('//Bob'); --- a/tests/src/rmrk/acceptNft.test.ts +++ b/tests/src/rmrk/acceptNft.test.ts @@ -14,7 +14,7 @@ let api: any; before(async function() { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); --- a/tests/src/rmrk/addResource.test.ts +++ b/tests/src/rmrk/addResource.test.ts @@ -27,7 +27,7 @@ let api: any; before(async function() { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); it('add resource', async () => { --- a/tests/src/rmrk/addTheme.test.ts +++ b/tests/src/rmrk/addTheme.test.ts @@ -9,7 +9,7 @@ let api: any; before(async function() { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkEquip]); + await requirePallets(this, [Pallets.RmrkEquip]); }); const alice = '//Alice'; --- a/tests/src/rmrk/burnNft.test.ts +++ b/tests/src/rmrk/burnNft.test.ts @@ -17,7 +17,7 @@ let api: any; before(async function() { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); --- a/tests/src/rmrk/changeCollectionIssuer.test.ts +++ b/tests/src/rmrk/changeCollectionIssuer.test.ts @@ -13,7 +13,7 @@ let api: any; before(async function() { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); --- a/tests/src/rmrk/createBase.test.ts +++ b/tests/src/rmrk/createBase.test.ts @@ -6,7 +6,7 @@ let api: any; before(async function() { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore, Pallets.RmrkEquip]); + await requirePallets(this, [Pallets.RmrkCore, Pallets.RmrkEquip]); }); const alice = '//Alice'; --- a/tests/src/rmrk/createCollection.test.ts +++ b/tests/src/rmrk/createCollection.test.ts @@ -6,7 +6,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); --- a/tests/src/rmrk/deleteCollection.test.ts +++ b/tests/src/rmrk/deleteCollection.test.ts @@ -7,7 +7,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); const Alice = '//Alice'; --- a/tests/src/rmrk/equipNft.test.ts +++ b/tests/src/rmrk/equipNft.test.ts @@ -126,7 +126,7 @@ before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore, Pallets.RmrkEquip]); + await requirePallets(this, [Pallets.RmrkCore, Pallets.RmrkEquip]); }); it('equip nft', async () => { --- a/tests/src/rmrk/getOwnedNfts.test.ts +++ b/tests/src/rmrk/getOwnedNfts.test.ts @@ -9,7 +9,7 @@ before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); --- a/tests/src/rmrk/lockCollection.test.ts +++ b/tests/src/rmrk/lockCollection.test.ts @@ -11,7 +11,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); it('lock collection', async () => { --- a/tests/src/rmrk/mintNft.test.ts +++ b/tests/src/rmrk/mintNft.test.ts @@ -10,7 +10,7 @@ before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); --- a/tests/src/rmrk/rejectNft.test.ts +++ b/tests/src/rmrk/rejectNft.test.ts @@ -14,7 +14,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); --- a/tests/src/rmrk/removeResource.test.ts +++ b/tests/src/rmrk/removeResource.test.ts @@ -20,7 +20,7 @@ before(async function() { api = await getApiConnection(); ss58Format = api.registry.getChainProperties()!.toJSON().ss58Format; - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); const Alice = '//Alice'; --- a/tests/src/rmrk/rmrkIsolation.test.ts +++ b/tests/src/rmrk/rmrkIsolation.test.ts @@ -64,7 +64,7 @@ before(async function() { await usingApi(async (api, privateKeyWrapper) => { alice = privateKeyWrapper('//Alice'); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); }); --- a/tests/src/rmrk/sendNft.test.ts +++ b/tests/src/rmrk/sendNft.test.ts @@ -9,7 +9,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); const maxNftId = 0xFFFFFFFF; --- a/tests/src/rmrk/setCollectionProperty.test.ts +++ b/tests/src/rmrk/setCollectionProperty.test.ts @@ -10,7 +10,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); it('set collection property', async () => { --- a/tests/src/rmrk/setEquippableList.test.ts +++ b/tests/src/rmrk/setEquippableList.test.ts @@ -7,7 +7,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); const alice = '//Alice'; --- a/tests/src/rmrk/setNftProperty.test.ts +++ b/tests/src/rmrk/setNftProperty.test.ts @@ -8,7 +8,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); const alice = '//Alice'; --- a/tests/src/rmrk/setResourcePriorities.test.ts +++ b/tests/src/rmrk/setResourcePriorities.test.ts @@ -7,7 +7,7 @@ let api: any; before(async function () { api = await getApiConnection(); - requirePallets(this, api, [Pallets.RmrkCore]); + await requirePallets(this, [Pallets.RmrkCore]); }); const alice = '//Alice'; --- a/tests/src/setCollectionSponsor.test.ts +++ b/tests/src/setCollectionSponsor.test.ts @@ -23,6 +23,8 @@ setCollectionSponsorExpectFailure, addCollectionAdminExpectSuccess, getCreatedCollectionCount, + requirePallets, + Pallets } from './util/helpers'; import {IKeyringPair} from '@polkadot/types/types'; @@ -50,7 +52,9 @@ const collectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); await setCollectionSponsorExpectSuccess(collectionId, bob.address); }); - it('Set ReFungible collection sponsor', async () => { + it('Set ReFungible collection sponsor', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const collectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await setCollectionSponsorExpectSuccess(collectionId, bob.address); }); --- a/tests/src/transfer.test.ts +++ b/tests/src/transfer.test.ts @@ -35,11 +35,14 @@ getBalance as getTokenBalance, transferFromExpectSuccess, transferFromExpectFail, + requirePallets, + Pallets, } from './util/helpers'; import { subToEth, itWeb3, } from './eth/util/helpers'; +import { request } from 'https'; let alice: IKeyringPair; let bob: IKeyringPair; @@ -89,56 +92,61 @@ }); }); - it('User can transfer owned token', async () => { - await usingApi(async (api, privateKeyWrapper) => { - // nft - const nftCollectionId = await createCollectionExpectSuccess(); - const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); - await transferExpectSuccess(nftCollectionId, newNftTokenId, alice, bob, 1, 'NFT'); - // fungible - const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); - const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); - await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob, 1, 'Fungible'); - // reFungible - const reFungibleCollectionId = await - createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); - const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); - await transferExpectSuccess( - reFungibleCollectionId, - newReFungibleTokenId, - alice, - bob, - 100, - 'ReFungible', - ); - }); + it('[nft] User can transfer owned token', async () => { + const nftCollectionId = await createCollectionExpectSuccess(); + const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); + await transferExpectSuccess(nftCollectionId, newNftTokenId, alice, bob, 1, 'NFT'); + }); + + it('[fungible] User can transfer owned token', async () => { + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); + await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob, 1, 'Fungible'); + }); + + it('[refungible] User can transfer owned token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); + const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); + await transferExpectSuccess( + reFungibleCollectionId, + newReFungibleTokenId, + alice, + bob, + 100, + 'ReFungible', + ); + }); + + it('[nft] Collection admin can transfer owned token', async () => { + const nftCollectionId = await createCollectionExpectSuccess(); + await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address); + const newNftTokenId = await createItemExpectSuccess(bob, nftCollectionId, 'NFT', bob.address); + await transferExpectSuccess(nftCollectionId, newNftTokenId, bob, alice, 1, 'NFT'); + }); + + it('[fungible] Collection admin can transfer owned token', async () => { + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + await addCollectionAdminExpectSuccess(alice, fungibleCollectionId, bob.address); + const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible', bob.address); + await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, 1, 'Fungible'); }); - it('Collection admin can transfer owned token', async () => { - await usingApi(async (api, privateKeyWrapper) => { - // nft - const nftCollectionId = await createCollectionExpectSuccess(); - await addCollectionAdminExpectSuccess(alice, nftCollectionId, bob.address); - const newNftTokenId = await createItemExpectSuccess(bob, nftCollectionId, 'NFT', bob.address); - await transferExpectSuccess(nftCollectionId, newNftTokenId, bob, alice, 1, 'NFT'); - // fungible - const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); - await addCollectionAdminExpectSuccess(alice, fungibleCollectionId, bob.address); - const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible', bob.address); - await transferExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, 1, 'Fungible'); - // reFungible - const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); - await addCollectionAdminExpectSuccess(alice, reFungibleCollectionId, bob.address); - const newReFungibleTokenId = await createItemExpectSuccess(bob, reFungibleCollectionId, 'ReFungible', bob.address); - await transferExpectSuccess( - reFungibleCollectionId, - newReFungibleTokenId, - bob, - alice, - 100, - 'ReFungible', - ); - }); + it('[refungible] Collection admin can transfer owned token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); + await addCollectionAdminExpectSuccess(alice, reFungibleCollectionId, bob.address); + const newReFungibleTokenId = await createItemExpectSuccess(bob, reFungibleCollectionId, 'ReFungible', bob.address); + await transferExpectSuccess( + reFungibleCollectionId, + newReFungibleTokenId, + bob, + alice, + 100, + 'ReFungible', + ); }); }); @@ -150,33 +158,49 @@ charlie = privateKeyWrapper('//Charlie'); }); }); - it('Transfer with not existed collection_id', async () => { + + it('[nft] Transfer with not existed collection_id', async () => { await usingApi(async (api) => { - // nft const nftCollectionCount = await getCreatedCollectionCount(api); await transferExpectFailure(nftCollectionCount + 1, 1, alice, bob, 1); - // fungible + }); + }); + + it('[fungible] Transfer with not existed collection_id', async () => { + await usingApi(async (api) => { const fungibleCollectionCount = await getCreatedCollectionCount(api); await transferExpectFailure(fungibleCollectionCount + 1, 0, alice, bob, 1); - // reFungible + }); + }); + + it('[refungible] Transfer with not existed collection_id', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + await usingApi(async (api) => { const reFungibleCollectionCount = await getCreatedCollectionCount(api); await transferExpectFailure(reFungibleCollectionCount + 1, 1, alice, bob, 1); }); }); - it('Transfer with deleted collection_id', async () => { - // nft + + it('[nft] Transfer with deleted collection_id', async () => { const nftCollectionId = await createCollectionExpectSuccess(); const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId); await destroyCollectionExpectSuccess(nftCollectionId); await transferExpectFailure(nftCollectionId, newNftTokenId, alice, bob, 1); - // fungible + }); + + it('[fungible] Transfer with deleted collection_id', async () => { const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10); await destroyCollectionExpectSuccess(fungibleCollectionId); await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, alice, bob, 1); - // reFungible + }); + + it('[refungible] Transfer with deleted collection_id', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); @@ -190,16 +214,21 @@ 1, ); }); - it('Transfer with not existed item_id', async () => { - // nft + + it('[nft] Transfer with not existed item_id', async () => { const nftCollectionId = await createCollectionExpectSuccess(); await transferExpectFailure(nftCollectionId, 2, alice, bob, 1); - // fungible + }); + + it('[fungible] Transfer with not existed item_id', async () => { const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); await transferExpectFailure(fungibleCollectionId, 2, alice, bob, 1); - // reFungible - const reFungibleCollectionId = await - createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); + }); + + it('[refungible] Transfer with not existed item_id', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await transferExpectFailure( reFungibleCollectionId, 2, @@ -208,18 +237,24 @@ 1, ); }); - it('Transfer with deleted item_id', async () => { - // nft + + it('[nft] Transfer with deleted item_id', async () => { const nftCollectionId = await createCollectionExpectSuccess(); const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); await burnItemExpectSuccess(alice, nftCollectionId, newNftTokenId, 1); await transferExpectFailure(nftCollectionId, newNftTokenId, alice, bob, 1); - // fungible + }); + + it('[fungible] Transfer with deleted item_id', async () => { const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); await burnItemExpectSuccess(alice, fungibleCollectionId, newFungibleTokenId, 10); await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, alice, bob, 1); - // reFungible + }); + + it('[refungible] Transfer with deleted item_id', async function() { + await requirePallets(this, [Pallets.ReFungible]); + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); @@ -232,18 +267,23 @@ 1, ); }); - it('Transfer with recipient that is not owner', async () => { - // nft + + it('[nft] Transfer with recipient that is not owner', async () => { const nftCollectionId = await createCollectionExpectSuccess(); const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); await transferExpectFailure(nftCollectionId, newNftTokenId, charlie, bob, 1); - // fungible + }); + + it('[fungible] Transfer with recipient that is not owner', async () => { const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); await transferExpectFailure(fungibleCollectionId, newFungibleTokenId, charlie, bob, 1); - // reFungible - const reFungibleCollectionId = await - createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); + }); + + it('[refungible] Transfer with recipient that is not owner', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); await transferExpectFailure( reFungibleCollectionId, @@ -276,7 +316,9 @@ }); }); - it('RFT', async () => { + it('RFT', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async (api: ApiPromise) => { const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); --- a/tests/src/transferFrom.test.ts +++ b/tests/src/transferFrom.test.ts @@ -31,6 +31,8 @@ burnItemExpectSuccess, setCollectionLimitsExpectSuccess, getCreatedCollectionCount, + requirePallets, + Pallets } from './util/helpers'; chai.use(chaiAsPromised); @@ -49,36 +51,36 @@ }); }); - it('Execute the extrinsic and check nftItemList - owner of token', async () => { - await usingApi(async () => { - // nft - const nftCollectionId = await createCollectionExpectSuccess(); - const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); - await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address); + it('[nft] Execute the extrinsic and check nftItemList - owner of token', async () => { + const nftCollectionId = await createCollectionExpectSuccess(); + const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); + await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address); - await transferFromExpectSuccess(nftCollectionId, newNftTokenId, bob, alice, charlie, 1, 'NFT'); + await transferFromExpectSuccess(nftCollectionId, newNftTokenId, bob, alice, charlie, 1, 'NFT'); + }); - // fungible - const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); - const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); - await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address); - await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 1, 'Fungible'); + it('[fungible] Execute the extrinsic and check nftItemList - owner of token', async () => { + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); + await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address); + await transferFromExpectSuccess(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 1, 'Fungible'); + }); - // reFungible - const reFungibleCollectionId = await - createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); - const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); - await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 100); - await transferFromExpectSuccess( - reFungibleCollectionId, - newReFungibleTokenId, - bob, - alice, - charlie, - 100, - 'ReFungible', - ); - }); + it('[refungible] Execute the extrinsic and check nftItemList - owner of token', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); + const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); + await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address, 100); + await transferFromExpectSuccess( + reFungibleCollectionId, + newReFungibleTokenId, + bob, + alice, + charlie, + 100, + 'ReFungible', + ); }); it('Should reduce allowance if value is big', async () => { @@ -119,20 +121,28 @@ }); }); - it('transferFrom for a collection that does not exist', async () => { + it('[nft] transferFrom for a collection that does not exist', async () => { await usingApi(async (api: ApiPromise) => { - // nft const nftCollectionCount = await getCreatedCollectionCount(api); await approveExpectFail(nftCollectionCount + 1, 1, alice, bob); await transferFromExpectFail(nftCollectionCount + 1, 1, bob, alice, charlie, 1); + }); + }); - // fungible + it('[fungible] transferFrom for a collection that does not exist', async () => { + await usingApi(async (api: ApiPromise) => { const fungibleCollectionCount = await getCreatedCollectionCount(api); await approveExpectFail(fungibleCollectionCount + 1, 0, alice, bob); await transferFromExpectFail(fungibleCollectionCount + 1, 0, bob, alice, charlie, 1); - // reFungible + }); + }); + + it('[refungible] transferFrom for a collection that does not exist', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + await usingApi(async (api: ApiPromise) => { const reFungibleCollectionCount = await getCreatedCollectionCount(api); await approveExpectFail(reFungibleCollectionCount + 1, 1, alice, bob); @@ -158,67 +168,70 @@ }); }); */ - it('transferFrom for not approved address', async () => { - await usingApi(async () => { - // nft - const nftCollectionId = await createCollectionExpectSuccess(); - const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); + it('[nft] transferFrom for not approved address', async () => { + const nftCollectionId = await createCollectionExpectSuccess(); + const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); - await transferFromExpectFail(nftCollectionId, newNftTokenId, bob, alice, charlie, 1); + await transferFromExpectFail(nftCollectionId, newNftTokenId, bob, alice, charlie, 1); + }); - // fungible - const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); - const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); - await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 1); - // reFungible - const reFungibleCollectionId = await - createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); - const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); - await transferFromExpectFail( - reFungibleCollectionId, - newReFungibleTokenId, - bob, - alice, - charlie, - 1, - ); - }); + it('[fungible] transferFrom for not approved address', async () => { + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); + await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 1); + }); + + it('[refungible] transferFrom for not approved address', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + const reFungibleCollectionId = await + createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); + const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); + await transferFromExpectFail( + reFungibleCollectionId, + newReFungibleTokenId, + bob, + alice, + charlie, + 1, + ); + }); + + it('[nft] transferFrom incorrect token count', async () => { + const nftCollectionId = await createCollectionExpectSuccess(); + const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); + await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address); + + await transferFromExpectFail(nftCollectionId, newNftTokenId, bob, alice, charlie, 2); }); - it('transferFrom incorrect token count', async () => { - await usingApi(async () => { - // nft - const nftCollectionId = await createCollectionExpectSuccess(); - const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); - await approveExpectSuccess(nftCollectionId, newNftTokenId, alice, bob.address); + it('[fungible] transferFrom incorrect token count', async () => { + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); + const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); + await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address); + await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 2); + }); - await transferFromExpectFail(nftCollectionId, newNftTokenId, bob, alice, charlie, 2); + it('[refungible] transferFrom incorrect token count', async function() { + await requirePallets(this, [Pallets.ReFungible]); - // fungible - const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); - const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); - await approveExpectSuccess(fungibleCollectionId, newFungibleTokenId, alice, bob.address); - await transferFromExpectFail(fungibleCollectionId, newFungibleTokenId, bob, alice, charlie, 2); - // reFungible - const reFungibleCollectionId = await - createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); - const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); - await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address); - await transferFromExpectFail( - reFungibleCollectionId, - newReFungibleTokenId, - bob, - alice, - charlie, - 2, - ); - }); + const reFungibleCollectionId = await + createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); + const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); + await approveExpectSuccess(reFungibleCollectionId, newReFungibleTokenId, alice, bob.address); + await transferFromExpectFail( + reFungibleCollectionId, + newReFungibleTokenId, + bob, + alice, + charlie, + 2, + ); }); - it('execute transferFrom from account that is not owner of collection', async () => { + it('[nft] execute transferFrom from account that is not owner of collection', async () => { await usingApi(async (api, privateKeyWrapper) => { const dave = privateKeyWrapper('//Dave'); - // nft const nftCollectionId = await createCollectionExpectSuccess(); const newNftTokenId = await createItemExpectSuccess(alice, nftCollectionId, 'NFT'); try { @@ -230,8 +243,13 @@ } // await transferFromExpectFail(nftCollectionId, newNftTokenId, Dave, Alice, Charlie, 1); + }); + }); - // fungible + it('[fungible] execute transferFrom from account that is not owner of collection', async () => { + await usingApi(async (api, privateKeyWrapper) => { + const dave = privateKeyWrapper('//Dave'); + const fungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'Fungible', decimalPoints: 0}}); const newFungibleTokenId = await createItemExpectSuccess(alice, fungibleCollectionId, 'Fungible'); try { @@ -241,7 +259,14 @@ // tslint:disable-next-line:no-unused-expression expect(e).to.be.exist; } - // reFungible + }); + }); + + it('[refungible] execute transferFrom from account that is not owner of collection', async function() { + await requirePallets(this, [Pallets.ReFungible]); + + await usingApi(async (api, privateKeyWrapper) => { + const dave = privateKeyWrapper('//Dave'); const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); @@ -276,7 +301,9 @@ }); }); - it('transferFrom burnt token before approve ReFungible', async () => { + it('transferFrom burnt token before approve ReFungible', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async () => { const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); await setCollectionLimitsExpectSuccess(alice, reFungibleCollectionId, {ownerCanTransfer: true}); @@ -308,7 +335,9 @@ }); }); - it('transferFrom burnt token after approve ReFungible', async () => { + it('transferFrom burnt token after approve ReFungible', async function() { + await requirePallets(this, [Pallets.ReFungible]); + await usingApi(async () => { const reFungibleCollectionId = await createCollectionExpectSuccess({mode: {type: 'ReFungible'}}); const newReFungibleTokenId = await createItemExpectSuccess(alice, reFungibleCollectionId, 'ReFungible'); -- gitstuff