1import {expect} from 'chai';2import {getApiConnection} from '../substrate/substrate-api';3import {4 createCollection,5 mintNft,6 sendNft,7 rejectNft,8} from './util/tx';9import {NftIdTuple} from './util/fetch';10import {isNftChildOfAnother, expectTxFailure, requirePallets, Pallets} from './util/helpers';1112describe('integration test: reject NFT', () => {13 let api: any;14 before(async function () {15 api = await getApiConnection();16 await requirePallets(this, [Pallets.RmrkCore]);17 });18192021 const alice = '//Alice';22 const bob = '//Bob';2324 const createTestCollection = async (issuerUri: string) => {25 return await createCollection(26 api,27 issuerUri,28 'reject-metadata',29 null,30 'rjct',31 );32 };3334 it('reject NFT', async () => {35 const ownerAlice = alice;36 const ownerBob = bob;3738 const aliceCollectionId = await createTestCollection(alice);39 const bobCollectionId = await createTestCollection(bob);4041 const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');42 const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');4344 const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];4546 await sendNft(api, 'pending', ownerBob, bobCollectionId, childNftId, newOwnerNFT);47 await rejectNft(api, alice, bobCollectionId, childNftId);4849 const isChild = await isNftChildOfAnother(api, bobCollectionId, childNftId, newOwnerNFT);50 expect(isChild, 'Error: rejected NFT is still a child of the target NFT').to.be.false;51 });5253 it('[negative] unable to reject NFT by a not-an-owner', async () => {54 const ownerAlice = alice;55 const ownerBob = bob;5657 const aliceCollectionId = await createTestCollection(alice);58 const bobCollectionId = await createTestCollection(bob);5960 const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, 'parent-nft-metadata');61 const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, 'child-nft-metadata');6263 const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];6465 await sendNft(api, 'pending', ownerBob, bobCollectionId, childNftId, newOwnerNFT);66 const tx = rejectNft(api, bob, bobCollectionId, childNftId);6768 await expectTxFailure(/rmrkCore\.CannotRejectNonOwnedNft/, tx);69 });7071 it('[negative] unable to reject non-existing NFT', async () => {72 const maxNftId = 0xFFFFFFFF;7374 const collectionId = await createTestCollection(alice);7576 const tx = rejectNft(api, alice, collectionId, maxNftId);7778 await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);79 });8081 it('[negative] unable to reject NFT which is not sent', async () => {82 const ownerAlice = alice;8384 const collectionId = await createTestCollection(alice);8586 const nftId = await mintNft(api, alice, ownerAlice, collectionId, 'parent-nft-metadata');8788 const tx = rejectNft(api, alice, collectionId, nftId);8990 await expectTxFailure(/rmrkCore\.CannotRejectNonPendingNft/, tx);91 });9293 after(async() => { await api.disconnect(); });94});