From d947f70ab8dc36c51fc91ab3a235b446d99fbe63 Mon Sep 17 00:00:00 2001 From: Niall Molloy Date: Thu, 8 Apr 2021 13:31:33 +0100 Subject: [PATCH] feat: isOverStatePensionAge() no longer requires gender --- README.md | 6 +++--- src/get-state-pension-date.js | 12 +++++++----- test/is-over-state-pension-age.js | 13 ++++++++----- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 67cebd9..15da7be 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ const spaString = getStatePensionDateAsString('1990-03-25', 'female'); ``` ### `isOverStatePensionAge()` -Takes the same parameters as `getStatePensionDate()` but returns a `boolean` if the State Pension age date is today or in the past. +Takes a date of birth and returns a `boolean`, returning `true` if the State Pension age date is today or in the past, `false` if it’s in the future. **For example:** @@ -48,10 +48,10 @@ Takes the same parameters as `getStatePensionDate()` but returns a `boolean` if const {isOverStatePensionAge} = require('get-state-pension-date'); // boolean: true -const overSpa = isOverStatePensionAge('1953-03-25', 'male'); +const overSpa = isOverStatePensionAge('1953-03-25'); // boolean: false -const workingAge = isOverStatePensionAge('1990-03-25', 'female'); +const workingAge = isOverStatePensionAge('1990-03-25'); ``` All functions will throw if the date of birth is not a `YYYY-MM-DD` formatted string or if the gender is not a string of `male` or `female`. diff --git a/src/get-state-pension-date.js b/src/get-state-pension-date.js index 90676d2..3b052d6 100644 --- a/src/get-state-pension-date.js +++ b/src/get-state-pension-date.js @@ -95,15 +95,17 @@ const getStatePensionDateAsString = (dateOfBirth, gender) => { }; /** - * Function determine whether a person of a given 'gender' and 'Date of birth' - * would be over State Pension age. + * Function to determine whether a person is currently over State Pension age + * based on their date of birth. * * @param {string} dateOfBirth Input date of birth string (YYYY-MM-DD) - * @param {string} gender gender as string ('male' or 'female') * @returns {boolean} true if over SPA, false if not */ -const isOverStatePensionAge = (dateOfBirth, gender) => { - const spaDate = getStatePensionDate(dateOfBirth, gender); +const isOverStatePensionAge = dateOfBirth => { + // Since December 2018 the State Pension age has been equalised for men and + // women so we no longer need a gender flag to passed by the user, hardcoding + // for this call. + const spaDate = getStatePensionDate(dateOfBirth, 'male'); const now = Date.now(); return spaDate.getTime() <= now; }; diff --git a/test/is-over-state-pension-age.js b/test/is-over-state-pension-age.js index 3e3f52d..9a80e6a 100644 --- a/test/is-over-state-pension-age.js +++ b/test/is-over-state-pension-age.js @@ -2,17 +2,20 @@ const t = require('tap'); const timekeeper = require('timekeeper'); -const {isOverStatePensionAge} = require('../src/get-state-pension-date'); +const {isOverStatePensionAge: overSPA} = require('../src/get-state-pension-date'); // Freeze date so SPA date for 1954-03-25 is always 'today' timekeeper.freeze(new Date(2019, 8, 6)); // Return type -t.type(isOverStatePensionAge('1953-12-05', 'male'), 'boolean', 'returns a boolean'); +t.type(overSPA('1953-12-05'), 'boolean', 'returns a boolean'); + +// Reuses getStatePensionDate() validation +t.throws(() => overSPA('fail'), 'throws if date of birth is not valid'); // Tests -t.ok(isOverStatePensionAge('1953-12-05', 'male'), 'true when SPA date is in the past'); -t.ok(isOverStatePensionAge('1954-03-25', 'female'), 'true when SPA date is today'); -t.notOk(isOverStatePensionAge('1990-12-05', 'female'), 'false when SPA date is in the future'); +t.ok(overSPA('1953-12-05'), 'true when SPA date is in the past'); +t.ok(overSPA('1954-03-25'), 'true when SPA date is today'); +t.notOk(overSPA('1990-12-05'), 'false when SPA date is in the future'); timekeeper.reset();