Files
MujicaUI/examples/gallery/pages_mktchart_test.go
T

76 lines
2.0 KiB
Go

package main
import (
"strings"
"testing"
"github.com/egoist/mygo/ui"
mujica "mujicaui"
)
func mktDemoTester(t *testing.T, id string) (*ui.Tester, *[]string) {
t.Helper()
events := &[]string{}
tt := ui.NewTester(func(c *ui.Context) {
mujica.Use(c, mujica.Settings{})
ui.Scroll(c).Fill().Padding(12).Children(func() { mktDemo(c, func(s string) { *events = append(*events, s) }, id) })
}, 900, 800)
tt.SetPreferences(ui.Preferences{ReduceMotion: true, TextScale: 1})
return tt, events
}
func TestMarketChartPagesHaveInteractiveControls(t *testing.T) {
if len(mktchartPages) != 20 {
t.Fatalf("pages %d", len(mktchartPages))
}
for _, p := range mktchartPages {
t.Run(p.ID, func(t *testing.T) {
if p.Category != "Market Charts" || p.Code == "" || p.Keys == "" {
t.Fatal("incomplete page")
}
tt, events := mktDemoTester(t, p.ID)
if err := tt.Click("Red up"); err != nil {
t.Fatal(err)
}
if len(*events) == 0 || (*events)[len(*events)-1] != "Red up: true" {
t.Fatalf("control events %q", *events)
}
if err := tt.Click("Disabled"); err != nil {
t.Fatal(err)
}
if (*events)[len(*events)-1] != "Disabled: true" {
t.Fatalf("disabled event %q", *events)
}
})
}
}
func TestMarketChartDemosLogKeyboardAndAlerts(t *testing.T) {
for _, id := range []string{"141", "142", "143", "144", "145", "146", "147", "153", "155", "156", "157", "158", "159"} {
t.Run(id, func(t *testing.T) {
tt, events := mktDemoTester(t, id)
tabUntil(t, tt, "BTC")
tt.Key(0, ui.KeyRight)
want := id + ": point 0"
found := false
for _, e := range *events {
found = found || e == want
}
if !found {
t.Fatalf("keyboard event %q, want %s", *events, want)
}
})
}
tt, events := mktDemoTester(t, "159")
if err := tt.Click("Append crossing candle"); err != nil {
t.Fatal(err)
}
found := false
for _, e := range *events {
found = found || strings.HasPrefix(e, "Alert target crossed ")
}
if !found {
t.Fatalf("alert events %q", *events)
}
}