Files
skrueckenandCursor 4adfcdb95a Add tm_server with SQLite, Svelte UI, and task-master TUI sync.
Introduces the web backend (auth, RBAC, project tokens, revisions),
YouTrack-or-taskmaster backend choice in the TUI, and a first-pass
embedded Svelte UI. The frontend is functional but needs a major rework.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-27 22:23:11 +01:00

59 lines
1.6 KiB
Go

package views_test
import (
"testing"
"task/internal/project"
"task/internal/ui/views"
)
func TestProjectEditMetaKeepsToken(t *testing.T) {
prev := project.Meta{
Backend: project.BackendYouTrack,
YouTrack: &project.YouTrack{
BaseURL: "https://yt.example",
Token: "secret",
ProjectKey: "ABC",
},
}
f := views.NewProjectEditForm("inbox", prev, 80)
// Leave token blank → keep previous.
f.Inputs[views.FieldRemoteURL].SetValue("https://yt.example")
f.Inputs[views.FieldProjectKey].SetValue("ABC")
f.Inputs[views.FieldToken].SetValue("")
meta := f.Meta(prev)
if meta.YouTrack == nil || meta.YouTrack.Token != "secret" {
t.Fatalf("expected kept token, got %+v", meta.YouTrack)
}
if err := f.Validate(prev); err != nil {
t.Fatalf("Validate: %v", err)
}
}
func TestProjectEditValidateIncomplete(t *testing.T) {
f := views.NewProjectEditForm("inbox", project.Meta{Backend: project.BackendYouTrack}, 80)
f.BackendIdx = 1 // youtrack
f.Backend = project.BackendYouTrack
f.Inputs[views.FieldRemoteURL].SetValue("https://yt.example")
// missing token + key
if err := f.Validate(project.Meta{}); err == nil {
t.Fatal("expected incomplete error")
}
}
func TestProjectEditTaskMaster(t *testing.T) {
prev := project.Meta{
Backend: project.BackendTaskMaster,
TaskMaster: &project.TaskMaster{
BaseURL: "http://127.0.0.1:8080", Token: "tm_secret", ProjectID: "abc",
},
}
f := views.NewProjectEditForm("inbox", prev, 80)
f.Inputs[views.FieldToken].SetValue("")
meta := f.Meta(prev)
if meta.TaskMaster == nil || meta.TaskMaster.Token != "tm_secret" {
t.Fatalf("expected kept tm token, got %+v", meta.TaskMaster)
}
}