/ internal / agent / delta_test.go
delta_test.go
 1  package agent
 2  
 3  import (
 4  	"strings"
 5  	"testing"
 6  	"time"
 7  )
 8  
 9  func TestTemporalDelta_NoDeltaWithinSameDay(t *testing.T) {
10  	td := NewTemporalDelta()
11  	deltas := td.Check()
12  	if len(deltas) != 0 {
13  		t.Fatalf("expected no deltas on same day, got %d", len(deltas))
14  	}
15  }
16  
17  func TestTemporalDelta_DeltaOnDayRollover(t *testing.T) {
18  	td := &TemporalDelta{
19  		lastYear:    time.Now().Year(),
20  		lastYearDay: time.Now().YearDay() - 1, // simulate yesterday
21  	}
22  	deltas := td.Check()
23  	if len(deltas) != 1 {
24  		t.Fatalf("expected 1 delta, got %d", len(deltas))
25  	}
26  	if deltas[0].Kind != DeltaDateRollover {
27  		t.Fatalf("expected DeltaDateRollover, got %s", deltas[0].Kind)
28  	}
29  	if !strings.Contains(deltas[0].Message, "date has changed") {
30  		t.Fatalf("unexpected message: %s", deltas[0].Message)
31  	}
32  }
33  
34  func TestTemporalDelta_DeltaFiresOnlyOnce(t *testing.T) {
35  	td := &TemporalDelta{
36  		lastYear:    time.Now().Year(),
37  		lastYearDay: time.Now().YearDay() - 1,
38  	}
39  	deltas := td.Check()
40  	if len(deltas) != 1 {
41  		t.Fatalf("first check: expected 1 delta, got %d", len(deltas))
42  	}
43  	deltas = td.Check()
44  	if len(deltas) != 0 {
45  		t.Fatalf("second check: expected 0 deltas, got %d", len(deltas))
46  	}
47  }
48  
49  func TestTemporalDelta_YearRollover(t *testing.T) {
50  	td := &TemporalDelta{
51  		lastYear:    time.Now().Year() - 1,
52  		lastYearDay: 365,
53  	}
54  	deltas := td.Check()
55  	if len(deltas) != 1 {
56  		t.Fatalf("expected 1 delta on year rollover, got %d", len(deltas))
57  	}
58  }