You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
4.1 KiB
119 lines
4.1 KiB
const { ethers } = require('hardhat');
|
|
const { expect } = require('chai');
|
|
const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers');
|
|
|
|
async function fixture() {
|
|
const [holder] = await ethers.getSigners();
|
|
const token = await ethers.deployContract('$ERC1155Supply', ['https://token-cdn-domain/{id}.json']);
|
|
return { token, holder };
|
|
}
|
|
|
|
describe('ERC1155Supply', function () {
|
|
const firstTokenId = 37n;
|
|
const firstTokenValue = 42n;
|
|
const secondTokenId = 19842n;
|
|
const secondTokenValue = 23n;
|
|
|
|
beforeEach(async function () {
|
|
Object.assign(this, await loadFixture(fixture));
|
|
});
|
|
|
|
describe('before mint', function () {
|
|
it('exist', async function () {
|
|
expect(await this.token.exists(firstTokenId)).to.be.false;
|
|
});
|
|
|
|
it('totalSupply', async function () {
|
|
expect(await this.token.totalSupply(ethers.Typed.uint256(firstTokenId))).to.equal(0n);
|
|
expect(await this.token.totalSupply()).to.equal(0n);
|
|
});
|
|
});
|
|
|
|
describe('after mint', function () {
|
|
describe('single', function () {
|
|
beforeEach(async function () {
|
|
await this.token.$_mint(this.holder, firstTokenId, firstTokenValue, '0x');
|
|
});
|
|
|
|
it('exist', async function () {
|
|
expect(await this.token.exists(firstTokenId)).to.be.true;
|
|
});
|
|
|
|
it('totalSupply', async function () {
|
|
expect(await this.token.totalSupply(ethers.Typed.uint256(firstTokenId))).to.equal(firstTokenValue);
|
|
expect(await this.token.totalSupply()).to.equal(firstTokenValue);
|
|
});
|
|
});
|
|
|
|
describe('batch', function () {
|
|
beforeEach(async function () {
|
|
await this.token.$_mintBatch(
|
|
this.holder,
|
|
[firstTokenId, secondTokenId],
|
|
[firstTokenValue, secondTokenValue],
|
|
'0x',
|
|
);
|
|
});
|
|
|
|
it('exist', async function () {
|
|
expect(await this.token.exists(firstTokenId)).to.be.true;
|
|
expect(await this.token.exists(secondTokenId)).to.be.true;
|
|
});
|
|
|
|
it('totalSupply', async function () {
|
|
expect(await this.token.totalSupply(ethers.Typed.uint256(firstTokenId))).to.equal(firstTokenValue);
|
|
expect(await this.token.totalSupply(ethers.Typed.uint256(secondTokenId))).to.equal(secondTokenValue);
|
|
expect(await this.token.totalSupply()).to.equal(firstTokenValue + secondTokenValue);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('after burn', function () {
|
|
describe('single', function () {
|
|
beforeEach(async function () {
|
|
await this.token.$_mint(this.holder, firstTokenId, firstTokenValue, '0x');
|
|
await this.token.$_burn(this.holder, firstTokenId, firstTokenValue);
|
|
});
|
|
|
|
it('exist', async function () {
|
|
expect(await this.token.exists(firstTokenId)).to.be.false;
|
|
});
|
|
|
|
it('totalSupply', async function () {
|
|
expect(await this.token.totalSupply(ethers.Typed.uint256(firstTokenId))).to.equal(0n);
|
|
expect(await this.token.totalSupply()).to.equal(0n);
|
|
});
|
|
});
|
|
|
|
describe('batch', function () {
|
|
beforeEach(async function () {
|
|
await this.token.$_mintBatch(
|
|
this.holder,
|
|
[firstTokenId, secondTokenId],
|
|
[firstTokenValue, secondTokenValue],
|
|
'0x',
|
|
);
|
|
await this.token.$_burnBatch(this.holder, [firstTokenId, secondTokenId], [firstTokenValue, secondTokenValue]);
|
|
});
|
|
|
|
it('exist', async function () {
|
|
expect(await this.token.exists(firstTokenId)).to.be.false;
|
|
expect(await this.token.exists(secondTokenId)).to.be.false;
|
|
});
|
|
|
|
it('totalSupply', async function () {
|
|
expect(await this.token.totalSupply(ethers.Typed.uint256(firstTokenId))).to.equal(0n);
|
|
expect(await this.token.totalSupply(ethers.Typed.uint256(secondTokenId))).to.equal(0n);
|
|
expect(await this.token.totalSupply()).to.equal(0n);
|
|
});
|
|
});
|
|
});
|
|
|
|
describe('other', function () {
|
|
it('supply unaffected by no-op', async function () {
|
|
await this.token.$_update(ethers.ZeroAddress, ethers.ZeroAddress, [firstTokenId], [firstTokenValue]);
|
|
expect(await this.token.totalSupply(ethers.Typed.uint256(firstTokenId))).to.equal(0n);
|
|
expect(await this.token.totalSupply()).to.equal(0n);
|
|
});
|
|
});
|
|
});
|
|
|