feat: transaction implement
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package transaction
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestStateTransitions(t *testing.T) {
|
||||
t.Parallel()
|
||||
forward := []State{
|
||||
StateCreated,
|
||||
StateValidating,
|
||||
StatePrepared,
|
||||
StateStarting,
|
||||
StateSwitching,
|
||||
StateVerifying,
|
||||
StateDraining,
|
||||
StateCommitted,
|
||||
}
|
||||
for index := 0; index < len(forward)-1; index++ {
|
||||
if !forward[index].CanTransitionTo(forward[index+1]) {
|
||||
t.Fatalf("expected transition %s -> %s", forward[index], forward[index+1])
|
||||
}
|
||||
}
|
||||
if StateCreated.CanTransitionTo(StatePrepared) {
|
||||
t.Fatal("state machine accepted a skipped forward state")
|
||||
}
|
||||
if !StateSwitching.CanTransitionTo(StateRollingBack) {
|
||||
t.Fatal("state machine rejected rollback")
|
||||
}
|
||||
if !StateRollingBack.CanTransitionTo(StateRolledBack) {
|
||||
t.Fatal("state machine rejected rollback completion")
|
||||
}
|
||||
if StateCommitted.CanTransitionTo(StateRollingBack) {
|
||||
t.Fatal("terminal state accepted another transition")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user