github.com/hairyhenderson/templater@v3.5.0+incompatible/funcs/test_test.go (about) 1 package funcs 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 ) 8 9 func TestAssert(t *testing.T) { 10 f := TestNS() 11 _, err := f.Assert(false) 12 assert.Error(t, err) 13 14 _, err = f.Assert(true) 15 assert.NoError(t, err) 16 17 _, err = f.Assert("foo", true) 18 assert.NoError(t, err) 19 20 _, err = f.Assert("foo", "false") 21 assert.EqualError(t, err, "assertion failed: foo") 22 } 23 24 func TestRequired(t *testing.T) { 25 f := TestNS() 26 errMsg := "can not render template: a required value was not set" 27 v, err := f.Required("") 28 assert.Error(t, err) 29 assert.EqualError(t, err, errMsg) 30 assert.Nil(t, v) 31 32 v, err = f.Required(nil) 33 assert.Error(t, err) 34 assert.EqualError(t, err, errMsg) 35 assert.Nil(t, v) 36 37 errMsg = "hello world" 38 v, err = f.Required(errMsg, nil) 39 assert.Error(t, err) 40 assert.EqualError(t, err, errMsg) 41 assert.Nil(t, v) 42 43 v, err = f.Required(42, nil) 44 assert.Error(t, err) 45 assert.EqualError(t, err, "at <1>: expected string; found int") 46 assert.Nil(t, v) 47 48 v, err = f.Required() 49 assert.Error(t, err) 50 assert.EqualError(t, err, "wrong number of args: want 1 or 2, got 0") 51 assert.Nil(t, v) 52 53 v, err = f.Required("", 2, 3) 54 assert.Error(t, err) 55 assert.EqualError(t, err, "wrong number of args: want 1 or 2, got 3") 56 assert.Nil(t, v) 57 58 v, err = f.Required(0) 59 assert.NoError(t, err) 60 assert.Equal(t, v, 0) 61 62 v, err = f.Required("foo") 63 assert.NoError(t, err) 64 assert.Equal(t, v, "foo") 65 } 66 67 func TestTernary(t *testing.T) { 68 f := TestNS() 69 testdata := []struct { 70 tval, fval, b interface{} 71 expected interface{} 72 }{ 73 {"foo", 42, false, 42}, 74 {"foo", 42, "yes", "foo"}, 75 {false, true, true, false}, 76 } 77 for _, d := range testdata { 78 assert.Equal(t, d.expected, f.Ternary(d.tval, d.fval, d.b)) 79 } 80 }