-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore(NFTMetadataGeneratorSVG): add tests
- Loading branch information
1 parent
84a547d
commit 5a71ed7
Showing
2 changed files
with
72 additions
and
11 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 61 additions & 0 deletions
61
test/nft-metadata-generators/NFTMetadataGeneratorSVG.t.sol
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
// SPDX-License-Identifier: MIT | ||
pragma solidity ^0.8.26; | ||
|
||
import { Test, console } from "forge-std/Test.sol"; | ||
import { Base64 } from "@openzeppelin/contracts/utils/Base64.sol"; | ||
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol"; | ||
import { MockToken } from "../mocks/MockToken.sol"; | ||
import { NFTMetadataGeneratorSVG } from "../../src/nft-metadata-generators/NFTMetadataGeneratorSVG.sol"; | ||
|
||
contract NFTMetadataGeneratorSVGTest is Test { | ||
MockToken erc20Token; | ||
NFTMetadataGeneratorSVG metadataGenerator; | ||
|
||
address alice = makeAddr("alice"); | ||
|
||
function setUp() public { | ||
erc20Token = new MockToken("Test", "TEST"); | ||
metadataGenerator = new NFTMetadataGeneratorSVG(address(erc20Token), "<svg>", "</svg>"); | ||
|
||
erc20Token.mint(alice, 10e18); | ||
} | ||
|
||
function testGenerateMetadata() public view { | ||
string memory expectedName = "XPNFT Token 0x328809bc894f92807417d2dad6b7c998c1afdac6"; | ||
string memory expectedDescription = | ||
"This is a XPNFT token for address 0x328809bc894f92807417d2dad6b7c998c1afdac6 with balance 10000000000000000000"; | ||
string memory encodedImage = Base64.encode(abi.encodePacked("<svg>10</svg>")); | ||
string memory expectedImage = string(abi.encodePacked("data:image/svg+xml;base64,", encodedImage)); | ||
|
||
bytes memory expectedMetadata = abi.encodePacked( | ||
"{\"name\":\"", | ||
expectedName, | ||
"\",", | ||
"\"description\":\"", | ||
expectedDescription, | ||
"\",", | ||
"\"image\":\"", | ||
expectedImage, | ||
"\"}" | ||
); | ||
|
||
string memory metadata = metadataGenerator.generate(alice, 10e18); | ||
assertEq(metadata, string(abi.encodePacked("data:application/json;base64,", Base64.encode(expectedMetadata)))); | ||
} | ||
|
||
function testSetImageStrings() public { | ||
assertEq(metadataGenerator.imagePrefix(), "<svg>"); | ||
assertEq(metadataGenerator.imageSuffix(), "</svg>"); | ||
|
||
metadataGenerator.setImageStrings("<new-svg>", "</new-svg>"); | ||
|
||
assertEq(metadataGenerator.imagePrefix(), "<new-svg>"); | ||
assertEq(metadataGenerator.imageSuffix(), "</new-svg>"); | ||
} | ||
|
||
function testSetImageStringsRevert() public { | ||
vm.prank(alice); | ||
vm.expectPartialRevert(Ownable.OwnableUnauthorizedAccount.selector); | ||
metadataGenerator.setImageStrings("<new-svg>", "</new-svg>"); | ||
} | ||
} |