[
{ "name": "ten years straddling age 41: five years at 1.5 weeks, five at 1", "args": ["1980-05-10", "2016-09-01", "2026-09-23", { "minor": 60000, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 10, "yearsCounted": 10, "halfWeeks": 25, "weeklyPayUsed": { "minor": 60000, "currency": "GBP" }, "amount": { "minor": 750000, "currency": "GBP" } } },
{ "name": "the same employee on higher pay is capped at 751 pounds from April 2026", "args": ["1980-05-10", "2016-09-01", "2026-09-23", { "minor": 90000, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 10, "yearsCounted": 10, "halfWeeks": 25, "weeklyPayUsed": { "minor": 75100, "currency": "GBP" }, "amount": { "minor": 938750, "currency": "GBP" } } },
{ "name": "dismissed on 5 April 2026: the 2025 cap of 719 pounds and one year less", "args": ["1980-05-10", "2016-09-01", "2026-04-05", { "minor": 90000, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 9, "yearsCounted": 9, "halfWeeks": 22, "weeklyPayUsed": { "minor": 71900, "currency": "GBP" }, "amount": { "minor": 790900, "currency": "GBP" } } },
{ "name": "a day short of two years: nothing", "args": ["1990-01-01", "2024-10-01", "2026-09-23", { "minor": 60000, "currency": "GBP" }], "expect": { "eligible": false, "serviceYears": 1, "yearsCounted": 0, "halfWeeks": 0, "weeklyPayUsed": { "minor": 60000, "currency": "GBP" }, "amount": { "minor": 0, "currency": "GBP" } } },
{ "name": "exactly two years under 22: half a week each", "args": ["2004-01-15", "2024-09-24", "2026-09-23", { "minor": 45000, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 2, "yearsCounted": 2, "halfWeeks": 2, "weeklyPayUsed": { "minor": 45000, "currency": "GBP" }, "amount": { "minor": 45000, "currency": "GBP" } } },
{ "name": "36 years' service counts only the last 20: the 22,530 pound maximum", "args": ["1960-01-01", "1990-01-01", "2026-09-23", { "minor": 80000, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 36, "yearsCounted": 20, "halfWeeks": 60, "weeklyPayUsed": { "minor": 75100, "currency": "GBP" }, "amount": { "minor": 2253000, "currency": "GBP" } } },
{ "name": "age is taken at the start of each year, not on the relevant date", "args": ["2000-09-24", "2020-01-01", "2026-09-23", { "minor": 50000, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 6, "yearsCounted": 6, "halfWeeks": 10, "weeklyPayUsed": { "minor": 50000, "currency": "GBP" }, "amount": { "minor": 250000, "currency": "GBP" } } },
{ "name": "one year at 41 and a half penny rounded up", "args": ["1984-09-24", "2016-09-24", "2026-09-23", { "minor": 50001, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 10, "yearsCounted": 10, "halfWeeks": 21, "weeklyPayUsed": { "minor": 50001, "currency": "GBP" }, "amount": { "minor": 525011, "currency": "GBP" } } },
{ "name": "a 2023 dismissal uses the 643 pound cap", "args": ["1970-01-01", "2013-10-02", "2023-10-02", { "minor": 70000, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 10, "yearsCounted": 10, "halfWeeks": 30, "weeklyPayUsed": { "minor": 64300, "currency": "GBP" }, "amount": { "minor": 964500, "currency": "GBP" } } },
{ "name": "the day the 2024 cap came in", "args": ["1970-01-01", "2014-04-06", "2024-04-06", { "minor": 70000, "currency": "GBP" }], "expect": { "eligible": true, "serviceYears": 10, "yearsCounted": 10, "halfWeeks": 30, "weeklyPayUsed": { "minor": 70000, "currency": "GBP" }, "amount": { "minor": 1050000, "currency": "GBP" } } },
{ "name": "a relevant date before the caps this version carries is an error", "args": ["1970-01-01", "2010-01-01", "2023-04-05", { "minor": 60000, "currency": "GBP" }], "expectError": "no statutory week's pay cap" },
{ "name": "negative weekly pay is an error", "args": ["1970-01-01", "2010-01-01", "2026-09-23", { "minor": -1, "currency": "GBP" }], "expectError": "must not be negative" },
{ "name": "a relevant date before the start is an error", "args": ["1970-01-01", "2026-09-24", "2026-09-23", { "minor": 60000, "currency": "GBP" }], "expectError": "is before startDate" }
]