Files
MujicaUI/due_date_picker_test.go
T

84 lines
2.0 KiB
Go

package mujica
import (
"testing"
"github.com/egoist/mygo/ui"
)
func dueTester(v *Date, opts *DueDatePickerOptions, n *int) *ui.Tester {
return ui.NewTester(func(c *ui.Context) {
Use(c, Settings{})
o := *opts
o.Today = calendarToday
ui.Column(c).Padding(16).Children(func() {
if DueDatePicker(c, v, o).Changed() {
*n++
}
})
}, 480, 520)
}
func TestDueDatePickerShortcuts(t *testing.T) {
v, n := Date{}, 0
tt := dueTester(&v, &DueDatePickerOptions{}, &n)
_ = tt.Click("Tomorrow")
if v != oct(6) || n != 1 || !tt.HasText("Due tomorrow") {
t.Fatalf("tomorrow %v", v)
}
_ = tt.Click("Next week")
if v != oct(11) {
t.Fatalf("next week (Sunday start) %v", v)
}
_ = tt.Click("Today")
if v != oct(5) || !tt.HasText("Due today") {
t.Fatalf("today %v", v)
}
_ = tt.Click("Open calendar")
_ = tt.Click(datetimeTestLabel(oct(20)))
if v != oct(20) || n != 4 {
t.Fatalf("calendar pick %v (%d)", v, n)
}
}
func TestDueDatePickerOverdueAndDone(t *testing.T) {
v, n := oct(2), 0
opts := &DueDatePickerOptions{}
tt := dueTester(&v, opts, &n)
if !tt.HasText("Overdue by 3 days") {
t.Fatalf("overdue missing: %v", tt.Texts())
}
opts.Done = true
tt.Frame()
if tt.HasText("Overdue") {
t.Fatal("a done task is not overdue")
}
opts.Disabled = true
tt.Frame()
_ = tt.Click("Today")
if v != oct(2) || n != 0 {
t.Fatal("disabled picker changed")
}
}
func TestDueDatePickerSnapshot(t *testing.T) {
v := oct(2)
snapshot(t, "due_date_picker", 360, 140, func(c *ui.Context) {
ui.Column(c).Padding(16).Children(func() { DueDatePicker(c, &v, DueDatePickerOptions{Today: calendarToday}) })
})
}
func TestDueDatePickerSelectedShortcutMark(t *testing.T) {
v, n := oct(5), 0
tt := dueTester(&v, &DueDatePickerOptions{}, &n)
if !tt.HasText("✓ Today") {
t.Fatal("selected shortcut needs a non-color mark")
}
tt.Key(0, ui.KeyTab)
tt.Key(0, ui.KeyTab)
tt.Key(0, ui.KeyEnter)
if v != oct(6) || n != 1 {
t.Fatalf("keyboard shortcut date %v, changes %d", v, n)
}
}