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  }