▍ humdrum codex / ticktock v0.0.2
license AGPL-3.0
1.5 KB raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package grid

import (
	"testing"

	tea "github.com/charmbracelet/bubbletea"
)

func TestRangeTimes(t *testing.T) {
	m := loaded(&fakeStore{}) // slot 30, window 07:00.. → row0=07:00
	s, e := m.rangeTimes(0, 1)
	if s != "07:00" || e != "08:00" {
		t.Errorf("rangeTimes(0,1)=%s..%s, want 07:00..08:00", s, e)
	}
	s, e = m.rangeTimes(0, 0)
	if s != "07:00" || e != "07:30" {
		t.Errorf("single-slot rangeTimes(0,0)=%s..%s, want 07:00..07:30", s, e)
	}
}

func TestSelectionAddCallsStoreAdd(t *testing.T) {
	f := &fakeStore{}
	m := loaded(f)
	// enter ACTIVITY, anchor at 0, extend to 1, finalize
	nm, _ := m.Update(special(tea.KeyLeft)) // ensure ACTIVITY
	nm, _ = nm.(Model).Update(key(" "))     // anchor
	nm, _ = nm.(Model).Update(special(tea.KeyDown))
	nm, _ = nm.(Model).Update(key(" ")) // finalize → opens form
	mm := nm.(Model)
	if !mm.editing || !mm.adding || mm.form == nil {
		t.Fatalf("finalize should open the add form")
	}
	if mm.fv.Start != "07:00" || mm.fv.End != "08:00" {
		t.Errorf("form prefilled %s..%s, want 07:00..08:00", mm.fv.Start, mm.fv.End)
	}
	// fill required fields then Ctrl+S
	mm.fv.Project, mm.fv.Desc = "ARCHER", "new work"
	nm, _ = mm.Update(special(tea.KeyCtrlS))
	if len(f.added) != 1 {
		t.Fatalf("store.Add not called; added=%d", len(f.added))
	}
	if f.added[0].Project != "ARCHER" || f.added[0].Description != "new work" {
		t.Errorf("added wrong entry: %+v", f.added[0])
	}
	if f.added[0].Start.Hour() != 7 || f.added[0].End.Hour() != 8 {
		t.Errorf("added times wrong: %v..%v", f.added[0].Start, f.added[0].End)
	}
}