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

difftreelog

source

tests/src/rmrk/burnNft.test.ts4.2 KiBsourcehistory
1import {getApiConnection} from '../substrate/substrate-api';2import {expectTxFailure} from './util/helpers';3import {NftIdTuple, getChildren} from './util/fetch';4import {burnNft, createCollection, sendNft, mintNft} from './util/tx';56import chai from 'chai';7import chaiAsPromised from 'chai-as-promised';8import {requirePallets, Pallets} from '../util/helpers';910chai.use(chaiAsPromised);11const expect = chai.expect;1213describe('integration test: burn nft', () => {14  const Alice = '//Alice';15  const Bob = '//Bob';1617  let api: any;18  before(async function() {19    api = await getApiConnection();20    await requirePallets(this, [Pallets.RmrkCore]);21  });222324  it('burn nft', async () => {25    await createCollection(26      api,27      Alice,28      'test-metadata',29      null,30      'test-symbol',31    ).then(async (collectionId) => {32      const nftId = await mintNft(33        api,34        Alice,35        Alice,36        collectionId,37        'nft-metadata',38      );39      await burnNft(api, Alice, collectionId, nftId);40    });41  });4243  it('burn nft with children', async () => {44    const collectionId = await createCollection(45      api,46      Alice,47      'test-metadata',48      null,49      'test-symbol',50    );5152    const parentNftId = await mintNft(53      api,54      Alice,55      Alice,56      collectionId,57      'nft-metadata',58    );5960    const childNftId = await mintNft(61      api,62      Alice,63      Alice,64      collectionId,65      'nft-metadata',66    );6768    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];6970    await sendNft(api, 'sent', Alice, collectionId, childNftId, newOwnerNFT);7172    const childrenBefore = await getChildren(api, collectionId, parentNftId);73    expect(childrenBefore.length === 1, 'Error: parent NFT should have children')74      .to.be.true;7576    const child = childrenBefore[0];77    expect(child.collectionId.eq(collectionId), 'Error: invalid child collection Id')78      .to.be.true;7980    expect(child.nftId.eq(childNftId), 'Error: invalid child NFT Id')81      .to.be.true;8283    await burnNft(api, Alice, collectionId, parentNftId);8485    const childrenAfter = await getChildren(api, collectionId, parentNftId);8687    expect(childrenAfter.length === 0, 'Error: children should be burned').to.be.true;88  });8990  it('burn child nft', async () => {91    const collectionId = await createCollection(92      api,93      Alice,94      'test-metadata',95      null,96      'test-symbol',97    );9899    const parentNftId = await mintNft(100      api,101      Alice,102      Alice,103      collectionId,104      'nft-metadata',105    );106107    const childNftId = await mintNft(108      api,109      Alice,110      Alice,111      collectionId,112      'nft-metadata',113    );114115    const newOwnerNFT: NftIdTuple = [collectionId, parentNftId];116117    await sendNft(api, 'sent', Alice, collectionId, childNftId, newOwnerNFT);118119    const childrenBefore = await getChildren(api, collectionId, parentNftId);120    expect(childrenBefore.length === 1, 'Error: parent NFT should have children')121      .to.be.true;122123    const child = childrenBefore[0];124    expect(child.collectionId.eq(collectionId), 'Error: invalid child collection Id')125      .to.be.true;126127    expect(child.nftId.eq(childNftId), 'Error: invalid child NFT Id')128      .to.be.true;129130    await burnNft(api, Alice, collectionId, childNftId);131132    const childrenAfter = await getChildren(api, collectionId, parentNftId);133134    expect(childrenAfter.length === 0, 'Error: children should be burned').to.be.true;135  });136137  it('[negative] burn non-existing NFT', async () => {138    await createCollection(139      api,140      Alice,141      'test-metadata',142      null,143      'test-symbol',144    ).then(async (collectionId) => {145      const tx = burnNft(api, Alice, collectionId, 99999);146      await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);147    });148  });149150  it('[negative] burn not an owner NFT user', async () => {151    await createCollection(152      api,153      Alice,154      'test-metadata',155      null,156      'test-symbol',157    ).then(async (collectionId) => {158      const nftId = await mintNft(159        api,160        Alice,161        Alice,162        collectionId,163        'nft-metadata',164      );165      const tx = burnNft(api, Bob, collectionId, nftId);166      await expectTxFailure(/rmrkCore\.NoPermission/, tx);167    });168  });169170  after(() => {171    api.disconnect();172  });173});