109 lines
3.5 KiB
JavaScript
109 lines
3.5 KiB
JavaScript
const BEBadge = artifacts.require("BEBadgeV2");
|
|
const {
|
|
BN,
|
|
constants,
|
|
expectEvent,
|
|
expectRevert,
|
|
} = require("@openzeppelin/test-helpers");
|
|
|
|
contract("BEBadgeV2", (accounts) => {
|
|
let badge;
|
|
const owner = accounts[0];
|
|
const user = accounts[1];
|
|
const executor = accounts[2];
|
|
|
|
beforeEach(async () => {
|
|
badge = await BEBadge.new("CRYPTO ELITE'S HERO", "HERO", 3);
|
|
});
|
|
|
|
it("should batch mint two badges", async () => {
|
|
await badge.batchMint(user, 2, { from: owner });
|
|
const balanceOfUser = await badge.balanceOf(user);
|
|
assert.equal(balanceOfUser, 2, "Incorrect user balance");
|
|
});
|
|
|
|
it("should revert batch minting two badges with not mint role", async () => {
|
|
const mintRole = await badge.MINTER_ROLE();
|
|
const err = `AccessControl: account ${(user+'').toLowerCase()} is missing role ${mintRole}`
|
|
await expectRevert(
|
|
badge.batchMint(user, 2, { from: user }),
|
|
err
|
|
);
|
|
});
|
|
|
|
it("should revert batch minting badges with not enough supply", async () => {
|
|
const err = `Exceeds the total supply`
|
|
await expectRevert(
|
|
badge.batchMint(user, 4, { from: owner }),
|
|
err
|
|
);
|
|
});
|
|
|
|
it("should mint one badge", async () => {
|
|
await badge.safeMint(user, { from: owner });
|
|
const balanceOfUser = await badge.balanceOf(user);
|
|
assert.equal(balanceOfUser, 1, "Incorrect user balance");
|
|
});
|
|
|
|
it("should revert minting one badge with not mint role", async () => {
|
|
const mintRole = await badge.MINTER_ROLE();
|
|
const err = `AccessControl: account ${(user+'').toLowerCase()} is missing role ${mintRole}`
|
|
await expectRevert(
|
|
badge.safeMint(user, { from: user }),
|
|
err
|
|
);
|
|
});
|
|
|
|
it("should burn one badge", async () => {
|
|
await badge.safeMint(user, { from: owner });
|
|
const tokenId = await badge.tokenOfOwnerByIndex(user, 0);
|
|
await badge.burn(tokenId, { from: user });
|
|
const balanceOfUser = await badge.balanceOf(user);
|
|
assert.equal(balanceOfUser, 0, "Incorrect user balance");
|
|
});
|
|
|
|
it("should burn one badge with approval", async () => {
|
|
await badge.safeMint(user, { from: owner });
|
|
const tokenId = await badge.tokenOfOwnerByIndex(user, 0);
|
|
const balanceOfUserTmp = await badge.balanceOf(user);
|
|
assert.equal(balanceOfUserTmp, 1, "Incorrect user balance");
|
|
await badge.approve(executor, tokenId, { from: user });
|
|
await badge.burn(tokenId, { from: executor });
|
|
const balanceOfUser = await badge.balanceOf(user);
|
|
assert.equal(balanceOfUser, 0, "Incorrect user balance");
|
|
});
|
|
|
|
it("should revert burning one badge", async () => {
|
|
const err = `ERC721: invalid token ID.`
|
|
await expectRevert(
|
|
badge.burn(1, { from: user }),
|
|
err
|
|
);
|
|
});
|
|
|
|
it("should revert burning one badge without approval", async () => {
|
|
const err = `ERC721: caller is not token owner or approved.`
|
|
await badge.safeMint(user, { from: owner });
|
|
const tokenId = await badge.tokenOfOwnerByIndex(user, 0);
|
|
await expectRevert(
|
|
badge.burn(tokenId, { from: executor }),
|
|
err
|
|
);
|
|
});
|
|
|
|
it("should receive event for RoleGranted and RoleRevoked", async () => {
|
|
const role = await badge.MINTER_ROLE();
|
|
const receipt = await badge.grantRole(role, user, { from: owner });
|
|
expectEvent(receipt, "RoleGranted", {
|
|
account: user,
|
|
role: role,
|
|
sender: owner,
|
|
});
|
|
const receipt2 = await badge.revokeRole(role, user, { from: owner });
|
|
expectEvent(receipt2, "RoleRevoked", {
|
|
account: user,
|
|
role: role,
|
|
sender: owner,
|
|
});
|
|
});
|
|
}); |