github.com/lyft/flytestdlib@v0.3.12-0.20210213045714-8cdd111ecda1/config/duration_test.go (about) 1 package config 2 3 import ( 4 "encoding/json" 5 "reflect" 6 "testing" 7 "time" 8 9 "github.com/stretchr/testify/assert" 10 ) 11 12 func TestDuration_MarshalJSON(t *testing.T) { 13 t.Run("Valid", func(t *testing.T) { 14 expected := Duration{ 15 Duration: time.Second * 2, 16 } 17 18 b, err := expected.MarshalJSON() 19 assert.NoError(t, err) 20 21 actual := Duration{} 22 err = actual.UnmarshalJSON(b) 23 assert.NoError(t, err) 24 25 assert.True(t, reflect.DeepEqual(expected, actual)) 26 }) 27 } 28 29 func TestDuration_UnmarshalJSON(t *testing.T) { 30 t.Run("Empty", func(t *testing.T) { 31 actual := Duration{} 32 err := actual.UnmarshalJSON([]byte{}) 33 assert.NoError(t, err) 34 assert.Equal(t, time.Duration(0), actual.Duration) 35 }) 36 37 t.Run("Invalid_string", func(t *testing.T) { 38 input := "blah" 39 raw, err := json.Marshal(input) 40 assert.NoError(t, err) 41 42 actual := Duration{} 43 err = actual.UnmarshalJSON(raw) 44 assert.Error(t, err) 45 }) 46 47 t.Run("Valid_float", func(t *testing.T) { 48 input := float64(12345) 49 raw, err := json.Marshal(input) 50 assert.NoError(t, err) 51 52 actual := Duration{} 53 err = actual.UnmarshalJSON(raw) 54 assert.NoError(t, err) 55 }) 56 57 t.Run("Invalid_bool", func(t *testing.T) { 58 input := true 59 raw, err := json.Marshal(input) 60 assert.NoError(t, err) 61 62 actual := Duration{} 63 err = actual.UnmarshalJSON(raw) 64 assert.Error(t, err) 65 }) 66 }