[
{
"name": "interim payment: 7 days after the period, then 5, 17 and 7 days back",
"args": [
"interim",
"2026-01-31",
"2026-01-31",
"2025-06-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-02-07",
"paymentNoticeBy": "2026-02-12",
"finalDateForPayment": "2026-02-24",
"payLessNoticeBy": "2026-02-17"
}
},
{
"name": "a claim made after the 7 days sets the due date",
"args": [
"interim",
"2026-01-31",
"2026-02-20",
"2025-06-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-02-20",
"paymentNoticeBy": "2026-02-25",
"finalDateForPayment": "2026-03-09",
"payLessNoticeBy": "2026-03-02"
}
},
{
"name": "a claim made before the period ends does not bring the due date forward",
"args": [
"interim",
"2026-02-28",
"2026-02-10",
"2025-06-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-03-07",
"paymentNoticeBy": "2026-03-12",
"finalDateForPayment": "2026-03-24",
"payLessNoticeBy": "2026-03-17"
}
},
{
"name": "weekends count: a Saturday due date is not moved",
"args": [
"interim",
"2026-01-31",
"2026-01-31",
"2011-10-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-02-07",
"paymentNoticeBy": "2026-02-12",
"finalDateForPayment": "2026-02-24",
"payLessNoticeBy": "2026-02-17"
}
},
{
"name": "Easter in England: Good Friday and Easter Monday are not counted",
"args": [
"interim",
"2026-03-31",
"2026-03-31",
"2025-06-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-04-09",
"paymentNoticeBy": "2026-04-14",
"finalDateForPayment": "2026-04-26",
"payLessNoticeBy": "2026-04-19"
}
},
{
"name": "Easter in Scotland: Good Friday is excluded but Easter Monday is not a Scottish bank holiday",
"args": [
"interim",
"2026-03-31",
"2026-03-31",
"2025-06-01",
"scotland"
],
"expect": {
"dueDate": "2026-04-08",
"paymentNoticeBy": "2026-04-13",
"finalDateForPayment": "2026-04-25",
"payLessNoticeBy": "2026-04-18"
}
},
{
"name": "Christmas in England: Saturday 26 December is a statutory bank holiday as well as the Monday substitute",
"args": [
"interim",
"2026-12-18",
"2026-12-18",
"2025-06-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-12-27",
"paymentNoticeBy": "2027-01-03",
"finalDateForPayment": "2027-01-15",
"payLessNoticeBy": "2027-01-08"
}
},
{
"name": "Christmas in Scotland: 26 December counts, Saturday 2 January does not",
"args": [
"interim",
"2026-12-18",
"2026-12-18",
"2025-06-01",
"scotland"
],
"expect": {
"dueDate": "2026-12-26",
"paymentNoticeBy": "2027-01-03",
"finalDateForPayment": "2027-01-16",
"payLessNoticeBy": "2027-01-09"
}
},
{
"name": "final payment: 30 days after completion",
"args": [
"final",
"2026-06-01",
"2026-06-01",
"2025-06-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-07-01",
"paymentNoticeBy": "2026-07-06",
"finalDateForPayment": "2026-07-18",
"payLessNoticeBy": "2026-07-11"
}
},
{
"name": "final payment claimed late",
"args": [
"final",
"2026-06-01",
"2026-08-10",
"2025-06-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-08-10",
"paymentNoticeBy": "2026-08-15",
"finalDateForPayment": "2026-08-27",
"payLessNoticeBy": "2026-08-20"
}
},
{
"name": "other payment: 7 days after completion, across the May bank holidays",
"args": [
"other",
"2026-05-01",
"2026-05-01",
"2025-06-01",
"england-and-wales"
],
"expect": {
"dueDate": "2026-05-09",
"paymentNoticeBy": "2026-05-14",
"finalDateForPayment": "2026-05-27",
"payLessNoticeBy": "2026-05-19"
}
},
{
"name": "a contract from before the 2011 amendments is not covered",
"args": [
"interim",
"2026-01-31",
"2026-01-31",
"2011-09-30",
"england-and-wales"
],
"expectError": "no Scheme for Construction Contracts periods"
},
{
"name": "the Scottish amendments start on 1 November 2011",
"args": [
"interim",
"2026-01-31",
"2026-01-31",
"2011-10-15",
"scotland"
],
"expectError": "no Scheme for Construction Contracts periods"
},
{
"name": "Northern Ireland has its own Order and is not covered",
"args": [
"interim",
"2026-01-31",
"2026-01-31",
"2025-06-01",
"northern-ireland"
],
"expectError": "no Scheme for Construction Contracts periods"
},
{
"name": "an unknown payment kind",
"args": [
"weekly",
"2026-01-31",
"2026-01-31",
"2025-06-01",
"england-and-wales"
],
"expectError": "no Scheme for Construction Contracts periods"
},
{
"name": "a period running into a year without bank holiday data",
"args": [
"interim",
"2028-12-20",
"2028-12-20",
"2025-06-01",
"england-and-wales"
],
"expectError": "no bank holiday data"
},
{
"name": "a malformed date",
"args": [
"interim",
"2026/01/31",
"2026-01-31",
"2025-06-01",
"england-and-wales"
],
"expectError": "workDate must be an ISO date"
},
{
"name": "a trailing newline after workDate is not an ISO date",
"args": [
"interim",
"2026-09-16\n",
"2026-01-31",
"2025-06-01",
"england-and-wales"
],
"expectError": "workDate must be an ISO date"
},
{
"name": "Arabic-Indic digits in workDate are not an ISO date",
"args": [
"interim",
"٢٠٢٦-09-16",
"2026-01-31",
"2025-06-01",
"england-and-wales"
],
"expectError": "workDate must be an ISO date"
},
{
"name": "a trailing newline after claimDate is not an ISO date",
"args": [
"interim",
"2026-01-31",
"2026-01-31\n",
"2025-06-01",
"england-and-wales"
],
"expectError": "claimDate must be an ISO date"
},
{
"name": "a trailing newline after contractDate is not an ISO date",
"args": [
"interim",
"2026-01-31",
"2026-01-31",
"2025-06-01\n",
"england-and-wales"
],
"expectError": "contractDate must be an ISO date"
}
]