github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/pkg/graphql/timestamp_test.go (about) 1 package graphql 2 3 import ( 4 "bytes" 5 "testing" 6 "time" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestTimestamp_UnmarshalGQL(t *testing.T) { 13 //given 14 var timestamp Timestamp 15 fixTime := "2002-10-02T10:00:00-05:00" 16 parsedTime, err := time.Parse(time.RFC3339, "2002-10-02T10:00:00-05:00") 17 assert.NoError(t, err) 18 expectedTimestamp := Timestamp(parsedTime) 19 20 // WHEN 21 err = timestamp.UnmarshalGQL(fixTime) 22 23 // THEN 24 require.NoError(t, err) 25 assert.Equal(t, expectedTimestamp, timestamp) 26 } 27 28 func TestTimestamp_UnmarshalGQL_Error(t *testing.T) { 29 t.Run("invalid input", func(t *testing.T) { 30 //given 31 var timestamp Timestamp 32 invalidInput := 123 33 34 // WHEN 35 err := timestamp.UnmarshalGQL(invalidInput) 36 37 // THEN 38 require.Error(t, err) 39 assert.Empty(t, timestamp) 40 }) 41 42 t.Run("can't parse time", func(t *testing.T) { 43 //given 44 var timestamp Timestamp 45 invalidTime := "invalid time" 46 47 // WHEN 48 err := timestamp.UnmarshalGQL(invalidTime) 49 50 // THEN 51 require.Error(t, err) 52 assert.Empty(t, timestamp) 53 }) 54 } 55 56 func TestTimestamp_MarshalGQL(t *testing.T) { 57 //given 58 parsedTime, err := time.Parse(time.RFC3339, "2002-10-02T10:00:00-05:00") 59 assert.NoError(t, err) 60 fixTimestamp := Timestamp(parsedTime) 61 expectedTimestamp := `"2002-10-02T10:00:00-05:00"` 62 buf := bytes.Buffer{} 63 64 // WHEN 65 fixTimestamp.MarshalGQL(&buf) 66 67 // THEN 68 assert.Equal(t, expectedTimestamp, buf.String()) 69 } 70 71 func TestTimestamp_UmarshalJSON(t *testing.T) { 72 // given 73 ts := &Timestamp{} 74 // when 75 err := ts.UnmarshalJSON([]byte(`"2002-10-02T10:00:00-05:00"`)) 76 // then 77 require.NoError(t, err) 78 tm := time.Time(*ts) 79 assert.Equal(t, 2002, tm.Year()) 80 }