wip chat sessions 2
This commit is contained in:
92 files changed
+3692
-22
No files matched your search
@@ -0,0 +1,110 @@
|
||||
package mujica
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
)
|
||||
|
||||
func knowledgeFiles() []KnowledgeFile {
|
||||
return []KnowledgeFile{{ID: "1", Name: "etiquette.pdf", Tokens: 120000}, {ID: "2", Name: "menu.md", Tokens: 50000}}
|
||||
}
|
||||
|
||||
func TestProjectKnowledgePanelAddRemove(t *testing.T) {
|
||||
files := knowledgeFiles()
|
||||
adds := 0
|
||||
tt := chatTester(420, 400, func(c *ui.Context) {
|
||||
v := ProjectKnowledgePanel(c, files, ProjectKnowledgePanelOptions{Capacity: 400000})
|
||||
if v.Add {
|
||||
adds++
|
||||
}
|
||||
if v.Removed != "" {
|
||||
for i, f := range files {
|
||||
if f.ID == v.Removed {
|
||||
files = append(files[:i:i], files[i+1:]...)
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
if !tt.HasText("170000 of 400000 tokens (42%)") {
|
||||
t.Fatalf("texts %q", tt.Texts())
|
||||
}
|
||||
_ = tt.Click("Add files")
|
||||
if adds != 1 {
|
||||
t.Fatalf("adds %d", adds)
|
||||
}
|
||||
if err := tt.Click("Remove menu.md"); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(files) != 1 || files[0].ID != "1" || !tt.HasText("120000 of 400000 tokens (30%)") {
|
||||
t.Fatalf("files %v texts %q", files, tt.Texts())
|
||||
}
|
||||
}
|
||||
|
||||
func TestProjectKnowledgePanelCapacityStates(t *testing.T) {
|
||||
for _, tc := range []struct {
|
||||
capacity int
|
||||
note string
|
||||
}{{200000, "Nearly full"}, {150000, "Over capacity"}} {
|
||||
tt := chatTester(420, 400, func(c *ui.Context) {
|
||||
ProjectKnowledgePanel(c, knowledgeFiles(), ProjectKnowledgePanelOptions{Capacity: tc.capacity})
|
||||
})
|
||||
if !tt.HasText(tc.note) {
|
||||
t.Errorf("%d: texts %q", tc.capacity, tt.Texts())
|
||||
}
|
||||
}
|
||||
tt := chatTester(420, 400, func(c *ui.Context) {
|
||||
ProjectKnowledgePanel(c, nil, ProjectKnowledgePanelOptions{Capacity: 10})
|
||||
})
|
||||
if !tt.HasText("No files yet") {
|
||||
t.Fatal("empty state missing")
|
||||
}
|
||||
}
|
||||
|
||||
func TestProjectKnowledgePanelDisabledAndKeys(t *testing.T) {
|
||||
removed := ""
|
||||
tt := chatTester(420, 400, func(c *ui.Context) {
|
||||
if v := ProjectKnowledgePanel(c, knowledgeFiles(), ProjectKnowledgePanelOptions{Capacity: 400000, Disabled: true}); v.Removed != "" {
|
||||
removed = v.Removed
|
||||
}
|
||||
})
|
||||
_ = tt.Click("Remove menu.md")
|
||||
tt.Key(0, ui.KeyTab)
|
||||
tt.Key(0, ui.KeyEnter)
|
||||
if removed != "" {
|
||||
t.Fatalf("disabled panel removed %q", removed)
|
||||
}
|
||||
tt = chatTester(420, 400, func(c *ui.Context) {
|
||||
if v := ProjectKnowledgePanel(c, knowledgeFiles(), ProjectKnowledgePanelOptions{Capacity: 400000}); v.Removed != "" {
|
||||
removed = v.Removed
|
||||
}
|
||||
})
|
||||
tt.Key(0, ui.KeyTab)
|
||||
tt.Key(0, ui.KeyTab)
|
||||
tt.Key(0, ui.KeyDown)
|
||||
tt.Key(0, ui.KeyEnter)
|
||||
if removed != "2" {
|
||||
t.Fatalf("keys removed %q", removed)
|
||||
}
|
||||
}
|
||||
|
||||
func TestProjectKnowledgePanelRejectsBadCapacity(t *testing.T) {
|
||||
defer func() {
|
||||
if recover() == nil {
|
||||
t.Fatal("no panic")
|
||||
}
|
||||
}()
|
||||
ui.Render(func(c *ui.Context) {
|
||||
Use(c, Settings{})
|
||||
ProjectKnowledgePanel(c, nil, ProjectKnowledgePanelOptions{})
|
||||
}, 100, 100, 1)
|
||||
}
|
||||
|
||||
func TestProjectKnowledgePanelSnapshot(t *testing.T) {
|
||||
snapshot(t, "project_knowledge_panel", 420, 240, func(c *ui.Context) {
|
||||
ui.Column(c).Padding(16).Children(func() {
|
||||
ProjectKnowledgePanel(c, knowledgeFiles(), ProjectKnowledgePanelOptions{Capacity: 200000})
|
||||
})
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user