Tech Tools section with a code generator, toner report that names the part, toner forecasting, warranty proof of cover, application uploads
This commit is contained in:
49
frontend/src/utils/fiscalWeek.spec.js
Normal file
49
frontend/src/utils/fiscalWeek.spec.js
Normal file
@@ -0,0 +1,49 @@
|
||||
import { describe, it, expect } from 'vitest'
|
||||
import { fiscalWeek, fiscalWeekYear } from './fiscalWeek'
|
||||
|
||||
/**
|
||||
* The number has to match what the classic ASP site shows, because people will
|
||||
* have both open. The awkward cases are all at the year boundary, which is
|
||||
* exactly where a naive "day of year / 7" gets it wrong.
|
||||
*/
|
||||
describe('fiscalWeek', () => {
|
||||
it('counts the week containing 4 January as week 1', () => {
|
||||
expect(fiscalWeek(new Date(2026, 0, 4))).toBe(1)
|
||||
})
|
||||
|
||||
it('puts a late-December date in week 1 of the NEXT year', () => {
|
||||
// 2025-12-29 is a Monday; its Thursday falls in 2026, so it is 2026 week 1.
|
||||
expect(fiscalWeek(new Date(2025, 11, 29))).toBe(1)
|
||||
expect(fiscalWeekYear(new Date(2025, 11, 29))).toBe(2026)
|
||||
})
|
||||
|
||||
it('puts an early-January date in the LAST week of the previous year', () => {
|
||||
// 2027-01-01 is a Friday; its Thursday is 2026-12-31, so it is 2026 week 53.
|
||||
expect(fiscalWeek(new Date(2027, 0, 1))).toBe(53)
|
||||
expect(fiscalWeekYear(new Date(2027, 0, 1))).toBe(2026)
|
||||
})
|
||||
|
||||
it('holds the same number all week, Monday through Sunday', () => {
|
||||
const monday = new Date(2026, 7, 10)
|
||||
const week = fiscalWeek(monday)
|
||||
for (let i = 0; i < 7; i++) {
|
||||
const day = new Date(2026, 7, 10 + i)
|
||||
expect(fiscalWeek(day)).toBe(week)
|
||||
}
|
||||
})
|
||||
|
||||
it('increments the following Monday', () => {
|
||||
expect(fiscalWeek(new Date(2026, 7, 17))).toBe(fiscalWeek(new Date(2026, 7, 10)) + 1)
|
||||
})
|
||||
|
||||
it('gives a 53-week year its 53rd week', () => {
|
||||
// 2026 starts on a Thursday, so it runs to 53 weeks.
|
||||
expect(fiscalWeek(new Date(2026, 11, 31))).toBe(53)
|
||||
})
|
||||
|
||||
it('is not fooled by a time of day', () => {
|
||||
const morning = new Date(2026, 7, 12, 6, 0, 0)
|
||||
const nearMidnight = new Date(2026, 7, 12, 23, 59, 0)
|
||||
expect(fiscalWeek(morning)).toBe(fiscalWeek(nearMidnight))
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user