59 lines
2.2 KiB
TypeScript
59 lines
2.2 KiB
TypeScript
//
|
|
// This script executes when you run 'yarn test'
|
|
//
|
|
|
|
import { ethers } from "hardhat";
|
|
import { expect } from "chai";
|
|
import { YourCollectible } from "../typechain-types";
|
|
|
|
describe("🚩 Challenge: 🎟 Tokenization 🤓", function () {
|
|
let myContract: YourCollectible;
|
|
|
|
describe("YourCollectible", function () {
|
|
const contractAddress = process.env.CONTRACT_ADDRESS;
|
|
|
|
let contractArtifact: string;
|
|
if (contractAddress) {
|
|
// For the autograder
|
|
contractArtifact = `contracts/download-${contractAddress}.sol:YourCollectible`;
|
|
} else {
|
|
contractArtifact = "contracts/YourCollectible.sol:YourCollectible";
|
|
}
|
|
|
|
it("Should deploy the contract", async function () {
|
|
const YourCollectible = await ethers.getContractFactory(contractArtifact);
|
|
myContract = await YourCollectible.deploy();
|
|
console.log("\t", " 🛰 Contract deployed on", await myContract.getAddress());
|
|
});
|
|
|
|
describe("mintItem()", function () {
|
|
it("Should be able to mint an NFT", async function () {
|
|
const [owner] = await ethers.getSigners();
|
|
|
|
console.log("\t", " 🧑🏫 Tester Address: ", owner.address);
|
|
|
|
const startingBalance = await myContract.balanceOf(owner.address);
|
|
console.log("\t", " ⚖️ Starting balance: ", Number(startingBalance));
|
|
|
|
console.log("\t", " 🔨 Minting...");
|
|
const mintResult = await myContract.mintItem(owner.address, "QmfVMAmNM1kDEBYrC2TPzQDoCRFH6F5tE1e9Mr4FkkR5Xr");
|
|
console.log("\t", " 🏷 mint tx: ", mintResult.hash);
|
|
|
|
console.log("\t", " ⏳ Waiting for confirmation...");
|
|
const txResult = await mintResult.wait();
|
|
expect(txResult?.status).to.equal(1);
|
|
|
|
console.log("\t", " 🔎 Checking new balance: ", Number(startingBalance));
|
|
expect(await myContract.balanceOf(owner.address)).to.equal(startingBalance + 1n);
|
|
});
|
|
|
|
it("Should track tokens of owner by index", async function () {
|
|
const [owner] = await ethers.getSigners();
|
|
const startingBalance = await myContract.balanceOf(owner.address);
|
|
const token = await myContract.tokenOfOwnerByIndex(owner.address, startingBalance - 1n);
|
|
expect(token).to.greaterThan(0);
|
|
});
|
|
});
|
|
});
|
|
});
|