package datadogv2 import ( "reflect" "testing" ) func TestRequestUnmarshalJSONFailure(t *testing.T) { f := func(s string) { t.Helper() var req Request if err := UnmarshalJSON(&req, []byte(s)); err == nil { t.Fatalf("expecting non-nil error for Unmarshal(%q)", s) } } f("") f("foobar") f(`{"series":123`) f(`1234`) f(`[]`) } func TestRequestUnmarshalJSONSuccess(t *testing.T) { f := func(s string, reqExpected *Request) { t.Helper() var req Request if err := UnmarshalJSON(&req, []byte(s)); err != nil { t.Fatalf("unexpected error in Unmarshal(%q): %s", s, err) } if !reflect.DeepEqual(&req, reqExpected) { t.Fatalf("unexpected row;\ngot\n%+v\nwant\n%+v", &req, reqExpected) } } f("{}", &Request{}) f(` { "series": [ { "metric": "system.load.1", "type": 0, "points": [ { "timestamp": 1636629071, "value": 0.7 } ], "resources": [ { "name": "dummyhost", "type": "host" } ], "source_type_name": "kubernetes", "tags": ["environment:test"] } ] } `, &Request{ Series: []Series{{ Metric: "system.load.1", Points: []Point{ { Timestamp: 1636629071, Value: 0.7, }, }, Resources: []Resource{ { Name: "dummyhost", Type: "host", }, }, SourceTypeName: "kubernetes", Tags: []string{ "environment:test", }, }}, }) }