1import { expect } from "chai";2import { getApiConnection } from "../substrate/substrate-api";3import {4 createCollection,5 mintNft,6 sendNft,7 rejectNft8} from "./util/tx";9import { getChildren, NftIdTuple } from "./util/fetch";10import { isNftChildOfAnother, expectTxFailure } from "./util/helpers";1112describe("integration test: reject NFT", () => {13 let api: any;14 before(async () => { api = await getApiConnection(); });1516 const alice = "//Alice";17 const bob = "//Bob";1819 const createTestCollection = async (issuerUri: string) => {20 return await createCollection(21 api,22 issuerUri,23 "reject-metadata",24 null,25 "rjct"26 );27 }2829 it("reject NFT", async () => {30 const ownerAlice = alice;31 const ownerBob = bob;3233 const aliceCollectionId = await createTestCollection(alice);34 const bobCollectionId = await createTestCollection(bob);3536 const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, "parent-nft-metadata");37 const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, "child-nft-metadata");3839 const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];4041 await sendNft(api, "pending", ownerBob, bobCollectionId, childNftId, newOwnerNFT);42 await rejectNft(api, alice, bobCollectionId, childNftId);4344 const isChild = await isNftChildOfAnother(api, bobCollectionId, childNftId, newOwnerNFT);45 expect(isChild, 'Error: rejected NFT is still a child of the target NFT').to.be.false;46 });4748 it("[negative] unable to reject NFT by a not-an-owner", async () => {49 const ownerAlice = alice;50 const ownerBob = bob;5152 const aliceCollectionId = await createTestCollection(alice);53 const bobCollectionId = await createTestCollection(bob);5455 const parentNftId = await mintNft(api, alice, ownerAlice, aliceCollectionId, "parent-nft-metadata");56 const childNftId = await mintNft(api, bob, ownerBob, bobCollectionId, "child-nft-metadata");5758 const newOwnerNFT: NftIdTuple = [aliceCollectionId, parentNftId];5960 await sendNft(api, "pending", ownerBob, bobCollectionId, childNftId, newOwnerNFT);61 const tx = rejectNft(api, bob, bobCollectionId, childNftId);6263 await expectTxFailure(/rmrkCore\.CannotRejectNonOwnedNft/, tx);64 });6566 it("[negative] unable to reject non-existing NFT", async () => {67 const maxNftId = 0xFFFFFFFF;6869 const collectionId = await createTestCollection(alice);7071 const tx = rejectNft(api, alice, collectionId, maxNftId);7273 await expectTxFailure(/rmrkCore\.NoAvailableNftId/, tx);74 });7576 it("[negative] unable to reject NFT which is not sent", async () => {77 const ownerAlice = alice;7879 const collectionId = await createTestCollection(alice);8081 const nftId = await mintNft(api, alice, ownerAlice, collectionId, "parent-nft-metadata");8283 const tx = rejectNft(api, alice, collectionId, nftId);8485 await expectTxFailure(/rmrkCore\.CannotRejectNonPendingNft/, tx);86 });8788 after(() => { api.disconnect(); });89});