normalise stream amount & balance test
This commit is contained in:
parent
b931c24498
commit
59d851c51f
@ -1,21 +1,23 @@
|
||||
pragma solidity 0.8.1;
|
||||
|
||||
import "./interfaces/IERC20.sol";
|
||||
import "./interfaces/ISablier.sol"
|
||||
import "./interfaces/ISablier.sol";
|
||||
|
||||
import "./proprietary/Parameters.sol";
|
||||
|
||||
contract Proposal is Parameters {
|
||||
|
||||
function executeProposal() public {
|
||||
IERC20(tokenAddress).approve(sablierAddress, RENUMERATION_AMOUNT);
|
||||
IERC20(tokenAddress).approve(sablierAddress, RENUMERATION_NORMALISED_AMOUNT);
|
||||
|
||||
ISablier(sablierAddress).cancelStream(COMMUNITY_FUND_STREAM_ID);
|
||||
ISablier(sablierAddress).createStream(
|
||||
RENUMERATION_ADDRESS,
|
||||
FISCAL_Q_RENUMERATION_AMOUNT,
|
||||
RENUMERATION_NORMALISED_AMOUNT,
|
||||
tokenAddress,
|
||||
RENUMERATION_START_TS,
|
||||
RENUMERATION_START_TS + FISCAL_Q_DURATION
|
||||
);
|
||||
ISablier(sablierAddress).cancelStream(COMMUNITY_FUND_STREAM_ID);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,9 +1,11 @@
|
||||
pragma solidity 0.8.1;
|
||||
pragma solidity ^0.8.1;
|
||||
|
||||
interface ISablier {
|
||||
|
||||
function cancelStream(uint256 streamId) external returns (bool);
|
||||
|
||||
function balanceOf(uint256 streamId, address who) external returns (uint256);
|
||||
|
||||
function createStream(
|
||||
address recipent,
|
||||
uint256 deposit,
|
||||
|
@ -3,10 +3,12 @@ pragma solidity 0.8.1;
|
||||
contract Parameters {
|
||||
|
||||
uint256 public COMMUNITY_FUND_STREAM_ID = 103358;
|
||||
uint256 public FISCAL_Q_RENUMERATION_AMOUNT = 10000 ether;
|
||||
uint256 public FISCAL_Q_DURATION = 90 days;
|
||||
uint256 public RENUMERATION_START_TS =;
|
||||
address public RENUMERATION_ADDRESS =;
|
||||
|
||||
uint256 public RENUMERATION_START_TS = 1670740000;
|
||||
uint256 public RENUMERATION_AMOUNT = 10000 ether;
|
||||
uint256 public RENUMERATION_NORMALISED_AMOUNT = RENUMERATION_AMOUNT - (RENUMERATION_AMOUNT % FISCAL_Q_DURATION);
|
||||
address public RENUMERATION_ADDRESS = 0x40d16C473CB7bF5fAB9713b27A4562EAa6f915d1;
|
||||
|
||||
// beneficary addresses
|
||||
address public governanceAddress = 0x5efda50f22d34F262c29268506C5Fa42cB56A1Ce;
|
||||
|
@ -1,35 +1,29 @@
|
||||
pragma solidity ^0.8.1;
|
||||
|
||||
import "../src/interfaces/IENSResolver.sol";
|
||||
import "../src/Proposal.sol";
|
||||
|
||||
import "forge-std/Test.sol";
|
||||
|
||||
contract ProposalTest is Test, Proposal {
|
||||
|
||||
function compareBytes(bytes memory a, bytes memory b) public returns (bool e) {
|
||||
e = keccak256(abi.encodePacked(a)) == keccak256(abi.encodePacked(b));
|
||||
}
|
||||
|
||||
function testProposal() public {
|
||||
uint256 balanceBefore = IERC20(tokenAddress).balanceOf(governanceAddress);
|
||||
uint256 streamBalance = ISablier(sablierAddress).balanceOf(COMMUNITY_FUND_STREAM_ID, governanceAddress);
|
||||
|
||||
vm.startPrank(address(governanceAddress));
|
||||
executeProposal();
|
||||
vm.stopPrank();
|
||||
_testResults();
|
||||
}
|
||||
|
||||
function _testResults() public {
|
||||
IENSResolver resolver = IENSResolver(resolverAddress);
|
||||
bytes memory classicContentHash = resolver.contenthash(CLASSIC_ENS_SUBNODE);
|
||||
bytes memory novaContentHash = resolver.contenthash(NOVA_ENS_SUBNODE);
|
||||
uint256 balanceAfter = IERC20(tokenAddress).balanceOf(governanceAddress);
|
||||
|
||||
require(
|
||||
compareBytes(classicContentHash, CLASSIC_IPFS_HASH),
|
||||
"PRIMARY CONTENT NOT UPDATED"
|
||||
RENUMERATION_AMOUNT - RENUMERATION_NORMALISED_AMOUNT < 1000 gwei,
|
||||
"NORMALISED NUMBER BREACHES ROUNDING THRESHOLD"
|
||||
);
|
||||
|
||||
require(
|
||||
compareBytes(novaContentHash, NOVA_IPFS_HASH),
|
||||
"SECONDARY CONTENT NOT UPDATED"
|
||||
balanceBefore - RENUMERATION_NORMALISED_AMOUNT == balanceAfter - streamBalance,
|
||||
"OUTFLOWS GREATER THAN INFLOWS"
|
||||
);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user