From 967d1137269ab3315bda02a32345a9e6751dc2a0 Mon Sep 17 00:00:00 2001 From: Mariano Cano Date: Wed, 27 Nov 2019 12:25:40 -0800 Subject: [PATCH] Add error marshaling tests. --- api/errors_test.go | 65 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 api/errors_test.go diff --git a/api/errors_test.go b/api/errors_test.go new file mode 100644 index 00000000..a252e4c3 --- /dev/null +++ b/api/errors_test.go @@ -0,0 +1,65 @@ +package api + +import ( + "fmt" + "reflect" + "testing" +) + +func TestError_MarshalJSON(t *testing.T) { + type fields struct { + Status int + Err error + } + tests := []struct { + name string + fields fields + want []byte + wantErr bool + }{ + {"ok", fields{400, fmt.Errorf("bad request")}, []byte(`{"status":400,"message":"Bad Request"}`), false}, + {"ok no error", fields{500, nil}, []byte(`{"status":500,"message":"Internal Server Error"}`), false}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := &Error{ + Status: tt.fields.Status, + Err: tt.fields.Err, + } + got, err := e.MarshalJSON() + if (err != nil) != tt.wantErr { + t.Errorf("Error.MarshalJSON() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("Error.MarshalJSON() = %s, want %s", got, tt.want) + } + }) + } +} + +func TestError_UnmarshalJSON(t *testing.T) { + type args struct { + data []byte + } + tests := []struct { + name string + args args + expected *Error + wantErr bool + }{ + {"ok", args{[]byte(`{"status":400,"message":"bad request"}`)}, &Error{Status: 400, Err: fmt.Errorf("bad request")}, false}, + {"fail", args{[]byte(`{"status":"400","message":"bad request"}`)}, &Error{}, true}, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + e := new(Error) + if err := e.UnmarshalJSON(tt.args.data); (err != nil) != tt.wantErr { + t.Errorf("Error.UnmarshalJSON() error = %v, wantErr %v", err, tt.wantErr) + } + if !reflect.DeepEqual(tt.expected, e) { + t.Errorf("Error.UnmarshalJSON() wants = %v, got %v", tt.expected, e) + } + }) + } +}