1import {expect} from 'chai';2import {getApiConnection} from '../substrate/substrate-api';3import {requirePallets, Pallets} from '../util/helpers';4import {getNft} from './util/fetch';5import {expectTxFailure} from './util/helpers';6import {createCollection, mintNft} from './util/tx';78describe('integration test: mint new NFT', () => {9 let api: any;10 11 before(async function () {12 api = await getApiConnection();13 await requirePallets(this, [Pallets.RmrkCore]);14 });151617 const alice = '//Alice';18 const bob = '//Bob';19 const maxCollectionId = 0xFFFFFFFF;20 const maxNftId = 0xFFFFFFFF;2122 it('mint NFT', async () => {23 const owner = null;24 const collectionMetadata = 'mintingCollectionMetadata';25 const collectionMax = null;26 const collectionSymbol = 'MCS';27 const recipientUri = null;28 const royalty = null;29 const nftMetadata = 'NFT-test-metadata';3031 const collectionId = await createCollection(32 api,33 alice,34 collectionMetadata,35 collectionMax,36 collectionSymbol,37 );3839 await mintNft(40 api,41 alice,42 owner,43 collectionId,44 nftMetadata,45 recipientUri,46 royalty,47 );48 });4950 it('mint NFT and set another owner', async () => {51 const owner = bob;52 const collectionMetadata = 'setOwnerCollectionMetadata';53 const collectionMax = null;54 const collectionSymbol = 'SOCS';55 const recipientUri = null;56 const royalty = null;57 const nftMetadata = 'setOwner-NFT-metadata';5859 const collectionId = await createCollection(60 api,61 alice,62 collectionMetadata,63 collectionMax,64 collectionSymbol,65 );6667 await mintNft(68 api,69 alice,70 owner,71 collectionId,72 nftMetadata,73 recipientUri,74 royalty,75 );76 });7778 it('mint NFT with recipient and roalty', async () => {79 const owner = alice;80 const collectionMetadata = 'mintingCollectionMetadata';81 const collectionMax = null;82 const collectionSymbol = 'MCS';83 const recipientUri = bob;84 const royalty = 70000;85 const nftMetadata = 'recipient-royalty-NFT-test-metadata';8687 const collectionId = await createCollection(88 api,89 alice,90 collectionMetadata,91 collectionMax,92 collectionSymbol,93 );9495 await mintNft(96 api,97 alice,98 owner,99 collectionId,100 nftMetadata,101 recipientUri,102 royalty,103 );104 });105106 it('mint NFT with resources', async () => {107 const owner = alice;108 const collectionMetadata = 'mintingCollectionMetadata';109 const collectionMax = null;110 const collectionSymbol = 'MCS';111 const nftMetadata = 'NFT-with-resources-test-metadata';112 const resources = [113 {114 basic: {115 metadata: 'basic-resource-nft-minting',116 },117 }, {118 slot: {119 metadata: 'slot-resource-nft-minting',120 slot: 9,121 },122 }, {123 composable: {124 metadata: 'composable-resource-nft-minting',125 parts: [0, 5, 2],126 },127 }, {128 slot: {129 metadata: 'slot-resource-nft-minting-2',130 thumb: 'srnm2',131 base: 5,132 },133 },134 ];135136 const collectionId = await createCollection(137 api,138 alice,139 collectionMetadata,140 collectionMax,141 collectionSymbol,142 );143144 await mintNft(145 api,146 alice,147 owner,148 collectionId,149 nftMetadata,150 null,151 null,152 true,153 resources,154 );155 });156157 it('[negative] unable to mint NFT within non-existing collection', async () => {158 const owner = alice;159 const recipientUri = null;160 const royalty = null;161 const nftMetadata = 'NFT-test-metadata';162163 const tx = mintNft(164 api,165 alice,166 owner,167 maxCollectionId,168 nftMetadata,169 recipientUri,170 royalty,171 );172173 await expectTxFailure(/rmrkCore\.CollectionUnknown/, tx);174 });175176 it("[negative] unable to mint NFT by a user that isn't the owner of the collection", async () => {177 const owner = alice;178 const collectionMetadata = 'mintingCollectionMetadata';179 const collectionMax = null;180 const collectionSymbol = 'MCS';181 const recipientUri = null;182 const royalty = null;183 const nftMetadata = 'NFT-test-metadata';184185 const collectionId = await createCollection(186 api,187 alice,188 collectionMetadata,189 collectionMax,190 collectionSymbol,191 );192193 const tx = mintNft(194 api,195 bob,196 owner,197 collectionId,198 nftMetadata,199 recipientUri,200 royalty,201 );202203 await expectTxFailure(/rmrkCore\.NoPermission/, tx);204 });205206 it('[negative] unable to fetch non-existing NFT', async () => {207 const nft = await getNft(api, maxCollectionId, maxNftId);208 expect(nft.isSome).to.be.false;209 });210211 after(() => { api.disconnect(); });212});