chore: sync submodule state (parent ref update)
Made-with: Cursor
This commit is contained in:
67
test/vault/DebtTokenTransferable.t.sol
Normal file
67
test/vault/DebtTokenTransferable.t.sol
Normal file
@@ -0,0 +1,67 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
pragma solidity ^0.8.20;
|
||||
|
||||
import {Test} from "forge-std/Test.sol";
|
||||
import {DebtToken} from "../../contracts/vault/tokens/DebtToken.sol";
|
||||
import {ERC1967Proxy} from "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
|
||||
|
||||
contract DebtTokenTransferableTest is Test {
|
||||
DebtToken public token;
|
||||
address public vault = address(0x1);
|
||||
address public currency = address(0x2);
|
||||
address public admin = address(this);
|
||||
address public user1 = address(0x10);
|
||||
address public user2 = address(0x11);
|
||||
|
||||
function testInitializeFullTransferableAllowsTransfer() public {
|
||||
DebtToken impl = new DebtToken();
|
||||
bytes memory initData = abi.encodeWithSelector(
|
||||
DebtToken.initializeFull.selector,
|
||||
"Debt cUSDC (variable)",
|
||||
"vdcUSDC",
|
||||
vault,
|
||||
currency,
|
||||
admin,
|
||||
uint8(6),
|
||||
true // transferable
|
||||
);
|
||||
ERC1967Proxy proxy = new ERC1967Proxy(address(impl), initData);
|
||||
token = DebtToken(address(proxy));
|
||||
token.grantRole(keccak256("MINTER_ROLE"), vault);
|
||||
|
||||
assertTrue(token.isTransferable());
|
||||
assertEq(token.decimals(), 6);
|
||||
|
||||
vm.prank(vault);
|
||||
token.mint(user1, 1000e6);
|
||||
vm.prank(user1);
|
||||
token.transfer(user2, 500e6);
|
||||
assertEq(token.balanceOf(user2), 500e6);
|
||||
assertEq(token.balanceOf(user1), 500e6);
|
||||
}
|
||||
|
||||
function testInitializeFullNotTransferableRevertsOnTransfer() public {
|
||||
DebtToken impl = new DebtToken();
|
||||
bytes memory initData = abi.encodeWithSelector(
|
||||
DebtToken.initializeFull.selector,
|
||||
"Debt cUSDC",
|
||||
"vdcUSDC",
|
||||
vault,
|
||||
currency,
|
||||
admin,
|
||||
uint8(6),
|
||||
false // not transferable
|
||||
);
|
||||
ERC1967Proxy proxy = new ERC1967Proxy(address(impl), initData);
|
||||
token = DebtToken(address(proxy));
|
||||
token.grantRole(keccak256("MINTER_ROLE"), vault);
|
||||
|
||||
assertFalse(token.isTransferable());
|
||||
|
||||
vm.prank(vault);
|
||||
token.mint(user1, 1000e6);
|
||||
vm.prank(user1);
|
||||
vm.expectRevert("DebtToken: transfers not allowed");
|
||||
token.transfer(user2, 500e6);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user