[
{
"name": "a Wednesday before the cutoff",
"args": [
"2026-09-23",
false
],
"expect": {
"inputDay": "2026-09-23",
"processingDay": "2026-09-24",
"entryDay": "2026-09-25"
}
},
{
"name": "a Wednesday after the cutoff joins Thursday's cycle",
"args": [
"2026-09-23",
true
],
"expect": {
"inputDay": "2026-09-24",
"processingDay": "2026-09-25",
"entryDay": "2026-09-28"
}
},
{
"name": "a Friday submission arrives on Tuesday",
"args": [
"2026-09-25",
false
],
"expect": {
"inputDay": "2026-09-25",
"processingDay": "2026-09-28",
"entryDay": "2026-09-29"
}
},
{
"name": "a Saturday submission waits for Monday",
"args": [
"2026-09-26",
false
],
"expect": {
"inputDay": "2026-09-28",
"processingDay": "2026-09-29",
"entryDay": "2026-09-30"
}
},
{
"name": "the cutoff does not matter on a non-processing day",
"args": [
"2026-09-26",
true
],
"expect": {
"inputDay": "2026-09-28",
"processingDay": "2026-09-29",
"entryDay": "2026-09-30"
}
},
{
"name": "Easter: Thursday before Good Friday processes on Tuesday",
"args": [
"2026-04-02",
false
],
"expect": {
"inputDay": "2026-04-02",
"processingDay": "2026-04-07",
"entryDay": "2026-04-08"
}
},
{
"name": "a file sent on Good Friday starts on the Tuesday after Easter Monday",
"args": [
"2026-04-03",
false
],
"expect": {
"inputDay": "2026-04-07",
"processingDay": "2026-04-08",
"entryDay": "2026-04-09"
}
},
{
"name": "Christmas 2026: the substitute Boxing Day is skipped too",
"args": [
"2026-12-23",
false
],
"expect": {
"inputDay": "2026-12-23",
"processingDay": "2026-12-24",
"entryDay": "2026-12-29"
}
},
{
"name": "Christmas Eve after the cutoff",
"args": [
"2026-12-24",
true
],
"expect": {
"inputDay": "2026-12-29",
"processingDay": "2026-12-30",
"entryDay": "2026-12-31"
}
},
{
"name": "New Year's Eve runs into next year's calendar",
"args": [
"2026-12-31",
false
],
"expect": {
"inputDay": "2026-12-31",
"processingDay": "2027-01-04",
"entryDay": "2027-01-05"
}
},
{
"name": "the summer bank holiday Monday is skipped",
"args": [
"2026-08-28",
false
],
"expect": {
"inputDay": "2026-08-28",
"processingDay": "2026-09-01",
"entryDay": "2026-09-02"
}
},
{
"name": "Christmas 2027 falls at a weekend, both substitute days skipped",
"args": [
"2027-12-24",
false
],
"expect": {
"inputDay": "2027-12-24",
"processingDay": "2027-12-29",
"entryDay": "2027-12-30"
}
},
{
"name": "a December cycle inside the last published year needs no later data",
"args": [
"2028-12-22",
false
],
"expect": {
"inputDay": "2028-12-22",
"processingDay": "2028-12-27",
"entryDay": "2028-12-28"
}
},
{
"name": "the first published year",
"args": [
"2019-01-02",
false
],
"expect": {
"inputDay": "2019-01-02",
"processingDay": "2019-01-03",
"entryDay": "2019-01-04"
}
},
{
"name": "a cycle that runs past the published calendar is an error",
"args": [
"2028-12-29",
false
],
"expectError": "no bank holiday data for england-and-wales in 2029"
},
{
"name": "a year before the published calendar is an error",
"args": [
"2018-06-01",
false
],
"expectError": "no bank holiday data for england-and-wales in 2018"
},
{
"name": "a malformed date is an error",
"args": [
"2026-9-23",
false
],
"expectError": "is not an ISO date"
},
{
"name": "an impossible date is an error",
"args": [
"2026-02-30",
false
],
"expectError": "not a real calendar date"
}
]