(t *testing.T)
| 282 | } |
| 283 | |
| 284 | func TestLastReportIntervalHasAtLeastSixDays(t *testing.T) { |
| 285 | t.Parallel() |
| 286 | |
| 287 | loc, err := time.LoadLocation("Europe/Warsaw") |
| 288 | require.NoError(t, err) |
| 289 | |
| 290 | testCases := []struct { |
| 291 | name string |
| 292 | startTime time.Time |
| 293 | endTime time.Time |
| 294 | expected bool |
| 295 | }{ |
| 296 | { |
| 297 | name: "perfectly full week", |
| 298 | startTime: time.Date(2023, time.September, 11, 12, 0, 0, 0, loc), |
| 299 | endTime: time.Date(2023, time.September, 18, 12, 0, 0, 0, loc), |
| 300 | expected: true, |
| 301 | }, |
| 302 | { |
| 303 | name: "exactly 6 days apart", |
| 304 | startTime: time.Date(2023, time.September, 11, 12, 0, 0, 0, loc), |
| 305 | endTime: time.Date(2023, time.September, 17, 12, 0, 0, 0, loc), |
| 306 | expected: true, |
| 307 | }, |
| 308 | { |
| 309 | name: "less than 6 days apart", |
| 310 | startTime: time.Date(2023, time.September, 11, 12, 0, 0, 0, time.UTC), |
| 311 | endTime: time.Date(2023, time.September, 17, 11, 0, 0, 0, time.UTC), |
| 312 | expected: false, |
| 313 | }, |
| 314 | { |
| 315 | name: "forward DST change, 5 days and 23 hours apart", |
| 316 | startTime: time.Date(2023, time.March, 22, 12, 0, 0, 0, loc), // A day before DST starts |
| 317 | endTime: time.Date(2023, time.March, 28, 12, 0, 0, 0, loc), // Exactly 6 "days" apart |
| 318 | expected: true, |
| 319 | }, |
| 320 | } |
| 321 | |
| 322 | for _, tc := range testCases { |
| 323 | t.Run(tc.name, func(t *testing.T) { |
| 324 | t.Parallel() |
| 325 | |
| 326 | t.Log("startTime: ", tc.startTime) |
| 327 | t.Log("endTime: ", tc.endTime) |
| 328 | |
| 329 | result := lastReportIntervalHasAtLeastSixDays(tc.startTime, tc.endTime) |
| 330 | if result != tc.expected { |
| 331 | t.Errorf("Expected %v, but got %v for start time %v and end time %v", tc.expected, result, tc.startTime, tc.endTime) |
| 332 | } |
| 333 | }) |
| 334 | } |
| 335 | } |
| 336 | |
| 337 | // stripTime strips the time from a time.Time value, but keeps the date and TZ. |
| 338 | func stripTime(t time.Time) time.Time { |
nothing calls this directly
no test coverage detected