github.com/argoproj/argo-cd/v3@v3.2.1/util/notification/expression/time/time_test.go (about) 1 package time 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/expr-lang/expr" 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestNewTimeExprs(t *testing.T) { 13 funcs := []string{ 14 "Parse", 15 "Now", 16 "Nanosecond", 17 "Microsecond", 18 "Millisecond", 19 "Second", 20 "Minute", 21 "Hour", 22 "Layout", 23 "ANSIC", 24 "UnixDate", 25 "RubyDate", 26 "RFC822", 27 "RFC822Z", 28 "RFC850", 29 "RFC1123", 30 "RFC1123Z", 31 "RFC3339", 32 "RFC3339Nano", 33 "Kitchen", 34 "Stamp", 35 "StampMilli", 36 "StampMicro", 37 "StampNano", 38 } 39 40 for _, fn := range funcs { 41 timeExprs := NewExprs() 42 _, exists := timeExprs[fn] 43 assert.True(t, exists) 44 } 45 } 46 47 func Test_NewExprs_Now(t *testing.T) { 48 defer func() { now = time.Now }() 49 fixedTime := time.Date(2022, 9, 26, 11, 30, 25, 0, time.UTC) 50 now = func() time.Time { 51 return fixedTime 52 } 53 54 vm, err := expr.Compile("time.Now().Truncate(time.Hour).Format(time.RFC3339)") 55 require.NoError(t, err) 56 57 val, err := expr.Run(vm, map[string]any{"time": NewExprs()}) 58 require.NoError(t, err) 59 60 assert.Equal(t, "2022-09-26T11:00:00Z", val) 61 }