diff --git a/tide/normalize.go b/tide/normalize.go index 1c44729..07ee71d 100644 --- a/tide/normalize.go +++ b/tide/normalize.go @@ -81,6 +81,9 @@ func maskDate(path string, val any, diffs *[]Diff) any { } func maskIDValue(path string, val any, diffs *[]Diff) any { + if val == nil { + return nil + } n, ok := val.(json.Number) if !ok { *diffs = append(*diffs, Diff{Path: path, Expected: "integer id", Actual: formatValue(val)}) diff --git a/tide/normalize_test.go b/tide/normalize_test.go index 00156e6..944de80 100644 --- a/tide/normalize_test.go +++ b/tide/normalize_test.go @@ -16,6 +16,10 @@ func TestNormalizeDateIDAndDisable(t *testing.T) { if diffs := compareBodies(Response{Headers: jsonCT(), Body: Body(want)}, Response{Headers: jsonCT(), Body: Body(gotOK)}, step); len(diffs) != 0 { t.Fatalf("masked date/id should pass: %+v", diffs) } + nullID := []byte(`{"id":1,"discogs_id":null,"created_at":"2026-01-01T00:00:00+00:00","slug":"keep-me"}`) + if diffs := compareBodies(Response{Headers: jsonCT(), Body: Body(nullID)}, Response{Headers: jsonCT(), Body: Body(nullID)}, step); len(diffs) != 0 { + t.Fatalf("null *_id must pass: %+v", diffs) + } zdiffs := compareBodies(Response{Headers: jsonCT(), Body: Body(want)}, Response{Headers: jsonCT(), Body: Body(gotZ)}, step) if len(zdiffs) == 0 { t.Fatal("Z date must fail")