29 lines
1.6 KiB
TypeScript
29 lines
1.6 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { projectWarehouseArrival } from './warehouseArrival'
|
|
|
|
describe('shared warehouse arrival projection', () => {
|
|
it.each([
|
|
['2026-10-21T15:49:00', '2026-10-23'],
|
|
['2026-10-30T23:30:00-07:00', '2026-11-01'],
|
|
['2026-12-31T23:30:00', '2027-01-02'],
|
|
['2026-03-07T23:30:00-08:00', '2026-03-09'],
|
|
])('displays the authoritative local date for %s without manufacturing a time', (arrivalAt, date) => {
|
|
expect(projectWarehouseArrival({ plannedAt: null, version: 0, planCount: 0, plannedDate: date, isDefault: true })).toEqual({ date, time: '', isDefault: true })
|
|
})
|
|
it('keeps manually maintained and frozen dates instead of following port arrival', () => {
|
|
for (const plan of [{ plannedAt: '2026-10-28T09:30:00', version: 1, planCount: 0 }, { plannedAt: '2026-10-28T09:30:00', version: 0, planCount: 1 }]) {
|
|
expect(projectWarehouseArrival(plan)).toEqual({ date: '2026-10-28', time: '09:30', isDefault: false })
|
|
}
|
|
})
|
|
it('does not replace inconsistent or frozen missing dates with defaults', () => {
|
|
for (const plan of [{ plannedAt: null, version: -1, planCount: 0 }, { plannedAt: null, version: 0, planCount: 1 }, { plannedAt: null, version: 1, planCount: 0 }]) {
|
|
expect(projectWarehouseArrival(plan).date).toBeNull()
|
|
}
|
|
expect(projectWarehouseArrival(undefined).date).toBeNull()
|
|
})
|
|
it('keeps the frozen server date without recalculating after a port date changes', () => {
|
|
expect(projectWarehouseArrival({ plannedAt: null, version: 0, planCount: 1, plannedDate: '2026-11-02', isDefault: false }))
|
|
.toEqual({ date: '2026-11-02', time: '', isDefault: false })
|
|
})
|
|
})
|