@@ -15,12 +15,18 @@ import (
15
15
func Test_parseInsightsStartAndEndTime (t * testing.T ) {
16
16
t .Parallel ()
17
17
18
+ t .Logf ("machine location: %s" , time .Now ().Location ())
18
19
layout := insightsTimeLayout
19
20
now := time .Now ().UTC ()
21
+ t .Logf ("now: %s" , now )
22
+ t .Logf ("now location: %s" , now .Location ())
20
23
y , m , d := now .Date ()
21
24
today := time .Date (y , m , d , 0 , 0 , 0 , 0 , time .UTC )
25
+ t .Logf ("today: %s" , today )
22
26
thisHour := time .Date (y , m , d , now .Hour (), 0 , 0 , 0 , time .UTC )
27
+ t .Logf ("thisHour: %s" , thisHour )
23
28
thisHourRoundUp := thisHour .Add (time .Hour )
29
+ t .Logf ("thisHourRoundUp: %s" , thisHourRoundUp )
24
30
25
31
helsinki , err := time .LoadLocation ("Europe/Helsinki" )
26
32
require .NoError (t , err )
@@ -36,6 +42,16 @@ func Test_parseInsightsStartAndEndTime(t *testing.T) {
36
42
wantEndTime time.Time
37
43
wantOk bool
38
44
}{
45
+ {
46
+ name : "Same" ,
47
+ args : args {
48
+ startTime : "2023-07-10T00:00:00Z" ,
49
+ endTime : "2023-07-10T00:00:00Z" ,
50
+ },
51
+ wantStartTime : time .Date (2023 , 7 , 10 , 0 , 0 , 0 , 0 , time .UTC ),
52
+ wantEndTime : time .Date (2023 , 7 , 10 , 0 , 0 , 0 , 0 , time .UTC ),
53
+ wantOk : true ,
54
+ },
39
55
{
40
56
name : "Week" ,
41
57
args : args {
@@ -132,13 +148,21 @@ func Test_parseInsightsStartAndEndTime(t *testing.T) {
132
148
t .Run (tt .name , func (t * testing.T ) {
133
149
t .Parallel ()
134
150
151
+ t .Log ("startTime: " , tt .args .startTime )
152
+ t .Log ("endTime: " , tt .args .endTime )
153
+ if tt .wantOk {
154
+ t .Log ("wantStartTime: " , tt .wantStartTime )
155
+ t .Log ("wantEndTime: " , tt .wantEndTime )
156
+ }
157
+
135
158
rw := httptest .NewRecorder ()
136
- gotStartTime , gotEndTime , gotOk := parseInsightsStartAndEndTime (context .Background (), rw , tt .args .startTime , tt .args .endTime )
159
+ gotStartTime , gotEndTime , gotOk := parseInsightsStartAndEndTime (context .Background (), rw , now , tt .args .startTime , tt .args .endTime )
137
160
138
161
if ! assert .Equal (t , tt .wantOk , gotOk ) {
139
162
//nolint:bodyclose
140
163
t .Log ("Status: " , rw .Result ().StatusCode )
141
164
t .Log ("Body: " , rw .Body .String ())
165
+ return
142
166
}
143
167
// assert.Equal is unable to test time equality with different
144
168
// (but same) locations because the *time.Location names differ
@@ -158,7 +182,7 @@ func Test_parseInsightsInterval_week(t *testing.T) {
158
182
sydneyLoc , err := time .LoadLocation ("Australia/Sydney" ) // Random location
159
183
require .NoError (t , err )
160
184
161
- now := time .Now ()
185
+ now := time .Now (). In ( sydneyLoc )
162
186
t .Logf ("now: %s" , now )
163
187
164
188
y , m , d := now .Date ()
@@ -206,7 +230,7 @@ func Test_parseInsightsInterval_week(t *testing.T) {
206
230
name : "6 days are acceptable" ,
207
231
args : args {
208
232
startTime : sixDaysAgo .Format (layout ),
209
- endTime : thisHour .Format (layout ),
233
+ endTime : stripTime ( thisHour ) .Format (layout ),
210
234
},
211
235
wantOk : true ,
212
236
},
@@ -222,18 +246,22 @@ func Test_parseInsightsInterval_week(t *testing.T) {
222
246
name : "9 days (7 + 2) are not acceptable" ,
223
247
args : args {
224
248
startTime : nineDaysAgo .Format (layout ),
225
- endTime : thisHour .Format (layout ),
249
+ endTime : stripTime ( thisHour ) .Format (layout ),
226
250
},
227
251
wantOk : false ,
228
252
},
229
253
}
230
254
for _ , tt := range tests {
231
255
tt := tt
256
+
232
257
t .Run (tt .name , func (t * testing.T ) {
233
258
t .Parallel ()
234
259
260
+ t .Log ("startTime: " , tt .args .startTime )
261
+ t .Log ("endTime: " , tt .args .endTime )
262
+
235
263
rw := httptest .NewRecorder ()
236
- startTime , endTime , ok := parseInsightsStartAndEndTime (context .Background (), rw , tt .args .startTime , tt .args .endTime )
264
+ startTime , endTime , ok := parseInsightsStartAndEndTime (context .Background (), rw , now , tt .args .startTime , tt .args .endTime )
237
265
if ! ok {
238
266
//nolint:bodyclose
239
267
t .Log ("Status: " , rw .Result ().StatusCode )
@@ -246,6 +274,7 @@ func Test_parseInsightsInterval_week(t *testing.T) {
246
274
//nolint:bodyclose
247
275
t .Log ("Status: " , rw .Result ().StatusCode )
248
276
t .Log ("Body: " , rw .Body .String ())
277
+ return
249
278
}
250
279
if tt .wantOk {
251
280
assert .Equal (t , codersdk .InsightsReportIntervalWeek , parsedInterval )
@@ -296,10 +325,20 @@ func TestLastReportIntervalHasAtLeastSixDays(t *testing.T) {
296
325
tc := tc
297
326
t .Run (tc .name , func (t * testing.T ) {
298
327
t .Parallel ()
328
+
329
+ t .Log ("startTime: " , tc .startTime )
330
+ t .Log ("endTime: " , tc .endTime )
331
+
299
332
result := lastReportIntervalHasAtLeastSixDays (tc .startTime , tc .endTime )
300
333
if result != tc .expected {
301
334
t .Errorf ("Expected %v, but got %v for start time %v and end time %v" , tc .expected , result , tc .startTime , tc .endTime )
302
335
}
303
336
})
304
337
}
305
338
}
339
+
340
+ // stripTime strips the time from a time.Time value, but keeps the date and TZ.
341
+ func stripTime (t time.Time ) time.Time {
342
+ y , m , d := t .Date ()
343
+ return time .Date (y , m , d , 0 , 0 , 0 , 0 , t .Location ())
344
+ }
0 commit comments