| package manager | |
| import ( | |
| "encoding/json" | |
| "errors" | |
| "testing" | |
| "gotest.tools/v3/assert" | |
| is "gotest.tools/v3/assert/cmp" | |
| ) | |
| func TestPluginMarshal(t *testing.T) { | |
| const jsonWithError = `{"Name":"some-plugin","Err":"something went wrong"}` | |
| const jsonNoError = `{"Name":"some-plugin"}` | |
| tests := []struct { | |
| doc string | |
| error error | |
| expected string | |
| }{ | |
| { | |
| doc: "no error", | |
| expected: jsonNoError, | |
| }, | |
| { | |
| doc: "regular error", | |
| error: errors.New("something went wrong"), | |
| expected: jsonWithError, | |
| }, | |
| { | |
| doc: "custom error", | |
| error: newPluginError("something went wrong"), | |
| expected: jsonWithError, | |
| }, | |
| } | |
| for _, tc := range tests { | |
| t.Run(tc.doc, func(t *testing.T) { | |
| actual, err := json.Marshal(&Plugin{Name: "some-plugin", Err: tc.error}) | |
| assert.NilError(t, err) | |
| assert.Check(t, is.Equal(string(actual), tc.expected)) | |
| }) | |
| } | |
| } |