Files
ratatoskr-go/internal/storage/models_test.go
Hermes a3c6b5f153
All checks were successful
CI / test (push) Successful in 41s
CI / build-and-package (amd64, linux) (push) Successful in 38s
CI / build-and-package (amd64, windows) (push) Successful in 36s
fix: разрешить timeout/failed → collecting (перезапуск сбора через /start и /retry)
2026-08-16 23:45:05 +05:00

53 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package storage
import (
"testing"
)
func TestIsValidTransition(t *testing.T) {
tests := []struct {
from, to Status
want bool
}{
{StatusDraft, StatusCollecting, true},
{StatusDraft, StatusCancelled, true},
{StatusDraft, StatusRunning, false},
{StatusDraft, StatusClosed, false},
{StatusRunning, StatusSuccess, true},
{StatusRunning, StatusFailed, true},
{StatusRunning, StatusTimeout, true},
{StatusSuccess, StatusClosed, true},
{StatusSuccess, StatusDraft, false},
{StatusFailed, StatusReady, true}, // retry
{StatusFailed, StatusClosed, true},
{StatusFailed, StatusRunning, false},
{StatusFailed, StatusCollecting, true}, // retry: перезапуск сбора
{StatusTimeout, StatusReady, true}, // retry
{StatusTimeout, StatusCollecting, true}, // retry: перезапуск сбора
{StatusTimeout, StatusRunning, false},
{StatusClosed, StatusDraft, false},
{StatusClosed, StatusRunning, false},
}
for _, tc := range tests {
got := IsValidTransition(tc.from, tc.to)
if got != tc.want {
t.Errorf("IsValidTransition(%q → %q) = %v, want %v", tc.from, tc.to, got, tc.want)
}
}
}
func TestIsTerminal(t *testing.T) {
if !IsTerminal(StatusSuccess) {
t.Error("StatusSuccess should be terminal")
}
if !IsTerminal(StatusCancelled) {
t.Error("StatusCancelled should be terminal")
}
if IsTerminal(StatusDraft) {
t.Error("StatusDraft should NOT be terminal")
}
if IsTerminal(StatusRunning) {
t.Error("StatusRunning should NOT be terminal")
}
}