@@ -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
+ }