Add internal getter for pure token URI

Fixes #3023

Add getter for pure token URI

- [x] Tests
- [x] Documentation
- [x] Changeset entry (run `npx changeset add`)
pull/4142/head
Luiz Hemerly 2 years ago
parent ca822213f2
commit 656d2f2fa9
  1. 5
      .changeset/hip-vans-crash.md
  2. 4
      contracts/mocks/token/ERC721URIStorageMock.sol
  3. 9
      contracts/token/ERC721/extensions/ERC721URIStorage.sol
  4. 6
      test/token/ERC721/extensions/ERC721URIStorage.test.js

@ -0,0 +1,5 @@
---
'openzeppelin-solidity': minor
---
`ERC721URIStorage`: added internal getter for retrieving token URI without base URI

@ -11,6 +11,10 @@ abstract contract ERC721URIStorageMock is ERC721URIStorage {
return _baseTokenURI;
}
function getPureTokenURI(uint256 tokenId) internal view returns (string memory) {
return _getPureTokenURI(tokenId);
}
function setBaseURI(string calldata newBaseTokenURI) public {
_baseTokenURI = newBaseTokenURI;
}

@ -43,6 +43,15 @@ abstract contract ERC721URIStorage is IERC4906, ERC721 {
return super.tokenURI(tokenId);
}
/**
* @dev gets the tokenURI of 'tokenId' without the baseURI
*
*/
function _getPureTokenURI(uint256 tokenId) internal view virtual returns (string memory) {
return _tokenURIs[tokenId];
}
/**
* @dev Sets `_tokenURI` as the tokenURI of `tokenId`.
*

@ -96,5 +96,11 @@ contract('ERC721URIStorage', function (accounts) {
expect(await this.token.$_exists(firstTokenId)).to.equal(false);
await expectRevert(this.token.tokenURI(firstTokenId), 'ERC721: invalid token ID');
});
it('returns the pure base URI', async function () {
await this.token.setBaseURI(baseURI);
expect(await this.token.$_baseURI()).to.be.equal(baseURI);
});
});
});

Loading…
Cancel
Save