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  }