76 lines
2.0 KiB
Go
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)
|
|
}
|
|
}
|