non-fungible-apps/contracts/test/foundry/FleekERC721/Burn.t.sol

41 lines
1.1 KiB
Solidity

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;
import "./TestBase.sol";
import {FleekAccessControl} from "contracts/FleekAccessControl.sol";
contract Test_FleekERC721_Burn is Test_FleekERC721_Base {
uint256 internal tokenId;
function setUp() public {
baseSetUp();
tokenId = mintDefault(deployer);
}
function test_burn() public {
CuT.burn(tokenId);
}
function testFuzz_cannotBurnAsNotOwner(address account) public {
vm.assume(account != deployer);
vm.prank(account);
expectRevertWithMustBeTokenOwner(tokenId);
CuT.burn(tokenId);
}
function testFuzz_cannotBurnAsController(address account) public {
vm.assume(account != deployer);
CuT.grantTokenRole(tokenId, FleekAccessControl.TokenRoles.Controller, account);
vm.prank(account);
expectRevertWithMustBeTokenOwner(tokenId);
CuT.burn(tokenId);
}
function testFuzz_cannotBurnInexistentToken(uint256 _tokenId) public {
vm.assume(_tokenId != tokenId);
expectRevertWithInvalidTokenId();
CuT.burn(_tokenId);
}
}