package refinery import ( "os" "path/filepath" "testing" "github.com/steveyegge/gastown/internal/rig" ) func setupTestManager(t *testing.T) (*Manager, string) { t.Helper() // Create temp directory structure tmpDir := t.TempDir() rigPath := filepath.Join(tmpDir, "testrig") if err := os.MkdirAll(filepath.Join(rigPath, ".runtime"), 0755); err != nil { t.Fatalf("mkdir .runtime: %v", err) } r := &rig.Rig{ Name: "testrig", Path: rigPath, } return NewManager(r), rigPath } func TestManager_SessionName(t *testing.T) { mgr, _ := setupTestManager(t) want := "gt-testrig-refinery" got := mgr.SessionName() if got != want { t.Errorf("SessionName() = %s, want %s", got, want) } } func TestManager_IsRunning_NoSession(t *testing.T) { mgr, _ := setupTestManager(t) // Without a tmux session, IsRunning should return false // Note: this test doesn't create a tmux session, so it tests the "not running" case running, err := mgr.IsRunning() if err != nil { // If tmux server isn't running, HasSession returns an error // This is expected in test environments without tmux t.Logf("IsRunning returned error (expected without tmux): %v", err) return } if running { t.Error("IsRunning() = true, want false (no session created)") } } func TestManager_Status_NotRunning(t *testing.T) { mgr, _ := setupTestManager(t) // Without a tmux session, Status should return ErrNotRunning _, err := mgr.Status() if err == nil { t.Error("Status() expected error when not running") } // May return ErrNotRunning or a tmux server error t.Logf("Status returned error (expected): %v", err) } func TestManager_Queue_NoBeads(t *testing.T) { mgr, _ := setupTestManager(t) // Queue returns error when no beads database exists // This is expected - beads requires initialization _, err := mgr.Queue() if err == nil { // If beads is somehow available, queue should be empty t.Log("Queue() succeeded unexpectedly (beads may be available)") return } // Error is expected when beads isn't initialized t.Logf("Queue() returned error (expected without beads): %v", err) } func TestManager_FindMR_NoBeads(t *testing.T) { mgr, _ := setupTestManager(t) // FindMR returns error when no beads database exists _, err := mgr.FindMR("nonexistent-mr") if err == nil { t.Error("FindMR() expected error") } // Any error is acceptable when beads isn't initialized t.Logf("FindMR() returned error (expected): %v", err) } func TestManager_RegisterMR_Deprecated(t *testing.T) { mgr, _ := setupTestManager(t) mr := &MergeRequest{ ID: "gt-mr-test", Branch: "polecat/Test/gt-123", Worker: "Test", Status: MROpen, } // RegisterMR should return an error indicating deprecation err := mgr.RegisterMR(mr) if err == nil { t.Error("RegisterMR() expected error (deprecated)") } } func TestManager_Retry_Deprecated(t *testing.T) { mgr, _ := setupTestManager(t) // Retry is deprecated and should not error, just print a message err := mgr.Retry("any-id", false) if err != nil { t.Errorf("Retry() unexpected error: %v", err) } }