...

Source file src/go.einride.tech/aip/validation/messagevalidator_test.go

Documentation: go.einride.tech/aip/validation

     1  package validation
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"gotest.tools/v3/assert"
     8  )
     9  
    10  func TestMessageValidator(t *testing.T) {
    11  	t.Parallel()
    12  
    13  	t.Run("no violation", func(t *testing.T) {
    14  		t.Parallel()
    15  		var v MessageValidator
    16  		assert.NilError(t, v.Err())
    17  	})
    18  
    19  	t.Run("add single violation", func(t *testing.T) {
    20  		t.Parallel()
    21  		var v MessageValidator
    22  		v.AddFieldViolation("foo", "bar")
    23  		assert.Error(t, v.Err(), "field violation on foo: bar")
    24  	})
    25  
    26  	t.Run("add single violation with parent", func(t *testing.T) {
    27  		t.Parallel()
    28  		var v MessageValidator
    29  		v.SetParentField("foo")
    30  		v.AddFieldViolation("bar", "baz")
    31  		assert.Error(t, v.Err(), "field violation on foo.bar: baz")
    32  	})
    33  
    34  	t.Run("add nested violations", func(t *testing.T) {
    35  		t.Parallel()
    36  		var inner MessageValidator
    37  		inner.AddFieldViolation("b", "c")
    38  		var outer MessageValidator
    39  		outer.AddFieldError("a", inner.Err())
    40  		assert.Error(t, outer.Err(), "field violation on a.b: c")
    41  	})
    42  
    43  	t.Run("add field error", func(t *testing.T) {
    44  		t.Parallel()
    45  		var v MessageValidator
    46  		v.AddFieldError("a", errors.New("boom"))
    47  		assert.Error(t, v.Err(), "field violation on a: boom")
    48  	})
    49  }
    50  

View as plain text