feat(ui): add maintenance page for task management
Some checks failed
CI / build-and-test (push) Failing after -31m53s
Some checks failed
CI / build-and-test (push) Failing after -31m53s
* Implement maintenance page with task and log display * Add backfill and metadata retry functionality * Integrate grid component for project display in thoughts page * Update types for maintenance tasks and logs * Enhance sidebar and shell for new maintenance navigation
This commit is contained in:
70
internal/tools/learnings_test.go
Normal file
70
internal/tools/learnings_test.go
Normal file
@@ -0,0 +1,70 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"git.warky.dev/wdevs/amcs/internal/mcperrors"
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
func TestLearningsAddRequiresSummary(t *testing.T) {
|
||||
tool := &LearningsTool{}
|
||||
|
||||
_, _, err := tool.Add(context.Background(), nil, AddLearningInput{})
|
||||
if err == nil {
|
||||
t.Fatal("Add() error = nil, want error")
|
||||
}
|
||||
|
||||
_, data := requireRPCError(t, err)
|
||||
if data.Field != "summary" {
|
||||
t.Fatalf("Add() error field = %q, want %q", data.Field, "summary")
|
||||
}
|
||||
}
|
||||
|
||||
func TestLearningsMethodsRequireConfiguredStore(t *testing.T) {
|
||||
tool := &LearningsTool{}
|
||||
|
||||
t.Run("add", func(t *testing.T) {
|
||||
_, _, err := tool.Add(context.Background(), nil, AddLearningInput{Summary: "Keep this"})
|
||||
if err == nil {
|
||||
t.Fatal("Add() error = nil, want error")
|
||||
}
|
||||
_, data := requireRPCError(t, err)
|
||||
if data.Type != mcperrors.TypeInvalidInput {
|
||||
t.Fatalf("Add() data.type = %q, want %q", data.Type, mcperrors.TypeInvalidInput)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("get", func(t *testing.T) {
|
||||
_, _, err := tool.Get(context.Background(), nil, GetLearningInput{ID: uuid.New()})
|
||||
if err == nil {
|
||||
t.Fatal("Get() error = nil, want error")
|
||||
}
|
||||
_, data := requireRPCError(t, err)
|
||||
if data.Type != mcperrors.TypeInvalidInput {
|
||||
t.Fatalf("Get() data.type = %q, want %q", data.Type, mcperrors.TypeInvalidInput)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("list", func(t *testing.T) {
|
||||
_, _, err := tool.List(context.Background(), nil, ListLearningsInput{})
|
||||
if err == nil {
|
||||
t.Fatal("List() error = nil, want error")
|
||||
}
|
||||
_, data := requireRPCError(t, err)
|
||||
if data.Type != mcperrors.TypeInvalidInput {
|
||||
t.Fatalf("List() data.type = %q, want %q", data.Type, mcperrors.TypeInvalidInput)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestNormalizeStringSliceTrimsDedupesAndDropsEmpties(t *testing.T) {
|
||||
got := normalizeStringSlice([]string{" alpha ", "beta", "", "beta", "alpha"})
|
||||
if len(got) != 2 {
|
||||
t.Fatalf("normalizeStringSlice() len = %d, want 2", len(got))
|
||||
}
|
||||
if got[0] != "alpha" || got[1] != "beta" {
|
||||
t.Fatalf("normalizeStringSlice() = %#v, want [alpha beta]", got)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user