parent
7d8ef4f128
commit
2271619ae1
@ -0,0 +1,81 @@
|
||||
package m9zApi
|
||||
|
||||
import (
|
||||
"path/filepath"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func useTempFaultHistoryFile(t *testing.T) {
|
||||
t.Helper()
|
||||
|
||||
oldFilePath := filePath
|
||||
filePath = filepath.Join(t.TempDir(), "data.json")
|
||||
t.Cleanup(func() {
|
||||
filePath = oldFilePath
|
||||
})
|
||||
}
|
||||
|
||||
func TestAddDataSkipsDuplicateFaultWithin12Hours(t *testing.T) {
|
||||
useTempFaultHistoryFile(t)
|
||||
|
||||
now := time.Date(2026, 7, 29, 8, 0, 0, 0, time.UTC)
|
||||
item := M9zFaultHistory{
|
||||
CommUid: "device-1",
|
||||
LoopIdx: 1,
|
||||
FaultCode: "01",
|
||||
FaultMsg: "short circuit",
|
||||
FaultTime: now,
|
||||
}
|
||||
if err := addData(item); err != nil {
|
||||
t.Fatalf("addData first item error = %v", err)
|
||||
}
|
||||
|
||||
duplicate := item
|
||||
duplicate.Voltage = 230
|
||||
duplicate.FaultTime = now.Add(faultDuplicateWindow - time.Second)
|
||||
if err := addData(duplicate); err != nil {
|
||||
t.Fatalf("addData duplicate item error = %v", err)
|
||||
}
|
||||
|
||||
items, err := readData()
|
||||
if err != nil {
|
||||
t.Fatalf("readData error = %v", err)
|
||||
}
|
||||
if len(items) != 1 {
|
||||
t.Fatalf("len(items) = %d, want 1", len(items))
|
||||
}
|
||||
if !items[0].FaultTime.Equal(now) {
|
||||
t.Fatalf("FaultTime = %v, want %v", items[0].FaultTime, now)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAddDataAllowsDuplicateFaultAfter12Hours(t *testing.T) {
|
||||
useTempFaultHistoryFile(t)
|
||||
|
||||
now := time.Date(2026, 7, 29, 8, 0, 0, 0, time.UTC)
|
||||
item := M9zFaultHistory{
|
||||
CommUid: "device-1",
|
||||
LoopIdx: 1,
|
||||
FaultCode: "01",
|
||||
FaultMsg: "short circuit",
|
||||
FaultTime: now,
|
||||
}
|
||||
if err := addData(item); err != nil {
|
||||
t.Fatalf("addData first item error = %v", err)
|
||||
}
|
||||
|
||||
duplicate := item
|
||||
duplicate.FaultTime = now.Add(faultDuplicateWindow)
|
||||
if err := addData(duplicate); err != nil {
|
||||
t.Fatalf("addData after window error = %v", err)
|
||||
}
|
||||
|
||||
items, err := readData()
|
||||
if err != nil {
|
||||
t.Fatalf("readData error = %v", err)
|
||||
}
|
||||
if len(items) != 2 {
|
||||
t.Fatalf("len(items) = %d, want 2", len(items))
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue