From 72544c4cc6ff65e1f0440a675622fddcea603438 Mon Sep 17 00:00:00 2001 From: Moody Salem Date: Fri, 12 Apr 2024 11:18:54 -0400 Subject: [PATCH] add one more unit test about describe --- src/governor_test.cairo | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/src/governor_test.cairo b/src/governor_test.cairo index 806e231..540fcff 100644 --- a/src/governor_test.cairo +++ b/src/governor_test.cairo @@ -85,8 +85,14 @@ fn setup() -> (IStakerDispatcher, IERC20Dispatcher, IGovernorDispatcher, Config) fn create_proposal( governor: IGovernorDispatcher, token: IERC20Dispatcher, staker: IStakerDispatcher ) -> felt252 { - let transfer_call = transfer_call(token, recipient(), amount: 100); + create_proposal_with_call( + governor, token, staker, transfer_call(token, recipient(), amount: 100) + ) +} +fn create_proposal_with_call( + governor: IGovernorDispatcher, token: IERC20Dispatcher, staker: IStakerDispatcher, call: Call +) -> felt252 { // Delegate token to the proposer so that he reaches threshold. token .approve(staker.contract_address, governor.get_config().proposal_creation_threshold.into()); @@ -96,7 +102,7 @@ fn create_proposal( let address_before = get_contract_address(); set_contract_address(proposer()); - let id = governor.propose(transfer_call); + let id = governor.propose(call); set_contract_address(address_before); id } @@ -297,6 +303,30 @@ fn test_describe_proposal_fails_if_not_proposer() { governor.describe(123, "This proposal does not exist"); } +#[test] +#[should_panic(expected: ('ALREADY_EXECUTED', 'ENTRYPOINT_FAILED'))] +fn test_describe_proposal_fails_if_executed() { + let (staker, token, governor, config) = setup(); + let id = create_proposal_with_call( + governor, token, staker, transfer_call(token: token, recipient: anyone(), amount: 0) + ); + + // make the proposal execute + token.approve(staker.contract_address, config.quorum.into()); + staker.stake(voter1()); + advance_time(config.voting_start_delay); + set_contract_address(proposer()); + governor.vote(id, true); + set_contract_address(voter1()); + governor.vote(id, true); + advance_time(config.voting_period); + set_contract_address(anyone()); + governor.execute(transfer_call(token: token, recipient: anyone(), amount: 0)); + + set_contract_address(proposer()); + governor.describe(id, "This proposal is already executed"); +} + #[test] fn test_vote_no_staking_after_period_starts() { let (staker, token, governor, config) = setup();