| package config_validator |
| |
| import ( |
| "fmt" |
| "testing" |
| |
| "github.com/google/go-cmp/cmp" |
| ) |
| |
| func TestEmptyValidationErrors(t *testing.T) { |
| if newValidationErrors("err").err() != nil { |
| t.Errorf("Empty validation errors .err() should return nil") |
| } |
| } |
| |
| func TestSingleValidationErrors(t *testing.T) { |
| errs := newValidationErrors("err") |
| errs.addError("an", fmt.Errorf("error")) |
| expectedError := "err `an`: error" |
| if diff := cmp.Diff(errs.err().Error(), expectedError); diff != "" { |
| t.Errorf("Output error does not match expected error: %s", diff) |
| } |
| } |
| |
| func TestMultipleValidationErrors(t *testing.T) { |
| errs := newValidationErrors("err") |
| errs.addError("an", fmt.Errorf("error")) |
| errs.addError("another", fmt.Errorf("error")) |
| expectedError := "err `an`: error\nerr `another`: error" |
| if diff := cmp.Diff(errs.err().Error(), expectedError); diff != "" { |
| t.Errorf("Output error does not match expected error: %s", diff) |
| } |
| } |
| |
| func TestNestedValidationErrors(t *testing.T) { |
| innerErr := newValidationErrors("inner") |
| innerErr.addError("an", fmt.Errorf("error")) |
| errs := newValidationErrors("err") |
| errs.addError("nested", innerErr.err()) |
| expectedError := "err `nested`:\n inner `an`: error" |
| if diff := cmp.Diff(errs.err().Error(), expectedError); diff != "" { |
| t.Errorf("Output error does not match expected error: %s", diff) |
| } |
| } |
| |
| func TestMultipleNestedValidationErrors(t *testing.T) { |
| innerErr := newValidationErrors("inner") |
| innerErr.addError("an", fmt.Errorf("error")) |
| errs := newValidationErrors("err") |
| errs.addError("nested2", innerErr.err()) |
| errs.addError("nested1", innerErr.err()) |
| expectedError := "err `nested1`:\n inner `an`: error\nerr `nested2`:\n inner `an`: error" |
| if diff := cmp.Diff(errs.err().Error(), expectedError); diff != "" { |
| t.Errorf("Output error does not match expected error: %s", diff) |
| } |
| } |
| |
| func TestMultipleErrorsForLevel(t *testing.T) { |
| errs := newValidationErrors("err") |
| errs.addError("an", fmt.Errorf("error")) |
| errs.addError("an", fmt.Errorf("error")) |
| expectedError := "err `an`:\n error\n error" |
| if diff := cmp.Diff(errs.err().Error(), expectedError); diff != "" { |
| t.Errorf("Output error does not match expected error: %s", diff) |
| } |
| } |