This repository has been archived on 2026-04-03. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
core/server/notifications/templates_test.go
Jeffrey Smith c470037fb5
Some checks failed
CI/CD / detect-changes (push) Successful in 23s
CI/CD / test-sqlite (push) Failing after 20s
CI/CD / test-frontend (push) Failing after 21s
CI/CD / test-go-pg (push) Failing after 38s
CI/CD / build-and-deploy (push) Has been skipped
rebrand + purge orphaned frontend: Chat Switchboard → Switchboard Core
Branding: bulk rename across 50+ files (Go, JS, CSS, HTML, YAML, JSON,
shell scripts). Fix Helm chart description and git repo URLs.
Fix test helper taglines.

Admin surface: strip 14 gutted tabs (providers, models, personas,
roles, knowledge, memory, tasks, health, routing, capabilities,
channels, dashboard, usage, stats). Collapse to 4 categories:
People, Workflows, System, Monitoring.

Settings surface: strip 11 gutted tabs (models, personas, providers,
roles, knowledge, memory, usage, workflows, tasks, data, gitkeys).
Keep: general, appearance, profile, teams, connections, notifications.

Team-admin surface: strip 5 gutted tabs (personas, providers,
knowledge, tasks, usage). Keep: members, groups, connections,
workflows, settings, activity.

Components: delete chat-pane/ (13 files, 1938 lines) and
notes-pane/ (10 files, 2381 lines).

main.go: remove stale Health.Prune maintenance goroutine.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 10:28:09 +00:00

70 lines
1.8 KiB
Go

package notifications
import (
"strings"
"testing"
"switchboard-core/models"
)
func TestRenderHTML_Basic(t *testing.T) {
n := &models.Notification{
Title: "KB Ready",
Body: "Your knowledge base has been processed.",
Type: "kb.ready",
}
html := RenderHTML(n, "TestInstance")
if !strings.Contains(html, "KB Ready") {
t.Error("expected title in HTML output")
}
if !strings.Contains(html, "TestInstance") {
t.Error("expected instance name in HTML output")
}
if !strings.Contains(html, "knowledge base") {
t.Error("expected body in HTML output")
}
}
func TestRenderHTML_DefaultInstanceName(t *testing.T) {
n := &models.Notification{Title: "Test"}
html := RenderHTML(n, "")
if !strings.Contains(html, "Switchboard Core") {
t.Error("expected default instance name")
}
}
func TestRenderText_Basic(t *testing.T) {
n := &models.Notification{
Title: "Model Fallback",
Body: "GPT-4 fell back to GPT-3.5.",
Type: "role.fallback",
}
text := RenderText(n, "MyInstance")
if !strings.Contains(text, "Model Fallback") {
t.Error("expected title in text output")
}
if !strings.Contains(text, "GPT-4 fell back") {
t.Error("expected body in text output")
}
}
func TestSubjectForNotification(t *testing.T) {
tests := []struct {
notifType string
title string
want string
}{
{"kb.ready", "KB Processed", "[Test] Knowledge Base: KB Processed"},
{"role.fallback", "Fallback", "[Test] Model Alert: Fallback"},
{"grant.changed", "Added to team", "[Test] Access Change: Added to team"},
{"custom.type", "Hello", "[Test] Hello"},
}
for _, tt := range tests {
n := &models.Notification{Type: tt.notifType, Title: tt.title}
got := SubjectForNotification(n, "Test")
if got != tt.want {
t.Errorf("SubjectForNotification(%q, %q) = %q, want %q", tt.notifType, tt.title, got, tt.want)
}
}
}