github.com/segakazzz/buffalo@v0.16.22-0.20210119082501-1f52048d3feb/binding/decoders/time_test.go (about)

     1  package decoders
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestParseTimeErrorParsing(t *testing.T) {
    11  	r := require.New(t)
    12  
    13  	_, err := parseTime([]string{"this is sparta"})
    14  	r.Error(err)
    15  }
    16  
    17  func TestParseTime(t *testing.T) {
    18  	r := require.New(t)
    19  
    20  	testCases := []struct {
    21  		input     string
    22  		expected  time.Time
    23  		expectErr bool
    24  	}{
    25  		{
    26  			input:     "2017-01-01",
    27  			expected:  time.Date(2017, time.January, 1, 0, 0, 0, 0, time.UTC),
    28  			expectErr: false,
    29  		},
    30  		{
    31  			input:     "2018-07-13T15:34",
    32  			expected:  time.Date(2018, time.July, 13, 15, 34, 0, 0, time.UTC),
    33  			expectErr: false,
    34  		},
    35  		{
    36  			input:     "2018-20-10T30:15",
    37  			expected:  time.Time{},
    38  			expectErr: true,
    39  		},
    40  	}
    41  
    42  	for _, tc := range testCases {
    43  		tt, err := parseTime([]string{tc.input})
    44  		if !tc.expectErr {
    45  			r.NoError(err)
    46  		}
    47  
    48  		r.Equal(tc.expected, tt)
    49  	}
    50  }
    51  
    52  func TestParseTimeConflicting(t *testing.T) {
    53  	r := require.New(t)
    54  
    55  	RegisterTimeFormats("2006-02-01")
    56  	tt, err := parseTime([]string{"2017-01-10"})
    57  
    58  	r.NoError(err)
    59  	expected := time.Date(2017, time.October, 1, 0, 0, 0, 0, time.UTC)
    60  	r.Equal(expected, tt)
    61  }