DCIPs/assets/eip-5633/test/test.js

52 lines
1.9 KiB
JavaScript

const { expect } = require("chai");
const { ethers } = require("hardhat");
describe("ERC5633Demo contract", function () {
it("InterfaceId should equals 0x911ec470", async function () {
const [owner, addr1, addr2] = await ethers.getSigners();
const ERC5633Demo = await ethers.getContractFactory("ERC5633Demo");
const demo = await ERC5633Demo.deploy();
await demo.deployed();
expect(await demo.getInterfaceId()).equals("0x911ec470");
});
it("Test soulbound", async function () {
const [owner, addr1, addr2] = await ethers.getSigners();
const ERC5633Demo = await ethers.getContractFactory("ERC5633Demo");
const demo = await ERC5633Demo.deploy();
await demo.deployed();
await demo.setSoulbound(1, true);
expect(await demo.isSoulbound(1)).to.equal(true);
expect(await demo.isSoulbound(2)).to.equal(false);
await demo.mint(addr1.address, 1, 2, "0x");
await demo.mint(addr1.address, 2, 2, "0x");
await expect(demo.connect(addr1).safeTransferFrom(addr1.address, addr2.address, 1, 1, "0x")).to.be.revertedWith(
"ERC5633: Soulbound, Non-Transferable"
);
await expect(demo.connect(addr1).safeBatchTransferFrom(addr1.address, addr2.address, [1], [1], "0x")).to.be.revertedWith(
"ERC5633: Soulbound, Non-Transferable"
);
await expect(demo.connect(addr1).safeBatchTransferFrom(addr1.address, addr2.address, [1,2], [1,1], "0x")).to.be.revertedWith(
"ERC5633: Soulbound, Non-Transferable"
);
await demo.mint(addr1.address, 2, 1, "0x");
demo.connect(addr1).safeTransferFrom(addr1.address, addr2.address, 2, 1, "0x");
demo.connect(addr1).safeBatchTransferFrom(addr1.address, addr2.address, [2], [1], "0x");
await demo.connect(addr1).burn(addr1.address, 1, 1);
await demo.connect(addr1).burnBatch(addr1.address, [1], [1]);
await demo.connect(addr2).burn(addr2.address, 2, 1);
await demo.connect(addr2).burnBatch(addr2.address, [2], [1]);
});
});