Files
iotlcm/server/internal/service/fullsyncretry/sync_kind_test.go
T
2026-10-29 14:36:49 +08:00

40 lines
1.3 KiB
Go

package fullsyncretry
import (
"context"
"net/http"
"net/http/httptest"
"testing"
"github.com/gogf/gf/v2/errors/gcode"
"github.com/gogf/gf/v2/errors/gerror"
)
func TestListRunsAcceptsFiveKindsAndRejectsUnknownFilters(t *testing.T) {
var filters []string
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
filters = append(filters, r.URL.Query().Get("syncKind"))
_, _ = w.Write([]byte(`{"items":null,"total":0}`))
}))
defer server.Close()
client := Client{BaseURL: server.URL}
kinds := []string{"", "traffic_usage", "sim_status", "imei", "traffic_usage_daily", "traffic_usage_monthly"}
for i, kind := range kinds {
result, err := client.ListRuns(context.Background(), kind, 100)
if err != nil || result.Items == nil || len(filters) != i+1 || filters[i] != kind {
t.Fatalf("kind=%q result=%+v filters=%v error=%v", kind, result, filters, err)
}
}
for _, query := range []struct {
kind string
limit int
}{{"unknown", 10}, {"IMEI", 10}, {"", -1}, {"imei", 101}} {
if _, err := client.ListRuns(context.Background(), query.kind, query.limit); gerror.Code(err) != gcode.CodeInvalidParameter {
t.Fatalf("invalid filter %+v: %v", query, err)
}
}
if len(filters) != len(kinds) {
t.Fatal("invalid filter reached Worker")
}
}