diff --git a/__tests__/pages/api/benefits.test.ts b/__tests__/pages/api/benefits.test.ts index 45cc99f28..2ccca674e 100644 --- a/__tests__/pages/api/benefits.test.ts +++ b/__tests__/pages/api/benefits.test.ts @@ -12,6 +12,8 @@ import { FieldKey } from '../../../utils/api/definitions/fields' import roundToTwo from '../../../utils/api/helpers/roundToTwo' import { legalValues } from '../../../utils/api/scrapers/output' import { + age60NoDefer, + age65NoDefer, canadaWholeLife, canadian, expectAfsEligible, @@ -23,6 +25,8 @@ import { expectOasGisEligible, expectOasGisTooYoung, expectOasGisUnavailable, + income10k, + partnerIncomeZero, partnerNoHelpNeeded, partnerUndefined, } from './expectUtils' @@ -31,11 +35,8 @@ import { mockGetRequest, mockGetRequestError } from './factory' describe('consolidated benefit tests: unavailable', () => { it('returns "unavailable" - living in Canada, under 10 years in Canada, lived in social country', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, livedOutsideCanada: true, @@ -53,11 +54,8 @@ describe('consolidated benefit tests: unavailable', () => { it('returns "unavailable" - living in No Agreement, under 20 years in Canada, lived in social country', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, livingCountry: LivingCountry.NO_AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -84,11 +82,8 @@ describe('consolidated benefit tests: unavailable', () => { it('returns "unavailable" - living in Agreement, under 20 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, livingCountry: LivingCountry.AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -114,11 +109,8 @@ describe('consolidated benefit tests: unavailable', () => { }) it('returns "unavailable" - age 60, living in Agreement, under 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, livingCountry: LivingCountry.AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -126,8 +118,7 @@ describe('consolidated benefit tests: unavailable', () => { yearsInCanadaSince18: 9, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expect(res.body.summary.state).toEqual(EstimationSummaryState.UNAVAILABLE) @@ -180,11 +171,8 @@ describe('consolidated benefit tests: ineligible', () => { it('returns "ineligible" - age 60, married, living in Canada, under 10 years in Canada, not lived in social country', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: true, @@ -210,11 +198,8 @@ describe('consolidated benefit tests: ineligible', () => { it('returns "ineligible" - age 60, single, living in No Agreement, under 20 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.SINGLE, livingCountry: LivingCountry.NO_AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -240,11 +225,8 @@ describe('consolidated benefit tests: ineligible', () => { it('returns "ineligible" - age 60, married, living in No Agreement, under 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, livingCountry: LivingCountry.NO_AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -252,8 +234,7 @@ describe('consolidated benefit tests: ineligible', () => { yearsInCanadaSince18: 9, everLivedSocialCountry: false, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectAllIneligible(res) @@ -277,9 +258,7 @@ describe('consolidated benefit tests: max income checks', () => { const input = { incomeAvailable: true, income: legalValues.MAX_OAS_INCOME, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, ...canadaWholeLife, @@ -301,9 +280,7 @@ describe('consolidated benefit tests: max income checks', () => { const input = { incomeAvailable: true, income: legalValues.MAX_GIS_INCOME_SINGLE, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, ...canadaWholeLife, @@ -324,15 +301,12 @@ describe('consolidated benefit tests: max income checks', () => { const input = { incomeAvailable: true, income: legalValues.MAX_GIS_INCOME_PARTNER_NO_OAS_NO_ALW, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.NONE, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, } let res = await mockGetRequest(input) @@ -350,15 +324,12 @@ describe('consolidated benefit tests: max income checks', () => { const input = { incomeAvailable: true, income: legalValues.MAX_GIS_INCOME_PARTNER_OAS, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, } let res = await mockGetRequest(input) @@ -376,15 +347,12 @@ describe('consolidated benefit tests: max income checks', () => { const input = { incomeAvailable: true, income: legalValues.MAX_GIS_INCOME_PARTNER_ALW, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.ALW, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, } let res = await mockGetRequest(input) @@ -402,15 +370,12 @@ describe('consolidated benefit tests: max income checks', () => { const input = { incomeAvailable: true, income: legalValues.MAX_ALW_INCOME, - age: 60, - oasDefer: false, - oasAge: undefined, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, } let res = await mockGetRequest(input) @@ -429,9 +394,7 @@ describe('consolidated benefit tests: max income checks', () => { const input = { incomeAvailable: true, income: legalValues.MAX_AFS_INCOME, - age: 60, - oasDefer: false, - oasAge: undefined, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, ...canadaWholeLife, @@ -453,11 +416,8 @@ describe('consolidated benefit tests: max income checks', () => { describe('consolidated benefit tests: eligible: 65+', () => { it('returns "eligible" - separated, partial oas', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, livedOutsideCanada: true, @@ -475,11 +435,8 @@ describe('consolidated benefit tests: eligible: 65+', () => { it('returns "eligible" - single, living in Agreement, 20 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, livingCountry: LivingCountry.AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -504,11 +461,8 @@ describe('consolidated benefit tests: eligible: 65+', () => { it('returns "eligible" - single, living in No Agreement, 20 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, livingCountry: LivingCountry.NO_AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -533,11 +487,8 @@ describe('consolidated benefit tests: eligible: 65+', () => { it('returns "eligible" - married, full oas (no clawback)', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, @@ -567,8 +518,7 @@ describe('consolidated benefit tests: eligible: 65+', () => { ) let inputBase = { - incomeAvailable: true, - income: 10000, + ...income10k, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, @@ -598,15 +548,12 @@ describe('consolidated benefit tests: eligible: 65+', () => { const res = await mockGetRequest({ incomeAvailable: true, income: legalValues.MAX_OAS_INCOME - 1, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectOasEligible(res) @@ -627,8 +574,7 @@ describe('consolidated benefit tests: eligible: 65+', () => { it('returns "eligible" - married, full oas, age 75', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, + ...income10k, age: 75, oasDefer: false, oasAge: undefined, @@ -660,17 +606,13 @@ describe('consolidated benefit tests: eligible: 65+', () => { describe('consolidated benefit tests: eligible: 60-64', () => { it('returns "ALW eligible" - married', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectOasGisTooYoung(res) @@ -685,11 +627,8 @@ describe('consolidated benefit tests: eligible: 60-64', () => { it('returns "AFS eligible" - widowed', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, ...canadaWholeLife, @@ -707,19 +646,15 @@ describe('consolidated benefit tests: eligible: 60-64', () => { it('returns "ALW eligible" - married, 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: true, yearsInCanadaSince18: 10, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectOasGisTooYoung(res) @@ -727,11 +662,8 @@ describe('consolidated benefit tests: eligible: 60-64', () => { }) it('returns "ALW eligible" - married, living in Agreement, 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, livingCountry: LivingCountry.AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -739,8 +671,7 @@ describe('consolidated benefit tests: eligible: 60-64', () => { yearsInCanadaSince18: 10, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expect(res.body.results.oas.eligibility.result).toEqual( @@ -760,11 +691,8 @@ describe('consolidated benefit tests: eligible: 60-64', () => { it('returns "ALW eligible" - married, living in No Agreement, 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, livingCountry: LivingCountry.NO_AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -772,8 +700,7 @@ describe('consolidated benefit tests: eligible: 60-64', () => { yearsInCanadaSince18: 10, everLivedSocialCountry: false, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expect(res.body.results.oas.eligibility.result).toEqual( @@ -793,8 +720,7 @@ describe('consolidated benefit tests: eligible: 60-64', () => { it('returns "ALW eligible" - age 64, married, 19 years in Canada, lived in social country', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, + ...income10k, age: 64, oasDefer: false, oasAge: undefined, @@ -804,8 +730,7 @@ describe('consolidated benefit tests: eligible: 60-64', () => { yearsInCanadaSince18: 19, everLivedSocialCountry: true, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectOasGisTooYoung(res) diff --git a/__tests__/pages/api/expectUtils.ts b/__tests__/pages/api/expectUtils.ts index e5a78dfdf..c13f0fa1f 100644 --- a/__tests__/pages/api/expectUtils.ts +++ b/__tests__/pages/api/expectUtils.ts @@ -131,11 +131,39 @@ export const partnerNoHelpNeeded = { partnerEverLivedSocialCountry: undefined, } +export const partnerIncomeZero = { + partnerIncomeAvailable: true, + partnerIncome: 0, +} + +export const incomeZero = { + incomeAvailable: true, + income: 0, +} + +export const income10k = { + incomeAvailable: true, + income: 10000, +} + +export const age65NoDefer = { + age: 65, + oasDefer: false, + oasAge: undefined, +} + +export const age60NoDefer = { + age: 60, + oasDefer: false, + oasAge: undefined, +} + export const canadaWholeLife = { livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, } + export const canadian = { livingCountry: LivingCountry.CANADA, legalStatus: LegalStatus.CANADIAN_CITIZEN, diff --git a/__tests__/pages/api/field-reqs.test.ts b/__tests__/pages/api/field-reqs.test.ts index b6cf35b87..72323cf06 100644 --- a/__tests__/pages/api/field-reqs.test.ts +++ b/__tests__/pages/api/field-reqs.test.ts @@ -6,7 +6,13 @@ import { PartnerBenefitStatus, } from '../../../utils/api/definitions/enums' import { FieldKey } from '../../../utils/api/definitions/fields' -import { canadaWholeLife, canadian, partnerUndefined } from './expectUtils' +import { + age65NoDefer, + canadaWholeLife, + canadian, + income10k, + partnerUndefined, +} from './expectUtils' import { mockGetRequest } from './factory' describe('field requirement analysis', () => { @@ -48,8 +54,7 @@ describe('field requirement analysis', () => { it('requires no fields when all provided', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, + ...income10k, age: 65, oasDefer: true, oasAge: 70, @@ -94,11 +99,8 @@ describe('field requirement analysis', () => { describe('field requirements analysis: conditional fields', () => { it('requires "yearsInCanadaSince18" when livedOutsideCanada=true', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, livedOutsideCanada: true, @@ -113,11 +115,8 @@ describe('field requirements analysis: conditional fields', () => { it('requires "everLivedSocialCountry" when living in Canada and under 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, livedOutsideCanada: true, @@ -132,11 +131,8 @@ describe('field requirements analysis: conditional fields', () => { it('requires "everLivedSocialCountry" when living in No Agreement and under 20 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, livingCountry: LivingCountry.NO_AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -152,11 +148,8 @@ describe('field requirements analysis: conditional fields', () => { it('requires partner questions when marital=married', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, diff --git a/__tests__/pages/api/help-me-find-out.test.ts b/__tests__/pages/api/help-me-find-out.test.ts index 7ab78f61e..e10b879c7 100644 --- a/__tests__/pages/api/help-me-find-out.test.ts +++ b/__tests__/pages/api/help-me-find-out.test.ts @@ -9,11 +9,15 @@ import { } from '../../../utils/api/definitions/enums' import { legalValues } from '../../../utils/api/scrapers/output' import { + age60NoDefer, + age65NoDefer, canadian, expectAlwEligible, expectOasEligible, expectOasGisEligible, expectOasGisTooYoung, + incomeZero, + partnerIncomeZero, } from './expectUtils' import { mockGetRequest } from './factory' @@ -22,17 +26,14 @@ describe('Help Me Find Out scenarios', () => { const input = { incomeAvailable: true, income: legalValues.MAX_GIS_INCOME_PARTNER_NO_OAS_NO_ALW, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.HELP_ME, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, partnerAge: 65, partnerLivingCountry: LivingCountry.CANADA, partnerLegalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -57,17 +58,14 @@ describe('Help Me Find Out scenarios', () => { const input = { incomeAvailable: true, income: legalValues.MAX_GIS_INCOME_PARTNER_OAS, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.HELP_ME, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, partnerAge: 65, partnerLivingCountry: LivingCountry.CANADA, partnerLegalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -92,17 +90,14 @@ describe('Help Me Find Out scenarios', () => { const input = { incomeAvailable: true, income: legalValues.MAX_GIS_INCOME_PARTNER_OAS, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.HELP_ME, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, partnerAge: 65, partnerLivingCountry: LivingCountry.CANADA, partnerLegalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -127,17 +122,14 @@ describe('Help Me Find Out scenarios', () => { const input = { incomeAvailable: true, income: legalValues.MAX_ALW_INCOME, // too high for allowance - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.HELP_ME, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, partnerAge: 60, partnerLivingCountry: LivingCountry.CANADA, partnerLegalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -154,17 +146,14 @@ describe('Help Me Find Out scenarios', () => { const input = { incomeAvailable: true, income: legalValues.MAX_ALW_INCOME - 1, // okay for allowance - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.HELP_ME, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, partnerAge: 60, partnerLivingCountry: LivingCountry.CANADA, partnerLegalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -178,19 +167,15 @@ describe('Help Me Find Out scenarios', () => { }) it('works when client young, partner young (no one gets anything)', async () => { const input = { - incomeAvailable: true, - income: 0, - age: 60, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.HELP_ME, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, partnerAge: 60, partnerLivingCountry: LivingCountry.CANADA, partnerLegalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -218,19 +203,15 @@ describe('Help Me Find Out scenarios', () => { }) it('works when client young, partner old (partner=gis, therefore client alw eligible)', async () => { const input = { - incomeAvailable: true, - income: 0, - age: 60, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.HELP_ME, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, partnerAge: 65, partnerLivingCountry: LivingCountry.CANADA, partnerLegalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -253,19 +234,15 @@ describe('Help Me Find Out scenarios', () => { }) it('works when client young, partner old (partner=noGis, therefore client alw ineligible)', async () => { const input = { - incomeAvailable: true, - income: 0, - age: 60, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: false, yearsInCanadaSince18: undefined, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.HELP_ME, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, partnerAge: 65, partnerLivingCountry: LivingCountry.NO_AGREEMENT, // gis ineligible partnerLegalStatus: LegalStatus.CANADIAN_CITIZEN, diff --git a/__tests__/pages/api/index.test.ts b/__tests__/pages/api/index.test.ts index 5b0f9d56e..cf14800fc 100644 --- a/__tests__/pages/api/index.test.ts +++ b/__tests__/pages/api/index.test.ts @@ -7,13 +7,19 @@ import { ResultKey, ResultReason, } from '../../../utils/api/definitions/enums' +import { legalValues } from '../../../utils/api/scrapers/output' import { + age60NoDefer, + age65NoDefer, canadaWholeLife, canadian, expectAfsEligible, expectAlwEligible, expectGisEligible, expectOasEligible, + income10k, + incomeZero, + partnerIncomeZero, partnerNoHelpNeeded, partnerUndefined, } from './expectUtils' @@ -22,11 +28,8 @@ import { mockGetRequest, mockPartialGetRequest } from './factory' describe('OAS entitlement scenarios', () => { it('returns "eligible for $619.38" when 39 years in Canada (rounding test)', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, livedOutsideCanada: true, @@ -41,11 +44,8 @@ describe('OAS entitlement scenarios', () => { describe('GIS entitlement scenarios', () => { it('returns "$394.68" when single and 10000 income', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, ...canadaWholeLife, @@ -55,11 +55,8 @@ describe('GIS entitlement scenarios', () => { }) it('returns "$959.26" when single and 0 income', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 0, - age: 65, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, ...canadaWholeLife, @@ -69,45 +66,34 @@ describe('GIS entitlement scenarios', () => { }) it('returns "$850.26" when married and 10000 income and no partner OAS', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.NONE, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectGisEligible(res, 861.86) }) it('returns "$959.26" when married and 0 income and no partner OAS', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 0, - age: 65, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.NONE, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectGisEligible(res, 968.86) }) it('returns "$819.26" when married and 10000 income + 1000 partner income and no partner OAS', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, @@ -120,11 +106,8 @@ describe('GIS entitlement scenarios', () => { }) it('returns "$306.33" when married and 10000 income + 1000 partner income and partner OAS', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, @@ -137,11 +120,8 @@ describe('GIS entitlement scenarios', () => { }) it('returns "$521.33" when married and 10000 income + 1000 partner income and partner Allowance', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, @@ -154,34 +134,26 @@ describe('GIS entitlement scenarios', () => { }) it('returns "$577.43" when married and 0 income + 0 partner income and partner OAS', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 0, - age: 65, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectGisEligible(res, 583.2) }) it('returns "$577.43" when married and 0 income + 0 partner income and partner Allowance', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 0, - age: 65, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age65NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.ALW, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectGisEligible(res, 583.2) @@ -190,9 +162,7 @@ describe('GIS entitlement scenarios', () => { const res = await mockGetRequest({ incomeAvailable: true, income: 1000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, livedOutsideCanada: true, @@ -206,9 +176,7 @@ describe('GIS entitlement scenarios', () => { const res = await mockGetRequest({ incomeAvailable: true, income: 1000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...age65NoDefer, maritalStatus: MaritalStatus.SINGLE, ...canadian, livedOutsideCanada: true, @@ -223,19 +191,15 @@ describe('GIS entitlement scenarios', () => { describe('basic Allowance scenarios', () => { it('returns "ineligible" when partner not receiving OAS', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: true, yearsInCanadaSince18: 10, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.NONE, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expect(res.body.results.alw.eligibility.result).toEqual( @@ -252,15 +216,12 @@ describe('Allowance entitlement scenarios', () => { const res = await mockGetRequest({ incomeAvailable: true, income: 20000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectAlwEligible(res, 341.68) @@ -268,34 +229,26 @@ describe('Allowance entitlement scenarios', () => { it('returns "eligible for $565.35" when 40 years in Canada and income=10000', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectAlwEligible(res, 565.35) }) it('returns "eligible for $1231.87" when 40 years in Canada and income=0', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 0, - age: 60, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, ...canadaWholeLife, partnerBenefitStatus: PartnerBenefitStatus.OAS_GIS, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expectAlwEligible(res, 1231.87) @@ -306,10 +259,8 @@ describe('basic Allowance for Survivor scenarios', () => { it('returns "ineligible due to age" when age 65 and high income', async () => { const res = await mockPartialGetRequest({ incomeAvailable: true, - income: 26257, - age: 65, - oasDefer: false, - oasAge: undefined, + income: legalValues.MAX_AFS_INCOME + 1, + ...age65NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, ...canadaWholeLife, @@ -322,11 +273,8 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "ineligible" when age over 64', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 65, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age65NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, livedOutsideCanada: true, @@ -341,8 +289,7 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "ineligible" when age under 60', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, + ...income10k, age: 59, oasDefer: false, oasAge: undefined, @@ -362,11 +309,8 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "ineligible" when citizen and under 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, livedOutsideCanada: true, @@ -383,19 +327,15 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "ineligible" when married', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.PARTNERED, ...canadian, livedOutsideCanada: true, yearsInCanadaSince18: 10, everLivedSocialCountry: undefined, partnerBenefitStatus: PartnerBenefitStatus.NONE, - partnerIncomeAvailable: true, - partnerIncome: 0, + ...partnerIncomeZero, ...partnerNoHelpNeeded, }) expect(res.body.results.afs.eligibility.result).toEqual( @@ -407,11 +347,8 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "eligible" when widowed', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, livedOutsideCanada: true, @@ -423,11 +360,8 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "eligible" when living in Agreement and 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, livingCountry: LivingCountry.AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -440,11 +374,8 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "unavailable" when living in Agreement and under 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, livingCountry: LivingCountry.AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -462,11 +393,8 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "eligible" when living in No Agreement and 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, livingCountry: LivingCountry.NO_AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -479,11 +407,8 @@ describe('basic Allowance for Survivor scenarios', () => { }) it('returns "ineligible" when living in No Agreement and under 10 years in Canada', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, livingCountry: LivingCountry.NO_AGREEMENT, legalStatus: LegalStatus.CANADIAN_CITIZEN, @@ -506,9 +431,7 @@ describe('AFS entitlement scenarios', () => { const res = await mockGetRequest({ incomeAvailable: true, income: 20000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, ...canadaWholeLife, @@ -518,11 +441,8 @@ describe('AFS entitlement scenarios', () => { }) it('returns "eligible for $681.35" when 40 years in Canada and income=10000', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 10000, - age: 60, - oasDefer: false, - oasAge: undefined, + ...income10k, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, ...canadaWholeLife, @@ -532,11 +452,8 @@ describe('AFS entitlement scenarios', () => { }) it('returns "eligible for $1468.47" when 40 years in Canada and income=0', async () => { const res = await mockGetRequest({ - incomeAvailable: true, - income: 0, - age: 60, - oasDefer: false, - oasAge: undefined, + ...incomeZero, + ...age60NoDefer, maritalStatus: MaritalStatus.WIDOWED, ...canadian, ...canadaWholeLife,