bugfix wunderground reporting

This commit is contained in:
2026-03-09 09:19:45 +11:00
parent 5b8cad905f
commit c796f1324e
12 changed files with 253 additions and 33 deletions

View File

@@ -0,0 +1,50 @@
package mqttingest
import (
"testing"
"time"
)
func TestLatestDailyRainUsesConfiguredTimezone(t *testing.T) {
loc, err := time.LoadLocation("Australia/Sydney")
if err != nil {
t.Fatalf("load location: %v", err)
}
l := NewLatest(loc)
// Crosses UTC midnight but remains the same local day in Sydney (UTC+11 during DST).
l.Update(time.Date(2026, time.January, 14, 22, 0, 0, 0, time.UTC), &WS90Payload{RainMM: 0})
l.Update(time.Date(2026, time.January, 14, 23, 30, 0, 0, time.UTC), &WS90Payload{RainMM: 2})
l.Update(time.Date(2026, time.January, 15, 0, 5, 0, 0, time.UTC), &WS90Payload{RainMM: 2})
snap, ok := l.Snapshot()
if !ok {
t.Fatal("expected snapshot")
}
if snap.DailyRainMM != 2 {
t.Fatalf("expected daily rain 2.0mm, got %.2fmm", snap.DailyRainMM)
}
}
func TestLatestDailyRainResetsAtConfiguredLocalMidnight(t *testing.T) {
loc, err := time.LoadLocation("Australia/Sydney")
if err != nil {
t.Fatalf("load location: %v", err)
}
l := NewLatest(loc)
// Crosses local midnight in Sydney (00:00 local == 13:00 UTC during DST).
l.Update(time.Date(2026, time.January, 15, 12, 30, 0, 0, time.UTC), &WS90Payload{RainMM: 0})
l.Update(time.Date(2026, time.January, 15, 12, 50, 0, 0, time.UTC), &WS90Payload{RainMM: 1})
l.Update(time.Date(2026, time.January, 15, 13, 10, 0, 0, time.UTC), &WS90Payload{RainMM: 1})
snap, ok := l.Snapshot()
if !ok {
t.Fatal("expected snapshot")
}
if snap.DailyRainMM != 0 {
t.Fatalf("expected daily rain reset after local midnight; got %.2fmm", snap.DailyRainMM)
}
}