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