...
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