github.com/viant/toolbox@v0.34.5/data/udf/time_test.go (about) 1 package udf 2 3 import ( 4 "github.com/stretchr/testify/assert" 5 "github.com/viant/toolbox" 6 "github.com/viant/toolbox/data" 7 "strings" 8 "testing" 9 "time" 10 ) 11 12 func Test_FormatTime(t *testing.T) { 13 14 { 15 value, err := FormatTime([]interface{}{"now", "yyyy"}, nil) 16 assert.Nil(t, err) 17 now := time.Now() 18 assert.Equal(t, now.Year(), toolbox.AsInt(value)) 19 } 20 { 21 value, err := FormatTime([]interface{}{"2015-02-11", "yyyy"}, nil) 22 assert.Nil(t, err) 23 assert.Equal(t, 2015, toolbox.AsInt(value)) 24 } 25 { 26 _, err := FormatTime([]interface{}{"2015-02-11"}, nil) 27 assert.NotNil(t, err) 28 } 29 { 30 _, err := FormatTime([]interface{}{"201/02/11 2", "y-d"}, nil) 31 assert.NotNil(t, err) 32 } 33 { 34 _, err := FormatTime("a", nil) 35 assert.NotNil(t, err) 36 } 37 38 { 39 value, err := FormatTime([]interface{}{"now", "yyyy", "UTC"}, nil) 40 assert.Nil(t, err) 41 now := time.Now() 42 assert.Equal(t, now.Year(), toolbox.AsInt(value)) 43 } 44 { 45 aMap := data.NewMap() 46 aMap.Put("ts", "2015-02-11") 47 Register(aMap) 48 expanded := aMap.ExpandAsText(`$FormatTime($ts, "yyyy")`) 49 assert.Equal(t, "2015", expanded) 50 } 51 52 { 53 value, err := FormatTime([]interface{}{"now", "yyyy-MM-dd HH:mm:ss", "", "yyyy-MM"}, nil) 54 assert.Nil(t, err) 55 now := time.Now() 56 assert.True(t, strings.HasPrefix(toolbox.AsString(value), toolbox.AsString(now.Year()))) 57 } 58 59 } 60 61 func TestElapsed(t *testing.T) { 62 { 63 value, err := Elapsed(time.Now().Add(-time.Hour).Format(time.RFC3339), nil) 64 assert.Nil(t, err) 65 assert.Equal(t, "1h0s", value) 66 } 67 }