blob: eb3fe74a9b7d85a7eda2fc9f70ed827a6090fcfb [file] [log] [blame]
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)
}
}