From 1d18cc52f70b031915f20a9d0f440d5c122cac39 Mon Sep 17 00:00:00 2001 From: Edwin Tops Date: Mon, 22 May 2023 12:47:22 +0200 Subject: [PATCH 1/3] After merge fixes. --- .../contracts/governance/Governance.sol | 8 +++++- .../test/governance/network/governance.ts | 27 +++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/packages/protocol/contracts/governance/Governance.sol b/packages/protocol/contracts/governance/Governance.sol index 27ddcb5c633..162d6ca485a 100644 --- a/packages/protocol/contracts/governance/Governance.sol +++ b/packages/protocol/contracts/governance/Governance.sol @@ -220,7 +220,7 @@ contract Governance is * @return Patch version of the contract. */ function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) { - return (1, 3, 1, 0); + return (1, 3, 2, 0); } /** @@ -1265,6 +1265,12 @@ contract Governance is // solhint-disable-next-line not-rely-on-time if (now >= lastDequeue.add(dequeueFrequency)) { Proposals.Proposal storage proposal = proposals[proposalId]; + + if (_isQueuedProposalExpired(proposal)) { + emit ProposalExpired(proposalId); + return isProposalDequeued; + } + // Updating refunds back to proposer refundedDeposits[proposal.proposer] = refundedDeposits[proposal.proposer].add( proposal.deposit diff --git a/packages/protocol/test/governance/network/governance.ts b/packages/protocol/test/governance/network/governance.ts index e47bace973b..1d051ea03cf 100644 --- a/packages/protocol/test/governance/network/governance.ts +++ b/packages/protocol/test/governance/network/governance.ts @@ -3576,17 +3576,17 @@ contract('Governance', (accounts: string[]) => { }) }) - describe('#dequeueProposalIfReady()', () => { + describe.only('#dequeueProposalIfReady()', () => { it('should not update lastDequeue proposal does not exist in the queue', async () => { const nonExistentProposalId = 7 const originalLastDequeue = await governance.lastDequeue() await timeTravel(dequeueFrequency, web3) - await assertRevert(governance.dequeueProposalIfReady(nonExistentProposalId)) - + await governance.dequeueProposalIfReady(nonExistentProposalId) assert.equal((await governance.getQueueLength()).toNumber(), 0) assert.equal((await governance.lastDequeue()).toNumber(), originalLastDequeue.toNumber()) }) describe('when a proposal exists', () => { + const proposalId = 1 beforeEach(async () => { await governance.propose( [transactionSuccess1.value], @@ -3599,18 +3599,35 @@ contract('Governance', (accounts: string[]) => { ) }) + it('should not update `dequeued` when proposal has expired', async () => { + await timeTravel(queueExpiry, web3) + await governance.dequeueProposalIfReady(proposalId) + const dequeued = await governance.getDequeue() + assert.equal(dequeued.length, 0) + }) + + it('should update `dequeued` when proposal has not expired', async () => { + await timeTravel(dequeueFrequency, web3) + await governance.dequeueProposalIfReady(proposalId) + const dequeued = await governance.getDequeue() + assert.include( + dequeued.map((x) => x.toNumber()), + proposalId + ) + }) + it('should update lastDequeue', async () => { const originalLastDequeue = await governance.lastDequeue() await timeTravel(dequeueFrequency, web3) - await governance.dequeueProposalIfReady(1) + await governance.dequeueProposalIfReady(proposalId) assert.equal((await governance.getQueueLength()).toNumber(), 0) assert.isTrue((await governance.lastDequeue()).toNumber() > originalLastDequeue.toNumber()) }) it('should still be valid if not dequeued or expired', async () => { - await governance.dequeueProposalIfReady(1) + await governance.dequeueProposalIfReady(proposalId) const isQueuedProposalExpired = await governance.isQueuedProposalExpired(1) assert.isFalse(isQueuedProposalExpired) }) From 7150af1c7f4d1ca577801f11b7fea02ee914eb1c Mon Sep 17 00:00:00 2001 From: Edwin Tops Date: Mon, 22 May 2023 12:49:12 +0200 Subject: [PATCH 2/3] Remove unneeded. --- packages/protocol/test/governance/network/governance.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/test/governance/network/governance.ts b/packages/protocol/test/governance/network/governance.ts index 1d051ea03cf..e51e3a0e811 100644 --- a/packages/protocol/test/governance/network/governance.ts +++ b/packages/protocol/test/governance/network/governance.ts @@ -3576,7 +3576,7 @@ contract('Governance', (accounts: string[]) => { }) }) - describe.only('#dequeueProposalIfReady()', () => { + describe('#dequeueProposalIfReady()', () => { it('should not update lastDequeue proposal does not exist in the queue', async () => { const nonExistentProposalId = 7 const originalLastDequeue = await governance.lastDequeue() From 3fcb1658be86afcb342b2c9e2c0413218ea45527 Mon Sep 17 00:00:00 2001 From: Edwin Tops Date: Mon, 22 May 2023 13:35:16 +0200 Subject: [PATCH 3/3] Fix version. --- packages/protocol/contracts/governance/Governance.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/protocol/contracts/governance/Governance.sol b/packages/protocol/contracts/governance/Governance.sol index 162d6ca485a..5de1e9b3fbe 100644 --- a/packages/protocol/contracts/governance/Governance.sol +++ b/packages/protocol/contracts/governance/Governance.sol @@ -220,7 +220,7 @@ contract Governance is * @return Patch version of the contract. */ function getVersionNumber() external pure returns (uint256, uint256, uint256, uint256) { - return (1, 3, 2, 0); + return (1, 3, 1, 0); } /**