package workflow import ( "os" "path/filepath" "testing" ) func TestWorkflowExists_DetectsScaffoldedDir(t *testing.T) { cfg := newCfg(t) if WorkflowExists(cfg, "missing") { t.Error("missing workflow reported as existing") } dir := filepath.Join(cfg.Workspace, "workflows", "present") if err := os.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } if !WorkflowExists(cfg, "present") { t.Error("scaffolded workflow reported as missing") } } func TestDisableEnableRoundTrip(t *testing.T) { cfg := newCfg(t) dir := filepath.Join(cfg.Workspace, "workflows", "wf") if err := os.MkdirAll(dir, 0o755); err != nil { t.Fatal(err) } if IsDisabled(cfg, "wf") { t.Fatal("fresh workflow should not be disabled") } if err := Disable(cfg, "wf"); err != nil { t.Fatalf("Disable: %v", err) } if !IsDisabled(cfg, "wf") { t.Error("Disable did not flip IsDisabled") } if _, err := os.Stat(filepath.Join(dir, DisabledMarker)); err != nil { t.Errorf("marker file missing after Disable: %v", err) } // Repeat Disable: clean no-op. if err := Disable(cfg, "wf"); err != nil { t.Errorf("repeat Disable returned error: %v", err) } if err := Enable(cfg, "wf"); err != nil { t.Fatalf("Enable: %v", err) } if IsDisabled(cfg, "wf") { t.Error("Enable did not flip IsDisabled") } // Repeat Enable on an already-enabled workflow: clean no-op. if err := Enable(cfg, "wf"); err != nil { t.Errorf("repeat Enable returned error: %v", err) } } func TestDisableEnable_RejectMissingWorkflow(t *testing.T) { cfg := newCfg(t) if err := Disable(cfg, "ghost"); err == nil { t.Error("Disable should reject a missing workflow") } if err := Enable(cfg, "ghost"); err == nil { t.Error("Enable should reject a missing workflow") } } func TestDisableEnable_RejectBadName(t *testing.T) { cfg := newCfg(t) if err := Disable(cfg, "Bad/Name"); err == nil { t.Error("Disable should reject a bad name") } if err := Enable(cfg, "Bad/Name"); err == nil { t.Error("Enable should reject a bad name") } } func TestDisableEnable_RejectNilConfig(t *testing.T) { if err := Disable(nil, "wf"); err == nil { t.Error("Disable should reject nil config") } if err := Enable(nil, "wf"); err == nil { t.Error("Enable should reject nil config") } }