43 lines
1.2 KiB
Go
43 lines
1.2 KiB
Go
package app
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"gitea.maximumdirect.net/eric/narratio/internal/manifest"
|
|
)
|
|
|
|
func TestFirstNonSucceededIndex(t *testing.T) {
|
|
stages := BuildFullPlan()
|
|
m := manifest.New("2026-05-03", time.Now().UTC())
|
|
m.MarkStageSucceeded("prepare", time.Now().UTC(), nil)
|
|
m.MarkStageSucceeded("transcribe", time.Now().UTC(), nil)
|
|
|
|
got := firstNonSucceededIndex(stages, m)
|
|
if got != 2 {
|
|
t.Fatalf("firstNonSucceededIndex() = %d, want 2", got)
|
|
}
|
|
}
|
|
|
|
func TestDecideStageActions(t *testing.T) {
|
|
stages := BuildFullPlan()[:2]
|
|
m := manifest.New("2026-05-03", time.Now().UTC())
|
|
m.MarkStageSucceeded("prepare", time.Now().UTC(), nil)
|
|
|
|
got := decideStageActions(stages, m, false)
|
|
if len(got) != 2 {
|
|
t.Fatalf("len(decisions) = %d, want 2", len(got))
|
|
}
|
|
if got[0].Action != stageActionSkip {
|
|
t.Fatalf("prepare action = %q, want %q", got[0].Action, stageActionSkip)
|
|
}
|
|
if got[1].Action != stageActionRun {
|
|
t.Fatalf("transcribe action = %q, want %q", got[1].Action, stageActionRun)
|
|
}
|
|
|
|
forced := decideStageActions(stages, m, true)
|
|
if forced[0].Action != stageActionRun {
|
|
t.Fatalf("forced prepare action = %q, want %q", forced[0].Action, stageActionRun)
|
|
}
|
|
}
|