mirror of openzeppelin-contracts
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.
 
 
 
 
 
openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155URIStorage.test.js

70 lines
2.3 KiB

const { ethers } = require('hardhat');
const { expect } = require('chai');
const { loadFixture } = require('@nomicfoundation/hardhat-network-helpers');
const erc1155Uri = 'https://token.com/nfts/';
const baseUri = 'https://token.com/';
const tokenId = 1n;
const value = 3000n;
describe('ERC1155URIStorage', function () {
describe('with base uri set', function () {
async function fixture() {
const [holder] = await ethers.getSigners();
const token = await ethers.deployContract('$ERC1155URIStorage', [erc1155Uri]);
await token.$_setBaseURI(baseUri);
await token.$_mint(holder, tokenId, value, '0x');
return { token, holder };
}
beforeEach(async function () {
Object.assign(this, await loadFixture(fixture));
});
it('can request the token uri, returning the erc1155 uri if no token uri was set', async function () {
expect(await this.token.uri(tokenId)).to.equal(erc1155Uri);
});
it('can request the token uri, returning the concatenated uri if a token uri was set', async function () {
const tokenUri = '1234/';
const expectedUri = `${baseUri}${tokenUri}`;
await expect(this.token.$_setURI(ethers.Typed.uint256(tokenId), tokenUri))
.to.emit(this.token, 'URI')
.withArgs(expectedUri, tokenId);
expect(await this.token.uri(tokenId)).to.equal(expectedUri);
});
});
describe('with base uri set to the empty string', function () {
async function fixture() {
const [holder] = await ethers.getSigners();
const token = await ethers.deployContract('$ERC1155URIStorage', ['']);
await token.$_mint(holder, tokenId, value, '0x');
return { token, holder };
}
beforeEach(async function () {
Object.assign(this, await loadFixture(fixture));
});
it('can request the token uri, returning an empty string if no token uri was set', async function () {
expect(await this.token.uri(tokenId)).to.equal('');
});
it('can request the token uri, returning the token uri if a token uri was set', async function () {
const tokenUri = 'ipfs://1234/';
await expect(this.token.$_setURI(ethers.Typed.uint256(tokenId), tokenUri))
.to.emit(this.token, 'URI')
.withArgs(tokenUri, tokenId);
expect(await this.token.uri(tokenId)).to.equal(tokenUri);
});
});
});