test(circle): add table-driven state machine transition tests - #197
Open
BABAT-CODE wants to merge 1 commit into
Open
test(circle): add table-driven state machine transition tests#197BABAT-CODE wants to merge 1 commit into
BABAT-CODE wants to merge 1 commit into
Conversation
Add 14 dedicated tests in packages/circle/src/test.rs covering every legal and illegal (from_status, to_status, operation) tuple in the circle state machine: State machine transitions under test: PENDING → ACTIVE (join fills last seat) [legal] ACTIVE → COMPLETED (all rounds paid) [legal] ACTIVE → DISPUTED (raise_dispute) [legal] DISPUTED → ACTIVE (resolve_dispute) [legal] Illegal transitions (must return typed error, not panic): COMPLETED + join → NotActive COMPLETED + contribute → NotActive COMPLETED + trigger_payout → NotActive COMPLETED + exit → NotActive PENDING + trigger_payout → NotActive PENDING + contribute → NotActive DISPUTED + second dispute → DisputeAlreadyRaised DISPUTED + trigger_payout → NotActive DISPUTED + contribute → NotActive DISPUTED + join → NotActive Also tests: resolve_dispute on circle with no active dispute → NoActiveDispute Helper functions added: sm_pending_circle() — builds PENDING state fixture sm_active_circle() — builds ACTIVE state fixture sm_completed_circle() — builds COMPLETED state fixture sm_disputed_circle() — builds DISPUTED state fixture Fixes: MEDIUM testing gap — no state machine transition coverage
|
@BABAT-CODE Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add 14 dedicated tests in packages/circle/src/test.rs covering every legal and illegal (from_status, to_status, operation) tuple in the circle state machine:
State machine transitions under test:
PENDING → ACTIVE (join fills last seat) [legal]
ACTIVE → COMPLETED (all rounds paid) [legal]
ACTIVE → DISPUTED (raise_dispute) [legal]
DISPUTED → ACTIVE (resolve_dispute) [legal]
Illegal transitions (must return typed error, not panic):
COMPLETED + join → NotActive
COMPLETED + contribute → NotActive
COMPLETED + trigger_payout → NotActive
COMPLETED + exit → NotActive
PENDING + trigger_payout → NotActive
PENDING + contribute → NotActive
DISPUTED + second dispute → DisputeAlreadyRaised
DISPUTED + trigger_payout → NotActive
DISPUTED + contribute → NotActive
DISPUTED + join → NotActive
Also tests:
resolve_dispute on circle with no active dispute → NoActiveDispute
Helper functions added:
sm_pending_circle() — builds PENDING state fixture
sm_active_circle() — builds ACTIVE state fixture
sm_completed_circle() — builds COMPLETED state fixture
sm_disputed_circle() — builds DISPUTED state fixture
Fixes: MEDIUM testing gap — no state machine transition coverage
closes #114