mirror of
https://github.com/RWejlgaard/org.git
synced 2026-09-02 01:15:35 +00:00
51 lines
1.5 KiB
Go
51 lines
1.5 KiB
Go
package ui
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/rwejlgaard/org/internal/model"
|
|
)
|
|
|
|
func TestApplyClosedTransitionEntersDone(t *testing.T) {
|
|
now := time.Date(2026, 7, 21, 14, 30, 0, 0, time.UTC)
|
|
item := &model.Item{Notes: []string{"a note", "CLOSED: [old stamp]"}}
|
|
|
|
applyClosedTransition(item, false, true, now)
|
|
|
|
if item.Closed == nil || !item.Closed.Equal(now) {
|
|
t.Fatalf("expected Closed set to now, got %v", item.Closed)
|
|
}
|
|
if len(item.Notes) != 1 || item.Notes[0] != "a note" {
|
|
t.Fatalf("expected stale CLOSED note stripped, got %v", item.Notes)
|
|
}
|
|
}
|
|
|
|
func TestApplyClosedTransitionLeavesDone(t *testing.T) {
|
|
now := time.Now()
|
|
stamp := now
|
|
item := &model.Item{Closed: &stamp, Notes: []string{" CLOSED: [x]", "keep"}}
|
|
|
|
applyClosedTransition(item, true, false, now)
|
|
|
|
if item.Closed != nil {
|
|
t.Fatalf("expected Closed cleared, got %v", item.Closed)
|
|
}
|
|
if len(item.Notes) != 1 || item.Notes[0] != "keep" {
|
|
t.Fatalf("expected CLOSED note stripped, got %v", item.Notes)
|
|
}
|
|
}
|
|
|
|
func TestApplyClosedTransitionDoneToDoneUnchanged(t *testing.T) {
|
|
orig := time.Date(2026, 1, 1, 9, 0, 0, 0, time.UTC)
|
|
item := &model.Item{Closed: &orig, Notes: []string{"keep"}}
|
|
|
|
applyClosedTransition(item, true, true, time.Now())
|
|
|
|
if item.Closed == nil || !item.Closed.Equal(orig) {
|
|
t.Fatalf("done->done must keep original Closed, got %v", item.Closed)
|
|
}
|
|
if len(item.Notes) != 1 || item.Notes[0] != "keep" {
|
|
t.Fatalf("done->done must not touch notes, got %v", item.Notes)
|
|
}
|
|
}
|