dexorder
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user