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