1import { expect } from 'chai';2import { getApiConnection } from '../substrate/substrate-api';3import { getNft } from './util/fetch';4import { expectTxFailure } from './util/helpers';5import { createCollection, mintNft } from './util/tx';67describe("integration test: mint new NFT", () => {8 let api: any;9 before(async () => { api = await getApiConnection(); });1011 const alice = '//Alice';12 const bob = '//Bob';13 const maxCollectionId = 0xFFFFFFFF;14 const maxNftId = 0xFFFFFFFF;1516 it("mint NFT", async () => {17 const owner = null;18 const collectionMetadata = 'mintingCollectionMetadata';19 const collectionMax = null;20 const collectionSymbol = 'MCS';21 const recipientUri = null;22 const royalty = null;23 const nftMetadata = 'NFT-test-metadata';2425 let collectionId = await createCollection(26 api,27 alice,28 collectionMetadata,29 collectionMax,30 collectionSymbol31 );3233 await mintNft(34 api,35 alice,36 owner,37 collectionId,38 nftMetadata,39 recipientUri,40 royalty41 );42 });4344 it("mint NFT and set another owner", async () => {45 const owner = bob;46 const collectionMetadata = 'setOwnerCollectionMetadata';47 const collectionMax = null;48 const collectionSymbol = 'SOCS';49 const recipientUri = null;50 const royalty = null;51 const nftMetadata = 'setOwner-NFT-metadata';5253 let collectionId = await createCollection(54 api,55 alice,56 collectionMetadata,57 collectionMax,58 collectionSymbol59 );6061 await mintNft(62 api,63 alice,64 owner,65 collectionId,66 nftMetadata,67 recipientUri,68 royalty69 );70 });7172 it("mint NFT with recipient and roalty", async () => {73 const owner = alice;74 const collectionMetadata = 'mintingCollectionMetadata';75 const collectionMax = null;76 const collectionSymbol = 'MCS';77 const recipientUri = bob;78 const royalty = 70000;79 const nftMetadata = 'recipient-royalty-NFT-test-metadata';8081 let collectionId = await createCollection(82 api,83 alice,84 collectionMetadata,85 collectionMax,86 collectionSymbol87 );8889 await mintNft(90 api,91 alice,92 owner,93 collectionId,94 nftMetadata,95 recipientUri,96 royalty97 );98 });99100 it("mint NFT with resources", async () => {101 const owner = alice;102 const collectionMetadata = 'mintingCollectionMetadata';103 const collectionMax = null;104 const collectionSymbol = 'MCS';105 const nftMetadata = 'NFT-with-resources-test-metadata';106 const resources = [107 {108 basic: {109 metadata: 'basic-resource-nft-minting',110 },111 }, {112 slot: {113 metadata: 'slot-resource-nft-minting',114 slot: 9,115 },116 }, {117 composable: {118 metadata: 'composable-resource-nft-minting',119 parts: [0, 5, 2],120 }121 }, {122 slot: {123 metadata: 'slot-resource-nft-minting-2',124 thumb: 'srnm2',125 base: 5,126 }127 }128 ];129130 let collectionId = await createCollection(131 api,132 alice,133 collectionMetadata,134 collectionMax,135 collectionSymbol136 );137138 await mintNft(139 api,140 alice,141 owner,142 collectionId,143 nftMetadata,144 null, null, true,145 resources146 );147 });148149 it("[negative] unable to mint NFT within non-existing collection", async () => {150 const owner = alice;151 const recipientUri = null;152 const royalty = null;153 const nftMetadata = "NFT-test-metadata";154155 const tx = mintNft(156 api,157 alice,158 owner,159 maxCollectionId,160 nftMetadata,161 recipientUri,162 royalty163 );164165 await expectTxFailure(/rmrkCore\.CollectionUnknown/, tx);166 });167168 it("[negative] unable to mint NFT by a user that isn't the owner of the collection", async () => {169 const owner = alice;170 const collectionMetadata = "mintingCollectionMetadata";171 const collectionMax = null;172 const collectionSymbol = "MCS";173 const recipientUri = null;174 const royalty = null;175 const nftMetadata = "NFT-test-metadata";176177 let collectionId = await createCollection(178 api,179 alice,180 collectionMetadata,181 collectionMax,182 collectionSymbol183 );184185 const tx = mintNft(186 api,187 bob,188 owner,189 collectionId,190 nftMetadata,191 recipientUri,192 royalty193 );194195 await expectTxFailure(/rmrkCore\.NoPermission/, tx);196 });197198 it("[negative] unable to fetch non-existing NFT", async () => {199 const nft = await getNft(api, maxCollectionId, maxNftId);200 expect(nft.isSome).to.be.false;201 });202203 after(() => { api.disconnect(); });204});