| package models |
|
|
| import ( |
| "errors" |
| "testing" |
|
|
| "github.com/stretchr/testify/assert" |
| ) |
|
|
| func TestErrorWrappers(t *testing.T) { |
| tests := []struct { |
| name string |
| err error |
| expectedErrString string |
| }{ |
| { |
| name: "prefix", |
| err: ErrorWithFieldPrefix( |
| NewFieldSelectorGroup( |
| NewFieldSelector("plan"). |
| WithExpression(NewMultiFieldAttrValue( |
| NewFieldAttrValue("key", "pro"), |
| NewFieldAttrValue("version", "1"), |
| )), |
| ), |
| ErrorWithFieldPrefix( |
| NewFieldSelectorGroup( |
| NewFieldSelector("phases"). |
| WithExpression(NewFieldAttrValue("key", "trial")), |
| ), |
| ErrorWithFieldPrefix( |
| NewFieldSelectorGroup( |
| NewFieldSelector("rateCards"). |
| WithExpression(NewFieldAttrValue("key", "storage")), |
| ), |
| errors.New("critical error"), |
| ), |
| ), |
| ), |
| expectedErrString: `plan[key=pro, version=1]: phases[key=trial]: rateCards[key=storage]: critical error`, |
| }, |
| { |
| name: "component", |
| err: ErrorWithComponent("openmeter", |
| ErrorWithFieldPrefix( |
| NewFieldSelectorGroup(NewFieldSelector("plan"). |
| WithExpression(NewMultiFieldAttrValue( |
| NewFieldAttrValue("key", "pro"), |
| NewFieldAttrValue("version", "1"), |
| )), |
| ), |
| errors.New("critical error"), |
| )), |
| expectedErrString: `openmeter: plan[key=pro, version=1]: critical error`, |
| }, |
| } |
|
|
| for _, tt := range tests { |
| t.Run(tt.name, func(t *testing.T) { |
| actual := tt.err.Error() |
|
|
| t.Logf("actual error: %s", actual) |
|
|
| assert.Equalf(t, tt.expectedErrString, actual, "error string mismatch for test case %q", tt.name) |
| }) |
| } |
| } |
|
|