From ccf65dc019fb42346d252320c7aac577266f1dd4 Mon Sep 17 00:00:00 2001 From: Alex Soloviev Date: Thu, 14 Nov 2024 10:00:38 -0700 Subject: [PATCH 1/2] change incomeWork schema --- components/StepperPage/index.tsx | 14 ++++++++++---- components/StepperPage/utils.ts | 17 +++++++++++------ pages/questions/index.tsx | 2 -- utils/api/definitions/schemas.ts | 26 ++++++++------------------ 4 files changed, 29 insertions(+), 30 deletions(-) diff --git a/components/StepperPage/index.tsx b/components/StepperPage/index.tsx index 5a6b6ae49..b84bc90f1 100644 --- a/components/StepperPage/index.tsx +++ b/components/StepperPage/index.tsx @@ -78,7 +78,7 @@ const StepperPage: React.FC = ({ setPageTitle }) => { useEffect(() => { setSteps(getSteps(tsln)) setStepComponents(getComponentForStep()) - }, [tsln]) + }, [tsln, language]) const [visibleFields]: [ VisibleFieldsObject, @@ -115,6 +115,8 @@ const StepperPage: React.FC = ({ setPageTitle }) => { const [activeStep, setActiveStep] = useSessionStorage('step', 1) const [isLastStep, setIsLastStep] = useState(false) + const [stepTitle, setStepTitle] = useState('') + const [errorsVisible, setErrorsVisible]: [ ErrorsVisibleObject, (value: ErrorsVisibleObject) => void @@ -252,10 +254,14 @@ const StepperPage: React.FC = ({ setPageTitle }) => { ]) useEffect(() => { - const title = getStepTitle(language, activeStep, totalSteps, steps) - setPageTitle(title) + const title = getStepTitle(tsln, language, activeStep, totalSteps, steps) + setStepTitle(title) }, [activeStep, totalSteps, language, setPageTitle]) + useEffect(() => { + setPageTitle(stepTitle) + }, [stepTitle]) + const getComponentForStep = () => { const metaDataForFields = getFieldsMetaData(activeStep) @@ -420,7 +426,7 @@ const StepperPage: React.FC = ({ setPageTitle }) => { id="stepper123" name={tsln.introPageTitle} activeStep={activeStep} - title={getStepTitle(tsln._language, activeStep, totalSteps, steps)} + title={stepTitle} previousProps={{ id: 'previous', text: tsln.stepper.previousStep, diff --git a/components/StepperPage/utils.ts b/components/StepperPage/utils.ts index ebdc9684a..6ca08ec44 100644 --- a/components/StepperPage/utils.ts +++ b/components/StepperPage/utils.ts @@ -126,7 +126,7 @@ export const getSteps = (tsln) => { const AA_FORM_SUBMIT_ACTION = 'submit' return { 1: { - title: tsln.category.marital, + title: 'marital', keys: ['maritalStatus', 'invSeparated'], partnerKeys: [], buttonAttributes: { @@ -134,7 +134,7 @@ export const getSteps = (tsln) => { }, }, 2: { - title: tsln.category.age, + title: 'age', keys: ['age', 'receiveOAS', 'oasDeferDuration', 'oasDefer', 'oasAge'], partnerKeys: ['partnerAge', 'partnerBenefitStatus'], buttonAttributes: { @@ -142,7 +142,7 @@ export const getSteps = (tsln) => { }, }, 3: { - title: tsln.category.income, + title: 'income', keys: ['incomeAvailable', 'income', 'incomeWork'], partnerKeys: [ 'partnerIncomeAvailable', @@ -154,7 +154,7 @@ export const getSteps = (tsln) => { }, }, 4: { - title: tsln.category.residence, + title: 'residence', keys: [ 'livingCountry', 'livedOnlyInCanada', @@ -222,6 +222,7 @@ export const getIsStepValid = ( } export const getStepTitle = ( + tsln: WebTranslations, language: string, activeStep: number, totalSteps: number, @@ -229,8 +230,12 @@ export const getStepTitle = ( ) => { const title = language === 'en' - ? `Step ${activeStep} of ${totalSteps}: ${steps[activeStep].title}` - : `Étape ${activeStep} de ${totalSteps} : ${steps[activeStep].title}` + ? `Step ${activeStep} of ${totalSteps}: ${ + tsln['category'][steps[activeStep].title] + }` + : `Étape ${activeStep} de ${totalSteps} : ${ + tsln['category'][steps[activeStep].title] + }` return title } diff --git a/pages/questions/index.tsx b/pages/questions/index.tsx index 1202c33d0..f5ca7944b 100644 --- a/pages/questions/index.tsx +++ b/pages/questions/index.tsx @@ -4,7 +4,6 @@ import { useTranslation } from '../../components/Hooks' import { WebTranslations } from '../../i18n/web' import { useEffect, useState } from 'react' import Head from 'next/head' -import { useRouter } from 'next/router' import StepperPage from '../../components/StepperPage' import React from 'react' @@ -12,7 +11,6 @@ const Stepper: NextPage<{ adobeAnalyticsUrl: string }> = ({ adobeAnalyticsUrl, }) => { const tsln = useTranslation() - const language = useRouter().locale const [pageTitle, setPageTitle] = useState(tsln.questionPageTitle) useEffect(() => { diff --git a/utils/api/definitions/schemas.ts b/utils/api/definitions/schemas.ts index 6f295b3a6..b5ca569b9 100644 --- a/utils/api/definitions/schemas.ts +++ b/utils/api/definitions/schemas.ts @@ -65,15 +65,10 @@ export const RequestSchema = Joi.object({ // }) // ) // .message(ValidationErrors.incomeTooHigh), - incomeWork: Joi.number() - .default(0) - .required() - .messages({ 'any.required': ValidationErrors.incomeWorkEmpty }) - .precision(2) - .min(0) - .message(ValidationErrors.incomeBelowZero), - //.max(Joi.ref('income')) - //.message(ValidationErrors.incomeWorkGreaterThanNetIncome), + incomeWork: Joi.alternatives().try( + Joi.number().precision(2).min(0).message(ValidationErrors.incomeBelowZero), + Joi.string().valid('.').strip() + ), age: Joi.number() .required() .messages({ @@ -270,15 +265,10 @@ export const RequestSchema = Joi.object({ // }) // ) // .message(ValidationErrors.partnerIncomeTooHigh), - partnerIncomeWork: Joi.number() - .default(0) - .required() - .messages({ 'any.required': ValidationErrors.partnerIncomeWorkEmpty }) - .precision(2) - .min(0) - .message(ValidationErrors.incomeBelowZero), - //.max(Joi.ref('partnerIncome')) - //.message(ValidationErrors.partnerIncomeWorkGreaterThanNetIncome), + partnerIncomeWork: Joi.alternatives().try( + Joi.number().precision(2).min(0).message(ValidationErrors.incomeBelowZero), + Joi.string().valid('.').strip() + ), partnerAge: Joi.number() .required() .messages({ From 8803be0023010e0c6a9e3fc464926df5eb74998a Mon Sep 17 00:00:00 2001 From: Alex Soloviev Date: Thu, 14 Nov 2024 10:12:11 -0700 Subject: [PATCH 2/2] make tests pass --- __tests__/pages/api/field-reqs.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tests__/pages/api/field-reqs.test.ts b/__tests__/pages/api/field-reqs.test.ts index 3040d5109..1bbba5c3a 100644 --- a/__tests__/pages/api/field-reqs.test.ts +++ b/__tests__/pages/api/field-reqs.test.ts @@ -41,7 +41,7 @@ describe('field requirement analysis', () => { FieldKey.MARITAL_STATUS, FieldKey.AGE, FieldKey.INCOME, - //FieldKey.INCOME_WORK, + FieldKey.INCOME_WORK, // FieldKey.LEGAL_STATUS, FieldKey.LIVING_COUNTRY, FieldKey.LIVED_ONLY_IN_CANADA,