Create test for sablier stream opening
This commit is contained in:
parent
399bbabed0
commit
c2fb317b9d
@ -2,8 +2,21 @@
|
||||
|
||||
pragma solidity ^0.8.19;
|
||||
|
||||
struct SablierStream {
|
||||
address sender;
|
||||
address recipient;
|
||||
uint256 deposit;
|
||||
address token;
|
||||
uint256 startTime;
|
||||
uint256 stopTime;
|
||||
uint256 remainingBalance;
|
||||
uint256 ratePerSecond;
|
||||
}
|
||||
|
||||
interface ISablier {
|
||||
function createStream(address recipent, uint256 deposit, address tokenAddress, uint256 startTime, uint256 stopTime)
|
||||
external
|
||||
returns (uint256);
|
||||
|
||||
function getStream(uint256 streamId) external view returns (SablierStream memory);
|
||||
}
|
||||
|
@ -2,11 +2,13 @@
|
||||
pragma solidity ^0.8.19;
|
||||
|
||||
import { IENSResolver } from "@interfaces/IENSResolver.sol";
|
||||
import { ISablier, SablierStream } from "@interfaces/ISablier.sol";
|
||||
import { ProposalUtils } from "./utils/ProposalUtils.sol";
|
||||
import { RemunerationProposal } from "@root/RemunerationProposal.sol";
|
||||
|
||||
import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
|
||||
import { console2 } from "@forge-std/console2.sol";
|
||||
import { Vm } from "@forge-std/Vm.sol";
|
||||
|
||||
contract TestRemunerationProposal is ProposalUtils {
|
||||
modifier executeCurrentProposalBefore() {
|
||||
@ -63,4 +65,28 @@ contract TestRemunerationProposal is ProposalUtils {
|
||||
"Developer didn't get reimbursement"
|
||||
);
|
||||
}
|
||||
|
||||
function testSablierStreamOpenedCorrectly() public {
|
||||
uint256 remunerationAmountInTORN = 8625 ether;
|
||||
address sablierAddress = 0xCD18eAa163733Da39c232722cBC4E8940b1D8888;
|
||||
|
||||
vm.recordLogs();
|
||||
createAndExecuteProposal();
|
||||
Vm.Log[] memory logs = vm.getRecordedLogs();
|
||||
|
||||
Vm.Log memory sablierCreateStreamLog;
|
||||
|
||||
for (uint16 i = 0; i < logs.length; i++) {
|
||||
if (logs[i].emitter == sablierAddress) sablierCreateStreamLog = logs[i];
|
||||
}
|
||||
|
||||
uint256 sablierStreamId = uint256(sablierCreateStreamLog.topics[1]);
|
||||
|
||||
SablierStream memory openedStream = ISablier(sablierAddress).getStream(sablierStreamId);
|
||||
|
||||
require(openedStream.deposit + 1 ether > remunerationAmountInTORN, "Developer remuneration stream amount is insufficient");
|
||||
require(openedStream.deposit == openedStream.remainingBalance, "Stream started incorrectly");
|
||||
require(openedStream.stopTime < block.timestamp + 91 days, "Stream duration is more than quarter");
|
||||
require(openedStream.recipient == resolveDeveloperAddress(), "Stream recipient isn't developer");
|
||||
}
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ pragma solidity ^0.8.19;
|
||||
import { IGovernance } from "@interfaces/IGovernance.sol";
|
||||
|
||||
contract Mock {
|
||||
// Developer address with 22 staked TORN
|
||||
// Developer address with staked TORN
|
||||
address public constant TEST_REAL_ADDRESS_WITH_BALANCE = 0x9Ff3C1Bea9ffB56a78824FE29f457F066257DD58;
|
||||
address public constant TEST_RELAYER_ADDRESS = 0x30F96AEF199B399B722F8819c9b0723016CEAe6C; // moon-relayer.eth (just for testing)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user