From 6124e716e43c008c42978a607494538645b10c8a Mon Sep 17 00:00:00 2001 From: Pactrover <329246295+pactrover@users.noreply.github.com> Date: Sun, 27 Sep 2026 12:01:23 +0000 Subject: [PATCH] test: cover Election.clear pending consensus reset --- .../cash/atto/node/election/ElectionTest.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/test/kotlin/cash/atto/node/election/ElectionTest.kt b/src/test/kotlin/cash/atto/node/election/ElectionTest.kt index b47909fb..a4cf2444 100644 --- a/src/test/kotlin/cash/atto/node/election/ElectionTest.kt +++ b/src/test/kotlin/cash/atto/node/election/ElectionTest.kt @@ -216,6 +216,30 @@ class ElectionTest { } } + @Test + fun `should clear pending consensus state`() { + // given + val publicKey = AttoPublicKey(Random.nextBytes(ByteArray(32))) + val transactionA = Transaction.sample(publicKey = publicKey) + val transactionB = Transaction.sample(publicKey = publicKey) + val voteA = Vote.sample(blockHash = transactionA.hash, weight = minimalWeight) + every { voteWeighter.get(voteA.publicKey) } returns voteA.weight + + // when + runBlocking { + election.start(TransactionValidated(account, transactionA)) + election.process(VoteValidated(transactionA, voteA)) + election.clear() + election.start(TransactionValidated(account, transactionB)) + } + + // then + verify(exactly = 1) { + eventPublisher.publish(match { it is ElectionConsensusReached && it.transaction == transactionA }) + eventPublisher.publish(match { it is ElectionStarted && it.transaction == transactionB }) + } + } + @Test fun `should publish consensus changed when provisional leader changes`() { // given