Skip to content

Commit

Permalink
add one more unit test about describe
Browse files Browse the repository at this point in the history
  • Loading branch information
moodysalem committed Apr 12, 2024
1 parent d47c7f3 commit 72544c4
Showing 1 changed file with 32 additions and 2 deletions.
34 changes: 32 additions & 2 deletions src/governor_test.cairo
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand All @@ -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
}
Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit 72544c4

Please sign in to comment.