Files
beads/internal/rpc/comments_test.go
Steve Yegge 97e5df1180 Fix bd-1: Prevent test database pollution
Tests were connecting to test daemon but daemon routed to production DB via
findDatabaseForCwd(). Fixed by ensuring tests use isolated .beads directories
and change working directory to tmpDir.

Changes:
- bench_test.go: Added .beads subdir, chdir, and client.dbPath to setupBenchServer
- bench_test.go: Set dbPath for goroutine clients in BenchmarkConcurrentAgents
- comments_test.go: Refactored to use setupTestServer
- version_test.go: Fixed 4 tests to use setupTestServerIsolated with proper isolation
- rpc_test.go: Added setupTestServerIsolated() helper for custom test setup

Verified: RPC test suite runs with no database pollution (151→151 issues)
Amp-Thread-ID: https://ampcode.com/threads/T-348b7ba8-4292-4ed3-b143-0ad07d226c21
Co-authored-by: Amp <amp@ampcode.com>
2025-10-22 00:43:42 -07:00

66 lines
1.5 KiB
Go

package rpc
import (
"encoding/json"
"testing"
"github.com/steveyegge/beads/internal/types"
)
func TestCommentOperationsViaRPC(t *testing.T) {
_, client, cleanup := setupTestServer(t)
defer cleanup()
createResp, err := client.Create(&CreateArgs{
Title: "Comment test",
IssueType: "task",
Priority: 2,
})
if err != nil {
t.Fatalf("create issue failed: %v", err)
}
var created types.Issue
if err := json.Unmarshal(createResp.Data, &created); err != nil {
t.Fatalf("failed to decode create response: %v", err)
}
if created.ID == "" {
t.Fatal("expected issue ID to be set")
}
addResp, err := client.AddComment(&CommentAddArgs{
ID: created.ID,
Author: "tester",
Text: "first comment",
})
if err != nil {
t.Fatalf("add comment failed: %v", err)
}
var added types.Comment
if err := json.Unmarshal(addResp.Data, &added); err != nil {
t.Fatalf("failed to decode add comment response: %v", err)
}
if added.Text != "first comment" {
t.Fatalf("expected comment text 'first comment', got %q", added.Text)
}
listResp, err := client.ListComments(&CommentListArgs{ID: created.ID})
if err != nil {
t.Fatalf("list comments failed: %v", err)
}
var comments []*types.Comment
if err := json.Unmarshal(listResp.Data, &comments); err != nil {
t.Fatalf("failed to decode comment list: %v", err)
}
if len(comments) != 1 {
t.Fatalf("expected 1 comment, got %d", len(comments))
}
if comments[0].Text != "first comment" {
t.Fatalf("expected comment text 'first comment', got %q", comments[0].Text)
}
}