forked from DecentralizedClimateFoundation/DCIPs
52 lines
1.9 KiB
JavaScript
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]);
|
||
|
});
|
||
|
});
|