...

Source file src/edge-infra.dev/pkg/lib/edgeutils/datetime_helper_test.go

Documentation: edge-infra.dev/pkg/lib/edgeutils

     1  package edgeutils
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  )
     8  
     9  func TestIsValidTimestamp(t *testing.T) {
    10  	testCases := []struct {
    11  		name        string
    12  		time        string
    13  		expectedErr string
    14  	}{
    15  		{
    16  			name:        "Test 1: Valid Time",
    17  			time:        "2024-04-25T15:34:12Z",
    18  			expectedErr: "",
    19  		},
    20  		{
    21  			name:        "Test 2: Invalid Time 1",
    22  			time:        "2024-06-T12:13:12Z",
    23  			expectedErr: "is not a valid Timestamp",
    24  		},
    25  		{
    26  			name:        "Test 3: Invalid Time 2",
    27  			time:        "24-04-25T15:34:1Z",
    28  			expectedErr: "is not a valid Timestamp",
    29  		},
    30  	}
    31  
    32  	for _, test := range testCases {
    33  		if test.expectedErr == "" {
    34  			err := IsValidTimestamp(test.time)
    35  			assert.NoError(t, err)
    36  		} else {
    37  			err := IsValidTimestamp(test.time)
    38  			assert.ErrorContains(t, err, test.expectedErr)
    39  		}
    40  	}
    41  }
    42  
    43  func TestTimeSequenceCheck(t *testing.T) {
    44  	testCases := []struct {
    45  		name        string
    46  		startTime   string
    47  		endTime     string
    48  		expectedErr string
    49  	}{
    50  		{
    51  			name:        "Test 1: Valid Start and End Time",
    52  			startTime:   "2024-04-25T12:34:12Z",
    53  			endTime:     "2024-06-27T15:13:12Z",
    54  			expectedErr: "",
    55  		},
    56  		{
    57  			name:        "Test 2: Valid Start and Invalid End Time",
    58  			startTime:   "2024-06-27T15:13:12Z",
    59  			endTime:     "2024-06-27T12:13:12Z",
    60  			expectedErr: "comes before the start time",
    61  		},
    62  	}
    63  
    64  	for _, test := range testCases {
    65  		if test.expectedErr == "" {
    66  			t.Run(test.name, func(t *testing.T) {
    67  				err := TimeSequenceCheck(test.startTime, test.endTime)
    68  				assert.NoError(t, err)
    69  			})
    70  		} else {
    71  			t.Run(test.name, func(t *testing.T) {
    72  				err := TimeSequenceCheck(test.startTime, test.endTime)
    73  				assert.ErrorContains(t, err, test.expectedErr)
    74  			})
    75  		}
    76  	}
    77  }
    78  
    79  func TestConvertToRFC3339(t *testing.T) {
    80  	testCases := []struct {
    81  		name        string
    82  		timeVal     string
    83  		expectedOut string
    84  		expectedErr string
    85  	}{
    86  		{
    87  			name:        "Test 1: Valid Time No milliseconds",
    88  			timeVal:     "2024-05-25T08:04:12-04:00",
    89  			expectedOut: "2024-05-25T12:04:12Z",
    90  			expectedErr: "",
    91  		},
    92  		{
    93  			name:        "Test 2: Valid Time with milliseconds",
    94  			timeVal:     "2024-05-25T08:04:12.300-04:00",
    95  			expectedOut: "2024-05-25T12:04:12Z",
    96  			expectedErr: "",
    97  		},
    98  		{
    99  			name:        "Test 3:  Invalid Time with milliseconds",
   100  			timeVal:     "2024-04-25 15:34:12:300",
   101  			expectedErr: "Date Formatting Error",
   102  		},
   103  		{
   104  			name:        "Test 4: Invalid Time no milliseconds",
   105  			timeVal:     "2024-05-25T08:04.12-04:00",
   106  			expectedErr: "Date Formatting Error",
   107  		},
   108  		{
   109  			name:        "Test 5: Invalid Year",
   110  			timeVal:     "204-05-25T08:04:12.300-04:00",
   111  			expectedErr: "Date Formatting Error",
   112  		},
   113  		{
   114  			name:        "Test 6: Invalid Month",
   115  			timeVal:     "2024-13-05-25T08:04:12.300-04:00",
   116  			expectedErr: "Date Formatting Error",
   117  		},
   118  		{
   119  			name:        "Test 7: Invalid day",
   120  			timeVal:     "2024-05-85T08:04:12.300-04:00",
   121  			expectedErr: "Date Formatting Error",
   122  		},
   123  	}
   124  
   125  	for _, test := range testCases {
   126  		if test.expectedErr == "" {
   127  			t.Run(test.name, func(t *testing.T) {
   128  				timestamp, err := ConvertToRFC3339(test.timeVal)
   129  				assert.Equal(t, test.expectedOut, timestamp)
   130  				assert.NoError(t, err)
   131  			})
   132  		} else {
   133  			t.Run(test.name, func(t *testing.T) {
   134  				_, err := ConvertToRFC3339(test.timeVal)
   135  				assert.ErrorContains(t, err, test.expectedErr)
   136  			})
   137  		}
   138  	}
   139  }
   140  

View as plain text