64 lines
1.8 KiB
Go
64 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/charmbracelet/glamour"
|
|
"sidekick/pkg/sidekick"
|
|
)
|
|
|
|
func TestRenderMessageNewlines(t *testing.T) {
|
|
r, _ := glamour.NewTermRenderer(
|
|
glamour.WithStandardStyle("dark"),
|
|
glamour.WithWordWrap(80),
|
|
)
|
|
m := model{renderer: r}
|
|
|
|
msg := sidekick.Message{
|
|
Role: sidekick.MessageRoleUser,
|
|
Content: "Line 1\nLine 2",
|
|
}
|
|
|
|
rendered := m.renderMessage(msg)
|
|
if !strings.Contains(rendered, "Line 1") || !strings.Contains(rendered, "Line 2") {
|
|
t.Errorf("rendered message missing content: %s", rendered)
|
|
}
|
|
|
|
// Check if newline is preserved. If squashed, it might be "Line 1 Line 2"
|
|
if strings.Contains(rendered, "Line 1 Line 2") {
|
|
t.Error("newlines were squashed in user message")
|
|
}
|
|
}
|
|
|
|
func TestRenderMessageReasoningGap(t *testing.T) {
|
|
r, _ := glamour.NewTermRenderer(
|
|
glamour.WithStandardStyle("dark"),
|
|
glamour.WithWordWrap(80),
|
|
)
|
|
m := model{renderer: r}
|
|
|
|
msg := sidekick.Message{
|
|
Role: sidekick.MessageRoleAssistant,
|
|
Reasoning: "Thinking about it",
|
|
Content: "Actual response",
|
|
}
|
|
|
|
rendered := m.renderMessage(msg)
|
|
// Check if there is a gap between Thinking and Response
|
|
|
|
if !strings.Contains(rendered, "Thinking") ||
|
|
!strings.Contains(rendered, "Actual") ||
|
|
!strings.Contains(rendered, "response") {
|
|
t.Errorf("rendered message missing content: %s", rendered)
|
|
}
|
|
|
|
// If there's no blank line between reasoning and content, they might be too close.
|
|
// We want to see if they are on adjacent lines or have a gap.
|
|
// The user says "next one begins immediately while it should start from a new line"
|
|
// This might mean it's on the SAME line if glamour messed up, or just next line.
|
|
|
|
// Let's print it to see
|
|
t.Logf("Rendered Assistant:\n%s", rendered)
|
|
}
|