99 lines
2.6 KiB
Go
99 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/egoist/mygo/ui"
|
|
|
|
"git.zacharyzhang.com/ZacharyZhang-NY/MujicaUI/core"
|
|
)
|
|
|
|
func projectsGalleryTester(t *testing.T, id string) (*ui.Tester, *[]string) {
|
|
t.Helper()
|
|
var events []string
|
|
for _, p := range projectsPages {
|
|
if p.ID == id {
|
|
tt := ui.NewTester(func(c *ui.Context) {
|
|
core.Use(c, core.Settings{})
|
|
ui.Column(c).Fill().Gap(12).Padding(16).Children(func() { p.Demo(c, func(s string) { events = append(events, s) }) })
|
|
}, 1200, 1000)
|
|
tt.SetPreferences(ui.Preferences{ReduceMotion: true, TextScale: 1})
|
|
return tt, &events
|
|
}
|
|
}
|
|
t.Fatal("unknown project page " + id)
|
|
return nil, nil
|
|
}
|
|
|
|
func TestProjectsGalleryCatalog(t *testing.T) {
|
|
if len(projectsPages) != 18 {
|
|
t.Fatalf("pages = %d", len(projectsPages))
|
|
}
|
|
seen := map[string]bool{}
|
|
for _, p := range projectsPages {
|
|
if p.Category != "Projects" || p.Keys == "" || p.Code == "" || seen[p.ID] {
|
|
t.Fatalf("invalid page %s", p.ID)
|
|
}
|
|
seen[p.ID] = true
|
|
projectsGalleryTester(t, p.ID)
|
|
}
|
|
if seen["366"] || seen["367"] {
|
|
t.Fatal("dropped components have gallery pages")
|
|
}
|
|
}
|
|
|
|
func TestProjectsGalleryEvents(t *testing.T) {
|
|
for _, tc := range []struct{ id, action, event string }{
|
|
{"361", "ENG-1 Plan the release", "open ENG-1"},
|
|
{"362", "Done 1", "filter = 2"},
|
|
{"363", "Plan the release", "open ENG-1"},
|
|
{"364", "Close details", "close details"},
|
|
{"365", "Clear subtasks", "clear subtasks"},
|
|
{"368", "ENG-1 Plan the release", "open ENG-1"},
|
|
{"369", "Ideal", "toggle Ideal"},
|
|
{"370", "Icon only", "Icon only = true"},
|
|
{"371", "Status", ""},
|
|
{"372", "Disabled", "Disabled = true"},
|
|
{"373", "Today", "due "},
|
|
{"374", "UI", "labels changed:"},
|
|
{"375", "ENG-1 Plan the release", "open ENG-1"},
|
|
{"376", "Copy ENG-123", "copied ENG-123"},
|
|
{"377", "Completed tasks", ""},
|
|
{"378", "Ben assigned hours", ""},
|
|
{"379", "Start", "tracked "},
|
|
{"380", "Start", "timer phase = 0, running = true"},
|
|
} {
|
|
t.Run(tc.id, func(t *testing.T) {
|
|
tt, events := projectsGalleryTester(t, tc.id)
|
|
if err := tt.Click(tc.action); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
switch tc.id {
|
|
case "371":
|
|
tt.Key(0, ui.KeyEnd)
|
|
tt.Key(0, ui.KeyEnter)
|
|
tc.event = "status done"
|
|
case "377", "378":
|
|
tt.Command("selectAll")
|
|
tt.Type("5")
|
|
tt.Key(0, ui.KeyEnter)
|
|
if tc.id == "377" {
|
|
tc.event = "completed = 5"
|
|
} else {
|
|
tc.event = "assigned = 5"
|
|
}
|
|
}
|
|
found := false
|
|
for _, e := range *events {
|
|
if strings.HasPrefix(e, tc.event) {
|
|
found = true
|
|
}
|
|
}
|
|
if !found {
|
|
t.Fatalf("event %q missing in %v", tc.event, *events)
|
|
}
|
|
})
|
|
}
|
|
}
|