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  }