63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package database
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
// ── Additional Test Seed Helpers (v0.15.0) ──
|
|
|
|
// SeedTestMessage creates a single message in a channel and returns the message ID.
|
|
func SeedTestMessage(t *testing.T, channelID, parentID, role, content string) string {
|
|
t.Helper()
|
|
var id string
|
|
var parentPtr *string
|
|
if parentID != "" {
|
|
parentPtr = &parentID
|
|
}
|
|
err := DB.QueryRow(`
|
|
INSERT INTO messages (channel_id, parent_id, role, content, sibling_index)
|
|
VALUES ($1, $2, $3, $4, 0)
|
|
RETURNING id
|
|
`, channelID, parentPtr, role, content).Scan(&id)
|
|
if err != nil {
|
|
t.Fatalf("SeedTestMessage: %v", err)
|
|
}
|
|
return id
|
|
}
|
|
|
|
// SeedTestMessages creates a linear chain of alternating user/assistant messages.
|
|
// Returns all message IDs in order. The first message has no parent.
|
|
func SeedTestMessages(t *testing.T, channelID string, count int, contentSize int) []string {
|
|
t.Helper()
|
|
content := strings.Repeat("x", contentSize)
|
|
ids := make([]string, 0, count)
|
|
|
|
parentID := ""
|
|
for i := 0; i < count; i++ {
|
|
role := "user"
|
|
if i%2 == 1 {
|
|
role = "assistant"
|
|
}
|
|
id := SeedTestMessage(t, channelID, parentID, role, content)
|
|
ids = append(ids, id)
|
|
parentID = id
|
|
}
|
|
|
|
return ids
|
|
}
|
|
|
|
// SeedTestCursor sets the active leaf for a user in a channel.
|
|
func SeedTestCursor(t *testing.T, channelID, userID, leafID string) {
|
|
t.Helper()
|
|
_, err := DB.Exec(`
|
|
INSERT INTO channel_cursors (channel_id, user_id, active_leaf_id)
|
|
VALUES ($1, $2, $3)
|
|
ON CONFLICT (channel_id, user_id)
|
|
DO UPDATE SET active_leaf_id = $3, updated_at = NOW()
|
|
`, channelID, userID, leafID)
|
|
if err != nil {
|
|
t.Fatalf("SeedTestCursor: %v", err)
|
|
}
|
|
}
|