From f3eee7b0b1a8b314b9214f22d65b8c11a32e5a34 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Tue, 4 Feb 2025 22:50:23 +0000 Subject: [PATCH 01/19] third addres on --- .envrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.envrc b/.envrc index c5e72d09ad2..a33401c69de 100644 --- a/.envrc +++ b/.envrc @@ -137,7 +137,7 @@ export FEATURE_FLAG_SAFETY_MOVE=true export FEATURE_FLAG_MANAGE_SUPPORTING_DOCS=true # Feature flags to enable third address -export FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false +export FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=true # Feature flag to disable/enable headquarters role export FEATURE_FLAG_HEADQUARTERS_ROLE=true From 26923c6cf0ab2de69060da2ec166a0dc8b550377 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Tue, 4 Feb 2025 23:57:57 +0000 Subject: [PATCH 02/19] Initial checks for empty second address --- .../Office/ShipmentForm/ShipmentForm.jsx | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/components/Office/ShipmentForm/ShipmentForm.jsx b/src/components/Office/ShipmentForm/ShipmentForm.jsx index 076212d6953..08e9e4fdc53 100644 --- a/src/components/Office/ShipmentForm/ShipmentForm.jsx +++ b/src/components/Office/ShipmentForm/ShipmentForm.jsx @@ -357,6 +357,29 @@ const ShipmentForm = (props) => { : generatePath(servicesCounselingRoutes.BASE_ORDERS_EDIT_PATH, { moveCode }); const submitMTOShipment = (formValues, actions) => { + if (formValues.hasTertiaryDestination === 'true' && formValues.secondaryDestination.address.streetAddress1 === '') { + actions.setFieldError('secondaryDestination.address.streetAddress1', 'destination address required'); + actions.setSubmitting(false); + return; + } + if (formValues.hasTertiaryPickup === 'true' && formValues.secondaryPickup.address.streetAddress1 === '') { + actions.setFieldError('secondaryPickup.address.streetAddress1', 'Pickup address required'); + actions.setSubmitting(false); + return; + } + + if (formValues.hasTertiaryDelivery === 'yes' && formValues.secondaryDelivery.address.streetAddress1 === '') { + actions.setFieldError('secondaryDelivery.address.streetAddress1', 'destination address required'); + actions.setSubmitting(false); + return; + } + + if (formValues.hasTertiaryPickup === 'yes' && formValues.secondaryPickup.address.streetAddress1 === '') { + actions.setFieldError('secondaryPickup.address.streetAddress1', 'Pickup address required'); + actions.setSubmitting(false); + return; + } + //* PPM Shipment *// if (isPPM) { const ppmShipmentBody = formatPpmShipmentForAPI(formValues); @@ -1496,7 +1519,7 @@ const ShipmentForm = (props) => { name="hasTertiaryPickup" value="false" title="No, there is not a third pickup address" - checked={hasTertiaryPickup !== 'true'} + checked={hasTertiaryPickup !== 'yes'} /> From df43551390c0d7e5ab3ed54539e684c1c32d7826 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Wed, 5 Feb 2025 15:31:23 +0000 Subject: [PATCH 03/19] Finished checks --- .../Office/ShipmentForm/ShipmentForm.jsx | 39 ++++++++++--------- 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/components/Office/ShipmentForm/ShipmentForm.jsx b/src/components/Office/ShipmentForm/ShipmentForm.jsx index 08e9e4fdc53..56718759557 100644 --- a/src/components/Office/ShipmentForm/ShipmentForm.jsx +++ b/src/components/Office/ShipmentForm/ShipmentForm.jsx @@ -357,11 +357,12 @@ const ShipmentForm = (props) => { : generatePath(servicesCounselingRoutes.BASE_ORDERS_EDIT_PATH, { moveCode }); const submitMTOShipment = (formValues, actions) => { - if (formValues.hasTertiaryDestination === 'true' && formValues.secondaryDestination.address.streetAddress1 === '') { - actions.setFieldError('secondaryDestination.address.streetAddress1', 'destination address required'); + if (formValues.hasSecondaryDelivery === 'yes' && formValues.delivery.address.streetAddress1 === '') { + actions.setFieldError('delivery.address.streetAddress1', 'Delivery address required'); actions.setSubmitting(false); return; } + if (formValues.hasTertiaryPickup === 'true' && formValues.secondaryPickup.address.streetAddress1 === '') { actions.setFieldError('secondaryPickup.address.streetAddress1', 'Pickup address required'); actions.setSubmitting(false); @@ -369,19 +370,22 @@ const ShipmentForm = (props) => { } if (formValues.hasTertiaryDelivery === 'yes' && formValues.secondaryDelivery.address.streetAddress1 === '') { - actions.setFieldError('secondaryDelivery.address.streetAddress1', 'destination address required'); - actions.setSubmitting(false); - return; - } - - if (formValues.hasTertiaryPickup === 'yes' && formValues.secondaryPickup.address.streetAddress1 === '') { - actions.setFieldError('secondaryPickup.address.streetAddress1', 'Pickup address required'); + actions.setFieldError('secondaryDelivery.address.streetAddress1', 'Delivery address required'); actions.setSubmitting(false); return; } //* PPM Shipment *// if (isPPM) { + if ( + formValues.hasTertiaryDestination === 'true' && + formValues.secondaryDestination.address.streetAddress1 === '' + ) { + actions.setFieldError('secondaryDestination.address.streetAddress1', 'Destination address required'); + actions.setSubmitting(false); + return; + } + const ppmShipmentBody = formatPpmShipmentForAPI(formValues); // Allow blank values to be entered into Pro Gear input fields @@ -587,8 +591,8 @@ const ShipmentForm = (props) => { secondaryPickup: hasSecondaryPickup === 'yes' ? secondaryPickup : {}, hasSecondaryDelivery: hasSecondaryDelivery === 'yes', secondaryDelivery: hasSecondaryDelivery === 'yes' ? secondaryDelivery : {}, - hasTertiaryPickup: hasTertiaryPickup === 'yes', - tertiaryPickup: hasTertiaryPickup === 'yes' ? tertiaryPickup : {}, + hasTertiaryPickup: hasTertiaryPickup === 'true', + tertiaryPickup: hasTertiaryPickup === 'true' ? tertiaryPickup : {}, hasTertiaryDelivery: hasTertiaryDelivery === 'yes', tertiaryDelivery: hasTertiaryDelivery === 'yes' ? tertiaryDelivery : {}, }); @@ -680,7 +684,6 @@ const ShipmentForm = (props) => { hasTertiaryDelivery, isActualExpenseReimbursement, } = values; - const lengthHasError = !!( (formikProps.touched.lengthFeet && formikProps.errors.lengthFeet === 'Required') || (formikProps.touched.lengthInches && formikProps.errors.lengthFeet === 'Required') @@ -1020,9 +1023,9 @@ const ShipmentForm = (props) => { data-testid="has-tertiary-pickup" label="Yes" name="hasTertiaryPickup" - value="yes" + value="true" title="Yes, I have a third pickup address" - checked={hasTertiaryPickup === 'yes'} + checked={hasTertiaryPickup === 'true'} /> { data-testid="no-tertiary-pickup" label="No" name="hasTertiaryPickup" - value="no" + value="false" title="No, I do not have a third pickup address" - checked={hasTertiaryPickup !== 'yes'} + checked={hasTertiaryPickup !== 'true'} /> - {hasTertiaryPickup === 'yes' && ( + {hasTertiaryPickup === 'true' && ( { name="hasTertiaryPickup" value="false" title="No, there is not a third pickup address" - checked={hasTertiaryPickup !== 'yes'} + checked={hasTertiaryPickup !== 'true'} /> From a93a18d24541ec49f19dd2887c4fadd2052f1302 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Wed, 5 Feb 2025 17:02:55 +0000 Subject: [PATCH 04/19] Moved to helper function --- .../Office/ShipmentForm/ShipmentForm.jsx | 27 +++---------------- src/shared/utils.js | 21 +++++++++++++++ 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/components/Office/ShipmentForm/ShipmentForm.jsx b/src/components/Office/ShipmentForm/ShipmentForm.jsx index 56718759557..1290a33c810 100644 --- a/src/components/Office/ShipmentForm/ShipmentForm.jsx +++ b/src/components/Office/ShipmentForm/ShipmentForm.jsx @@ -70,6 +70,7 @@ import { validateDate } from 'utils/validation'; import { isBooleanFlagEnabled } from 'utils/featureFlags'; import { dateSelectionWeekendHolidayCheck } from 'utils/calendar'; import { datePickerFormat, formatDate } from 'shared/dates'; +import { checkPreceedingAddress } from 'shared/utils'; const ShipmentForm = (props) => { const { @@ -357,35 +358,15 @@ const ShipmentForm = (props) => { : generatePath(servicesCounselingRoutes.BASE_ORDERS_EDIT_PATH, { moveCode }); const submitMTOShipment = (formValues, actions) => { - if (formValues.hasSecondaryDelivery === 'yes' && formValues.delivery.address.streetAddress1 === '') { - actions.setFieldError('delivery.address.streetAddress1', 'Delivery address required'); - actions.setSubmitting(false); - return; - } - - if (formValues.hasTertiaryPickup === 'true' && formValues.secondaryPickup.address.streetAddress1 === '') { - actions.setFieldError('secondaryPickup.address.streetAddress1', 'Pickup address required'); - actions.setSubmitting(false); - return; - } - - if (formValues.hasTertiaryDelivery === 'yes' && formValues.secondaryDelivery.address.streetAddress1 === '') { - actions.setFieldError('secondaryDelivery.address.streetAddress1', 'Delivery address required'); + const preceedingAddressError = checkPreceedingAddress(formValues); + if (preceedingAddressError !== '') { + actions.setFieldError(preceedingAddressError, 'Address required'); actions.setSubmitting(false); return; } //* PPM Shipment *// if (isPPM) { - if ( - formValues.hasTertiaryDestination === 'true' && - formValues.secondaryDestination.address.streetAddress1 === '' - ) { - actions.setFieldError('secondaryDestination.address.streetAddress1', 'Destination address required'); - actions.setSubmitting(false); - return; - } - const ppmShipmentBody = formatPpmShipmentForAPI(formValues); // Allow blank values to be entered into Pro Gear input fields diff --git a/src/shared/utils.js b/src/shared/utils.js index 12ccf91c7a8..cd4c84ed2a9 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -209,3 +209,24 @@ export function checkAddressTogglesToClearAddresses(body) { return values; } + +export function checkPreceedingAddress(formValues) { + const values = formValues; + let formError = ''; + + if (values.hasSecondaryDelivery === 'yes' && values.delivery.address.streetAddress1 === '') { + formError = 'delivery.address.streetAddress1'; + } + + if (values.hasTertiaryPickup === 'true' && values.secondaryPickup.address.streetAddress1 === '') { + formError = 'secondaryPickup.address.streetAddress1'; + } + + if (values.hasTertiaryDelivery === 'yes' && values.secondaryDelivery.address.streetAddress1 === '') { + formError = 'secondaryDelivery.address.streetAddress1'; + } + if (values.hasTertiaryDestination === 'true' && values.secondaryDestination.address.streetAddress1 === '') { + formError = 'secondaryDestination.address.streetAddress1'; + } + return formError; +} From 2ca1a1fa5744070de77f3e88665223381c835b3c Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Wed, 5 Feb 2025 17:44:27 +0000 Subject: [PATCH 05/19] changed var --- .envrc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.envrc b/.envrc index a33401c69de..c5e72d09ad2 100644 --- a/.envrc +++ b/.envrc @@ -137,7 +137,7 @@ export FEATURE_FLAG_SAFETY_MOVE=true export FEATURE_FLAG_MANAGE_SUPPORTING_DOCS=true # Feature flags to enable third address -export FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=true +export FEATURE_FLAG_THIRD_ADDRESS_AVAILABLE=false # Feature flag to disable/enable headquarters role export FEATURE_FLAG_HEADQUARTERS_ROLE=true From 8940a21d85c61de666d9fbe54a9d79d67b11bf73 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Wed, 5 Feb 2025 18:56:10 +0000 Subject: [PATCH 06/19] Fixed spacing --- src/shared/utils.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/shared/utils.js b/src/shared/utils.js index cd4c84ed2a9..13720d91ef0 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -217,11 +217,9 @@ export function checkPreceedingAddress(formValues) { if (values.hasSecondaryDelivery === 'yes' && values.delivery.address.streetAddress1 === '') { formError = 'delivery.address.streetAddress1'; } - if (values.hasTertiaryPickup === 'true' && values.secondaryPickup.address.streetAddress1 === '') { formError = 'secondaryPickup.address.streetAddress1'; } - if (values.hasTertiaryDelivery === 'yes' && values.secondaryDelivery.address.streetAddress1 === '') { formError = 'secondaryDelivery.address.streetAddress1'; } From d0d77164065adf7dd3a52cc02075bf05073326aa Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Thu, 6 Feb 2025 23:03:29 +0000 Subject: [PATCH 07/19] Rework --- .../Office/ShipmentForm/ShipmentForm.jsx | 82 +++++++++++++++++-- src/shared/utils.js | 39 +++++++++ 2 files changed, 112 insertions(+), 9 deletions(-) diff --git a/src/components/Office/ShipmentForm/ShipmentForm.jsx b/src/components/Office/ShipmentForm/ShipmentForm.jsx index 1290a33c810..6a627eea98a 100644 --- a/src/components/Office/ShipmentForm/ShipmentForm.jsx +++ b/src/components/Office/ShipmentForm/ShipmentForm.jsx @@ -70,7 +70,11 @@ import { validateDate } from 'utils/validation'; import { isBooleanFlagEnabled } from 'utils/featureFlags'; import { dateSelectionWeekendHolidayCheck } from 'utils/calendar'; import { datePickerFormat, formatDate } from 'shared/dates'; -import { checkPreceedingAddress } from 'shared/utils'; +import { + isSecondaryPicukupAddressComplete, + isSecondaryDeliveryAddressComplete, + isDeliveryAddressComplete, +} from 'shared/utils'; const ShipmentForm = (props) => { const { @@ -358,13 +362,6 @@ const ShipmentForm = (props) => { : generatePath(servicesCounselingRoutes.BASE_ORDERS_EDIT_PATH, { moveCode }); const submitMTOShipment = (formValues, actions) => { - const preceedingAddressError = checkPreceedingAddress(formValues); - if (preceedingAddressError !== '') { - actions.setFieldError(preceedingAddressError, 'Address required'); - actions.setSubmitting(false); - return; - } - //* PPM Shipment *// if (isPPM) { const ppmShipmentBody = formatPpmShipmentForAPI(formValues); @@ -777,7 +774,6 @@ const ShipmentForm = (props) => { onErrorHandler, ); }; - return ( <> { value="true" title="Yes, I have a third pickup address" checked={hasTertiaryPickup === 'true'} + disabled={ + !isSecondaryPicukupAddressComplete( + hasSecondaryPickup, + values.secondaryPickup.address, + ) + } /> { value="false" title="No, I do not have a third pickup address" checked={hasTertiaryPickup !== 'true'} + disabled={ + !isSecondaryPicukupAddressComplete( + hasSecondaryPickup, + values.secondaryPickup.address, + ) + } /> @@ -1123,6 +1131,7 @@ const ShipmentForm = (props) => { value="yes" title="Yes, I have a second destination location" checked={hasSecondaryDelivery === 'yes'} + disabled={!isDeliveryAddressComplete('yes', values.delivery.address)} /> { value="no" title="No, I do not have a second destination location" checked={hasSecondaryDelivery !== 'yes'} + disabled={!isDeliveryAddressComplete('yes', values.delivery.address)} /> @@ -1158,6 +1168,12 @@ const ShipmentForm = (props) => { value="yes" title="Yes, I have a third delivery address" checked={hasTertiaryDelivery === 'yes'} + disabled={ + !isSecondaryDeliveryAddressComplete( + hasSecondaryDelivery, + values.secondaryDelivery.address, + ) + } /> { value="no" title="No, I do not have a third delivery address" checked={hasTertiaryDelivery !== 'yes'} + disabled={ + !isSecondaryDeliveryAddressComplete( + hasSecondaryDelivery, + values.secondaryDelivery.address, + ) + } /> @@ -1280,6 +1302,9 @@ const ShipmentForm = (props) => { value="yes" title="Yes, I have a second destination location" checked={hasSecondaryDelivery === 'yes'} + disabled={ + !isDeliveryAddressComplete(hasDeliveryAddress, values.delivery.address) + } /> { value="no" title="No, I do not have a second destination location" checked={hasSecondaryDelivery !== 'yes'} + disabled={ + !isDeliveryAddressComplete(hasDeliveryAddress, values.delivery.address) + } /> @@ -1317,6 +1345,12 @@ const ShipmentForm = (props) => { value="yes" title="Yes, I have a third delivery address" checked={hasTertiaryDelivery === 'yes'} + disabled={ + !isSecondaryDeliveryAddressComplete( + hasSecondaryDelivery, + values.secondaryDelivery.address, + ) + } /> { value="no" title="No, I do not have a third delivery address" checked={hasTertiaryDelivery !== 'yes'} + disabled={ + !isSecondaryDeliveryAddressComplete( + hasSecondaryDelivery, + values.secondaryDelivery.address, + ) + } /> @@ -1494,6 +1534,12 @@ const ShipmentForm = (props) => { value="true" title="Yes, there is a third pickup address" checked={hasTertiaryPickup === 'true'} + disabled={ + !isSecondaryPicukupAddressComplete( + hasSecondaryPickup, + values.secondaryPickup.address, + ) + } /> { value="false" title="No, there is not a third pickup address" checked={hasTertiaryPickup !== 'true'} + disabled={ + !isSecondaryPicukupAddressComplete( + hasSecondaryPickup, + values.secondaryPickup.address, + ) + } /> @@ -1584,6 +1636,12 @@ const ShipmentForm = (props) => { value="true" title="Yes, I have a third delivery address" checked={hasTertiaryDestination === 'true'} + disabled={ + !isSecondaryDeliveryAddressComplete( + hasSecondaryDestination, + values.secondaryDestination.address, + ) + } /> { value="false" title="No, I do not have a third delivery address" checked={hasTertiaryDestination !== 'true'} + disabled={ + !isSecondaryDeliveryAddressComplete( + hasSecondaryDestination, + values.secondaryDestination.address, + ) + } /> diff --git a/src/shared/utils.js b/src/shared/utils.js index 13720d91ef0..6d788474779 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -228,3 +228,42 @@ export function checkPreceedingAddress(formValues) { } return formError; } + +export function isSecondaryPicukupAddressComplete(hasSecondaryPickup, addressValues) { + if ( + (hasSecondaryPickup === 'yes' || hasSecondaryPickup === 'true') && + addressValues.streetAddress1 !== '' && + addressValues.state !== '' && + addressValues.city !== '' && + addressValues.postalCode !== '' + ) { + return true; + } + return false; +} + +export function isSecondaryDeliveryAddressComplete(hasSecondaryDelivery, addressValues) { + if ( + (hasSecondaryDelivery === 'yes' || hasSecondaryDelivery === 'true') && + addressValues.streetAddress1 !== '' && + addressValues.state !== '' && + addressValues.city !== '' && + addressValues.postalCode !== '' + ) { + return true; + } + return false; +} + +export function isDeliveryAddressComplete(hasDeliveryAddress, addressValues) { + if ( + hasDeliveryAddress === 'yes' && + addressValues.streetAddress1 !== '' && + addressValues.state !== '' && + addressValues.city !== '' && + addressValues.postalCode !== '' + ) { + return true; + } + return false; +} From 963e6fce2d52d1bc1d9830e1ff46123227125781 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Fri, 7 Feb 2025 22:28:40 +0000 Subject: [PATCH 08/19] Preceeding address checks for non required address --- .../MtoShipmentForm/MtoShipmentForm.jsx | 107 ++++++++++------- .../DateAndLocationForm.jsx | 25 ++++ .../Office/ShipmentForm/ShipmentForm.jsx | 113 +++++++++--------- src/shared/utils.js | 21 +--- src/utils/formatMtoShipment.js | 20 ++-- src/utils/formatMtoShipment.test.js | 26 ++-- 6 files changed, 178 insertions(+), 134 deletions(-) diff --git a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx index e1fb7f72263..b70c2a6cfff 100644 --- a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx +++ b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx @@ -51,6 +51,7 @@ import withRouter from 'utils/routing'; import { ORDERS_TYPE } from 'constants/orders'; import { isBooleanFlagEnabled } from 'utils/featureFlags'; import { dateSelectionWeekendHolidayCheck } from 'utils/calendar'; +import { isPreceedingAddressComplete } from 'shared/utils'; const blankAddress = { address: { @@ -105,7 +106,7 @@ class MtoShipmentForm extends Component { const { moveId } = params; const isNTSR = shipmentType === SHIPMENT_OPTIONS.NTSR; - const saveDeliveryAddress = hasDeliveryAddress === 'yes' || isNTSR; + const saveDeliveryAddress = hasDeliveryAddress === 'true' || isNTSR; const preformattedMtoShipment = { shipmentType, @@ -116,14 +117,14 @@ class MtoShipmentForm extends Component { ...delivery, address: saveDeliveryAddress ? delivery.address : undefined, }, - hasSecondaryPickup: hasSecondaryPickup === 'yes', - secondaryPickup: hasSecondaryPickup === 'yes' ? secondaryPickup : {}, - hasSecondaryDelivery: hasSecondaryDelivery === 'yes', - secondaryDelivery: hasSecondaryDelivery === 'yes' ? secondaryDelivery : {}, - hasTertiaryPickup: hasTertiaryPickup === 'yes', - tertiaryPickup: hasTertiaryPickup === 'yes' ? tertiaryPickup : {}, - hasTertiaryDelivery: hasTertiaryDelivery === 'yes', - tertiaryDelivery: hasTertiaryDelivery === 'yes' ? tertiaryDelivery : {}, + hasSecondaryPickup: hasSecondaryPickup === 'true', + secondaryPickup: hasSecondaryPickup === 'true' ? secondaryPickup : {}, + hasSecondaryDelivery: hasSecondaryDelivery === 'true', + secondaryDelivery: hasSecondaryDelivery === 'true' ? secondaryDelivery : {}, + hasTertiaryPickup: hasTertiaryPickup === 'true', + tertiaryPickup: hasTertiaryPickup === 'true' ? tertiaryPickup : {}, + hasTertiaryDelivery: hasTertiaryDelivery === 'true', + tertiaryDelivery: hasTertiaryDelivery === 'true' ? tertiaryDelivery : {}, }; const pendingMtoShipment = formatMtoShipmentForAPI(preformattedMtoShipment); @@ -377,9 +378,9 @@ class MtoShipmentForm extends Component { data-testid="has-secondary-pickup" label="Yes" name="hasSecondaryPickup" - value="yes" + value="true" title="Yes, I have a second pickup address" - checked={hasSecondaryPickup === 'yes'} + checked={hasSecondaryPickup === 'true'} /> - {hasSecondaryPickup === 'yes' && ( + {hasSecondaryPickup === 'true' && ( )} - {isTertiaryAddressEnabled && hasSecondaryPickup === 'yes' && ( + {isTertiaryAddressEnabled && hasSecondaryPickup === 'true' && (

Do you want movers to pick up any belongings from a third address?

@@ -412,9 +413,15 @@ class MtoShipmentForm extends Component { data-testid="has-tertiary-pickup" label="Yes" name="hasTertiaryPickup" - value="yes" + value="true" title="Yes, I have a third pickup address" - checked={hasTertiaryPickup === 'yes'} + checked={hasTertiaryPickup === 'true'} + disabled={ + !isPreceedingAddressComplete( + hasSecondaryPickup, + values.secondaryPickup.address, + ) + } />
)} {isTertiaryAddressEnabled && - hasTertiaryPickup === 'yes' && - hasSecondaryPickup === 'yes' && ( + hasTertiaryPickup === 'true' && + hasSecondaryPickup === 'true' && ( <>

Third Pickup Address

)} - {(hasDeliveryAddress === 'yes' || isNTSR) && ( + {(hasDeliveryAddress === 'true' || isNTSR) && ( - {hasSecondaryDelivery === 'yes' && ( + {hasSecondaryDelivery === 'true' && ( )} - {isTertiaryAddressEnabled && hasSecondaryDelivery === 'yes' && ( + {isTertiaryAddressEnabled && hasSecondaryDelivery === 'true' && (

Do you want movers to deliver any belongings to a third address?

@@ -567,9 +582,15 @@ class MtoShipmentForm extends Component { data-testid="has-tertiary-delivery" label="Yes" name="hasTertiaryDelivery" - value="yes" + value="true" title="Yes, I have a third delivery address" - checked={hasTertiaryDelivery === 'yes'} + checked={hasTertiaryDelivery === 'true'} + disabled={ + !isPreceedingAddressComplete( + hasSecondaryDelivery, + values.secondaryDelivery.address, + ) + } />
)} {isTertiaryAddressEnabled && - hasTertiaryDelivery === 'yes' && - hasSecondaryDelivery === 'yes' && ( + hasTertiaryDelivery === 'true' && + hasSecondaryDelivery === 'true' && ( <>

Third Delivery Address

)} - {hasDeliveryAddress === 'no' && !isRetireeSeparatee && !isNTSR && ( + {hasDeliveryAddress === 'false' && !isRetireeSeparatee && !isNTSR && (

We can use the zip of your new duty location.
@@ -614,7 +641,7 @@ class MtoShipmentForm extends Component { You can add the specific delivery address later, once you know it.

)} - {hasDeliveryAddress === 'no' && isRetireeSeparatee && !isNTSR && ( + {hasDeliveryAddress === 'false' && isRetireeSeparatee && !isNTSR && (

We can use the zip of the HOR, PLEAD or HOS you entered with your orders.
diff --git a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx index ca158d027cd..f4df895c05a 100644 --- a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx +++ b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx @@ -21,6 +21,7 @@ import { OptionalAddressSchema } from 'components/Customer/MtoShipmentForm/valid import { requiredAddressSchema, partialRequiredAddressSchema } from 'utils/validation'; import { isBooleanFlagEnabled } from 'utils/featureFlags'; import RequiredTag from 'components/form/RequiredTag'; +import { isSecondaryAddressCompletePPM } from 'shared/utils'; let meta = ''; @@ -276,6 +277,12 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb value="true" title="Yes, I have a third delivery address" checked={values.hasTertiaryPickupAddress === 'true'} + disabled={ + !isSecondaryAddressCompletePPM( + values.hasSecondaryPickupAddress, + values.secondaryPickupAddress.address, + ) + } /> @@ -390,6 +403,12 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb value="true" title="Yes, I have a third delivery address" checked={values.hasTertiaryDestinationAddress === 'true'} + disabled={ + !isSecondaryAddressCompletePPM( + values.hasSecondaryDestinationAddress, + values.secondaryDestinationAddress.address, + ) + } /> diff --git a/src/components/Office/ShipmentForm/ShipmentForm.jsx b/src/components/Office/ShipmentForm/ShipmentForm.jsx index 6a627eea98a..dd7480ead49 100644 --- a/src/components/Office/ShipmentForm/ShipmentForm.jsx +++ b/src/components/Office/ShipmentForm/ShipmentForm.jsx @@ -70,11 +70,7 @@ import { validateDate } from 'utils/validation'; import { isBooleanFlagEnabled } from 'utils/featureFlags'; import { dateSelectionWeekendHolidayCheck } from 'utils/calendar'; import { datePickerFormat, formatDate } from 'shared/dates'; -import { - isSecondaryPicukupAddressComplete, - isSecondaryDeliveryAddressComplete, - isDeliveryAddressComplete, -} from 'shared/utils'; +import { isPreceedingAddressComplete } from 'shared/utils'; const ShipmentForm = (props) => { const { @@ -565,14 +561,14 @@ const ShipmentForm = (props) => { storageFacility, usesExternalVendor, destinationType, - hasSecondaryPickup: hasSecondaryPickup === 'yes', - secondaryPickup: hasSecondaryPickup === 'yes' ? secondaryPickup : {}, - hasSecondaryDelivery: hasSecondaryDelivery === 'yes', - secondaryDelivery: hasSecondaryDelivery === 'yes' ? secondaryDelivery : {}, + hasSecondaryPickup: hasSecondaryPickup === 'true', + secondaryPickup: hasSecondaryPickup === 'true' ? secondaryPickup : {}, + hasSecondaryDelivery: hasSecondaryDelivery === 'true', + secondaryDelivery: hasSecondaryDelivery === 'true' ? secondaryDelivery : {}, hasTertiaryPickup: hasTertiaryPickup === 'true', tertiaryPickup: hasTertiaryPickup === 'true' ? tertiaryPickup : {}, - hasTertiaryDelivery: hasTertiaryDelivery === 'yes', - tertiaryDelivery: hasTertiaryDelivery === 'yes' ? tertiaryDelivery : {}, + hasTertiaryDelivery: hasTertiaryDelivery === 'true', + tertiaryDelivery: hasTertiaryDelivery === 'true' ? tertiaryDelivery : {}, }); // Mobile Home Shipment @@ -774,6 +770,7 @@ const ShipmentForm = (props) => { onErrorHandler, ); }; + return ( <> { if (status === ADDRESS_UPDATE_STATUS.APPROVED) { setValues({ ...values, - hasDeliveryAddress: 'yes', + hasDeliveryAddress: 'true', delivery: { ...values.delivery, address: mtoShipment.deliveryAddressUpdate.newAddress, @@ -965,9 +962,9 @@ const ShipmentForm = (props) => { data-testid="has-secondary-pickup" label="Yes" name="hasSecondaryPickup" - value="yes" + value="true" title="Yes, I have a second pickup address" - checked={hasSecondaryPickup === 'yes'} + checked={hasSecondaryPickup === 'true'} /> { data-testid="no-secondary-pickup" label="No" name="hasSecondaryPickup" - value="no" + value="false" title="No, I do not have a second pickup address" - checked={hasSecondaryPickup !== 'yes'} + checked={hasSecondaryPickup !== 'true'} /> - {hasSecondaryPickup === 'yes' && ( + {hasSecondaryPickup === 'true' && ( <> { title="Yes, I have a third pickup address" checked={hasTertiaryPickup === 'true'} disabled={ - !isSecondaryPicukupAddressComplete( + !isPreceedingAddressComplete( hasSecondaryPickup, values.secondaryPickup.address, ) @@ -1020,7 +1017,7 @@ const ShipmentForm = (props) => { title="No, I do not have a third pickup address" checked={hasTertiaryPickup !== 'true'} disabled={ - !isSecondaryPicukupAddressComplete( + !isPreceedingAddressComplete( hasSecondaryPickup, values.secondaryPickup.address, ) @@ -1128,10 +1125,10 @@ const ShipmentForm = (props) => { id="has-secondary-delivery" label="Yes" name="hasSecondaryDelivery" - value="yes" + value="true" title="Yes, I have a second destination location" - checked={hasSecondaryDelivery === 'yes'} - disabled={!isDeliveryAddressComplete('yes', values.delivery.address)} + checked={hasSecondaryDelivery === 'true'} + disabled={!isPreceedingAddressComplete('true', values.delivery.address)} /> { id="no-secondary-delivery" label="No" name="hasSecondaryDelivery" - value="no" + value="false" title="No, I do not have a second destination location" - checked={hasSecondaryDelivery !== 'yes'} - disabled={!isDeliveryAddressComplete('yes', values.delivery.address)} + checked={hasSecondaryDelivery !== 'true'} + disabled={!isPreceedingAddressComplete('true', values.delivery.address)} /> - {hasSecondaryDelivery === 'yes' && ( + {hasSecondaryDelivery === 'true' && ( <> { data-testid="has-tertiary-delivery" label="Yes" name="hasTertiaryDelivery" - value="yes" + value="true" title="Yes, I have a third delivery address" - checked={hasTertiaryDelivery === 'yes'} + checked={hasTertiaryDelivery === 'true'} disabled={ - !isSecondaryDeliveryAddressComplete( + !isPreceedingAddressComplete( hasSecondaryDelivery, values.secondaryDelivery.address, ) @@ -1181,11 +1178,11 @@ const ShipmentForm = (props) => { data-testid="no-tertiary-delivery" label="No" name="hasTertiaryDelivery" - value="no" + value="false" title="No, I do not have a third delivery address" - checked={hasTertiaryDelivery !== 'yes'} + checked={hasTertiaryDelivery !== 'true'} disabled={ - !isSecondaryDeliveryAddressComplete( + !isPreceedingAddressComplete( hasSecondaryDelivery, values.secondaryDelivery.address, ) @@ -1193,7 +1190,7 @@ const ShipmentForm = (props) => { /> - {hasTertiaryDelivery === 'yes' && ( + {hasTertiaryDelivery === 'true' && ( { id="has-delivery-address" label="Yes" name="hasDeliveryAddress" - value="yes" + value="true" title="Yes, I know my delivery address" - checked={hasDeliveryAddress === 'yes'} + checked={hasDeliveryAddress === 'true'} /> - {hasDeliveryAddress === 'yes' ? ( + {hasDeliveryAddress === 'true' ? ( { id="has-secondary-delivery" label="Yes" name="hasSecondaryDelivery" - value="yes" + value="true" title="Yes, I have a second destination location" - checked={hasSecondaryDelivery === 'yes'} + checked={hasSecondaryDelivery === 'true'} disabled={ - !isDeliveryAddressComplete(hasDeliveryAddress, values.delivery.address) + !isPreceedingAddressComplete(hasDeliveryAddress, values.delivery.address) } /> { id="no-secondary-delivery" label="No" name="hasSecondaryDelivery" - value="no" + value="false" title="No, I do not have a second destination location" - checked={hasSecondaryDelivery !== 'yes'} + checked={hasSecondaryDelivery !== 'true'} disabled={ - !isDeliveryAddressComplete(hasDeliveryAddress, values.delivery.address) + !isPreceedingAddressComplete(hasDeliveryAddress, values.delivery.address) } /> - {hasSecondaryDelivery === 'yes' && ( + {hasSecondaryDelivery === 'true' && ( <> { data-testid="has-tertiary-delivery" label="Yes" name="hasTertiaryDelivery" - value="yes" + value="true" title="Yes, I have a third delivery address" - checked={hasTertiaryDelivery === 'yes'} + checked={hasTertiaryDelivery === 'true'} disabled={ - !isSecondaryDeliveryAddressComplete( + !isPreceedingAddressComplete( hasSecondaryDelivery, values.secondaryDelivery.address, ) @@ -1358,11 +1355,11 @@ const ShipmentForm = (props) => { data-testid="no-tertiary-delivery" label="No" name="hasTertiaryDelivery" - value="no" + value="false" title="No, I do not have a third delivery address" - checked={hasTertiaryDelivery !== 'yes'} + checked={hasTertiaryDelivery !== 'true'} disabled={ - !isSecondaryDeliveryAddressComplete( + !isPreceedingAddressComplete( hasSecondaryDelivery, values.secondaryDelivery.address, ) @@ -1370,7 +1367,7 @@ const ShipmentForm = (props) => { /> - {hasTertiaryDelivery === 'yes' && ( + {hasTertiaryDelivery === 'true' && ( { value="true" title="Yes, there is a second pickup address" checked={hasSecondaryPickup === 'true'} + disabled={!isPreceedingAddressComplete('true', values.pickup.address)} /> { value="false" title="No, there is not a second pickup address" checked={hasSecondaryPickup !== 'true'} + disabled={!isPreceedingAddressComplete('true', values.pickup.address)} /> @@ -1535,7 +1534,7 @@ const ShipmentForm = (props) => { title="Yes, there is a third pickup address" checked={hasTertiaryPickup === 'true'} disabled={ - !isSecondaryPicukupAddressComplete( + !isPreceedingAddressComplete( hasSecondaryPickup, values.secondaryPickup.address, ) @@ -1551,7 +1550,7 @@ const ShipmentForm = (props) => { title="No, there is not a third pickup address" checked={hasTertiaryPickup !== 'true'} disabled={ - !isSecondaryPicukupAddressComplete( + !isPreceedingAddressComplete( hasSecondaryPickup, values.secondaryPickup.address, ) @@ -1598,6 +1597,7 @@ const ShipmentForm = (props) => { value="true" title="Yes, there is a second destination location" checked={hasSecondaryDestination === 'true'} + disabled={!isPreceedingAddressComplete('true', values.destination.address)} /> { value="false" title="No, there is not a second destination location" checked={hasSecondaryDestination !== 'true'} + disabled={!isPreceedingAddressComplete('true', values.destination.address)} /> @@ -1637,7 +1638,7 @@ const ShipmentForm = (props) => { title="Yes, I have a third delivery address" checked={hasTertiaryDestination === 'true'} disabled={ - !isSecondaryDeliveryAddressComplete( + !isPreceedingAddressComplete( hasSecondaryDestination, values.secondaryDestination.address, ) @@ -1653,7 +1654,7 @@ const ShipmentForm = (props) => { title="No, I do not have a third delivery address" checked={hasTertiaryDestination !== 'true'} disabled={ - !isSecondaryDeliveryAddressComplete( + !isPreceedingAddressComplete( hasSecondaryDestination, values.secondaryDestination.address, ) diff --git a/src/shared/utils.js b/src/shared/utils.js index 6d788474779..779e1e65c8c 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -229,9 +229,9 @@ export function checkPreceedingAddress(formValues) { return formError; } -export function isSecondaryPicukupAddressComplete(hasSecondaryPickup, addressValues) { +export function isPreceedingAddressComplete(hasDeliveryAddress, addressValues) { if ( - (hasSecondaryPickup === 'yes' || hasSecondaryPickup === 'true') && + hasDeliveryAddress === 'true' && addressValues.streetAddress1 !== '' && addressValues.state !== '' && addressValues.city !== '' && @@ -242,22 +242,13 @@ export function isSecondaryPicukupAddressComplete(hasSecondaryPickup, addressVal return false; } -export function isSecondaryDeliveryAddressComplete(hasSecondaryDelivery, addressValues) { - if ( - (hasSecondaryDelivery === 'yes' || hasSecondaryDelivery === 'true') && - addressValues.streetAddress1 !== '' && - addressValues.state !== '' && - addressValues.city !== '' && - addressValues.postalCode !== '' - ) { - return true; +export function isSecondaryAddressCompletePPM(hasSecondaryDelivery, addressValues) { + if (addressValues === undefined || addressValues.postalCode === undefined) { + return false; } - return false; -} -export function isDeliveryAddressComplete(hasDeliveryAddress, addressValues) { if ( - hasDeliveryAddress === 'yes' && + hasSecondaryDelivery === 'true' && addressValues.streetAddress1 !== '' && addressValues.state !== '' && addressValues.city !== '' && diff --git a/src/utils/formatMtoShipment.js b/src/utils/formatMtoShipment.js index 6a0c6a7e7dc..9543a4f4bab 100644 --- a/src/utils/formatMtoShipment.js +++ b/src/utils/formatMtoShipment.js @@ -205,11 +205,11 @@ export function formatMtoShipmentForDisplay({ tertiaryDelivery: { address: { ...emptyAddressShape }, }, - hasDeliveryAddress: 'no', - hasSecondaryPickup: 'no', - hasSecondaryDelivery: 'no', - hasTertiaryPickup: 'no', - hasTertiaryDelivery: 'no', + hasDeliveryAddress: 'false', + hasSecondaryPickup: 'false', + hasSecondaryDelivery: 'false', + hasTertiaryPickup: 'false', + hasTertiaryDelivery: 'false', ntsRecordedWeight, tacType, sacType, @@ -245,16 +245,16 @@ export function formatMtoShipmentForDisplay({ if (secondaryPickupAddress) { displayValues.secondaryPickup.address = { ...emptyAddressShape, ...secondaryPickupAddress }; - displayValues.hasSecondaryPickup = 'yes'; + displayValues.hasSecondaryPickup = 'true'; } if (tertiaryPickupAddress) { displayValues.tertiaryPickup.address = { ...emptyAddressShape, ...tertiaryPickupAddress }; - displayValues.hasTertiaryPickup = 'yes'; + displayValues.hasTertiaryPickup = 'true'; } if (destinationAddress) { displayValues.delivery.address = { ...emptyAddressShape, ...destinationAddress }; - if (destinationAddress.streetAddress1 !== 'N/A') displayValues.hasDeliveryAddress = 'yes'; + if (destinationAddress.streetAddress1 !== 'N/A') displayValues.hasDeliveryAddress = 'true'; } if (destinationType) { @@ -263,11 +263,11 @@ export function formatMtoShipmentForDisplay({ if (secondaryDeliveryAddress) { displayValues.secondaryDelivery.address = { ...emptyAddressShape, ...secondaryDeliveryAddress }; - displayValues.hasSecondaryDelivery = 'yes'; + displayValues.hasSecondaryDelivery = 'true'; } if (tertiaryDeliveryAddress) { displayValues.tertiaryDelivery.address = { ...emptyAddressShape, ...tertiaryDeliveryAddress }; - displayValues.hasTertiaryDelivery = 'yes'; + displayValues.hasTertiaryDelivery = 'true'; } if (requestedDeliveryDate) { diff --git a/src/utils/formatMtoShipment.test.js b/src/utils/formatMtoShipment.test.js index 172204a3d8e..838db1a4101 100644 --- a/src/utils/formatMtoShipment.test.js +++ b/src/utils/formatMtoShipment.test.js @@ -131,19 +131,19 @@ describe('formatMtoShipmentForDisplay', () => { expect(displayValues.delivery.requestedDate.toDateString()).toBe('Tue Jan 27 2026'); checkAddressesAreEqual(displayValues.delivery.address, emptyAddressShape); checkAgentsAreEqual(displayValues.delivery.agent, emptyAgentShape); - expect(displayValues.hasDeliveryAddress).toBe('no'); + expect(displayValues.hasDeliveryAddress).toBe('false'); checkAddressesAreEqual(displayValues.secondaryPickup.address, emptyAddressShape); - expect(displayValues.hasSecondaryPickup).toBe('no'); + expect(displayValues.hasSecondaryPickup).toBe('false'); checkAddressesAreEqual(displayValues.secondaryDelivery.address, emptyAddressShape); - expect(displayValues.hasSecondaryDelivery).toBe('no'); + expect(displayValues.hasSecondaryDelivery).toBe('false'); checkAddressesAreEqual(displayValues.tertiaryPickup.address, emptyAddressShape); - expect(displayValues.hasTertiaryPickup).toBe('no'); + expect(displayValues.hasTertiaryPickup).toBe('false'); checkAddressesAreEqual(displayValues.tertiaryDelivery.address, emptyAddressShape); - expect(displayValues.hasTertiaryDelivery).toBe('no'); + expect(displayValues.hasTertiaryDelivery).toBe('false'); expect(displayValues.agents).toBeUndefined(); }, @@ -192,15 +192,15 @@ describe('formatMtoShipmentForDisplay', () => { const expectedDeliveryAddress = { ...emptyAddressShape, ...destinationAddress }; checkAddressesAreEqual(displayValues.delivery.address, expectedDeliveryAddress); - expect(displayValues.hasDeliveryAddress).toBe('yes'); + expect(displayValues.hasDeliveryAddress).toBe('true'); const expectedSecondaryPickupAddress = { ...emptyAddressShape, ...secondaryPickupAddress }; checkAddressesAreEqual(displayValues.secondaryPickup.address, expectedSecondaryPickupAddress); - expect(displayValues.hasSecondaryPickup).toBe('yes'); + expect(displayValues.hasSecondaryPickup).toBe('true'); const expectedSecondaryDeliveryAddress = { ...emptyAddressShape, ...secondaryDeliveryAddress }; checkAddressesAreEqual(displayValues.secondaryDelivery.address, expectedSecondaryDeliveryAddress); - expect(displayValues.hasSecondaryDelivery).toBe('yes'); + expect(displayValues.hasSecondaryDelivery).toBe('true'); }); it('can format a shipment with a primary, secondary, and tertiary pickup and destination', () => { @@ -218,23 +218,23 @@ describe('formatMtoShipmentForDisplay', () => { const expectedDeliveryAddress = { ...emptyAddressShape, ...destinationAddress }; checkAddressesAreEqual(displayValues.delivery.address, expectedDeliveryAddress); - expect(displayValues.hasDeliveryAddress).toBe('yes'); + expect(displayValues.hasDeliveryAddress).toBe('true'); const expectedSecondaryPickupAddress = { ...emptyAddressShape, ...secondaryPickupAddress }; checkAddressesAreEqual(displayValues.secondaryPickup.address, expectedSecondaryPickupAddress); - expect(displayValues.hasSecondaryPickup).toBe('yes'); + expect(displayValues.hasSecondaryPickup).toBe('true'); const expectedSecondaryDeliveryAddress = { ...emptyAddressShape, ...secondaryDeliveryAddress }; checkAddressesAreEqual(displayValues.secondaryDelivery.address, expectedSecondaryDeliveryAddress); - expect(displayValues.hasSecondaryDelivery).toBe('yes'); + expect(displayValues.hasSecondaryDelivery).toBe('true'); const expectedTertiaryPickupAddress = { ...emptyAddressShape, ...tertiaryPickupAddress }; checkAddressesAreEqual(displayValues.tertiaryPickup.address, expectedTertiaryPickupAddress); - expect(displayValues.hasTertiaryPickup).toBe('yes'); + expect(displayValues.hasTertiaryPickup).toBe('true'); const expectedTertiaryDeliveryAddress = { ...emptyAddressShape, ...tertiaryDeliveryAddress }; checkAddressesAreEqual(displayValues.tertiaryDelivery.address, expectedTertiaryDeliveryAddress); - expect(displayValues.hasTertiaryDelivery).toBe('yes'); + expect(displayValues.hasTertiaryDelivery).toBe('false'); }); it('can format a shipment with lines of accounting', () => { From d26fcf80b4955ae2a45739b365a535dc3d7e154c Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Mon, 10 Feb 2025 16:28:29 +0000 Subject: [PATCH 09/19] fixed test cases --- .../MtoShipmentForm/MtoShipmentForm.test.jsx | 20 +++++++++---------- src/utils/formatMtoShipment.test.js | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx index 424bbe04d55..4205d3e9155 100644 --- a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx +++ b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx @@ -388,24 +388,24 @@ describe('MtoShipmentForm component', () => { await userEvent.click(screen.getByTitle('Yes, I have a second delivery address')); const streetAddress1 = await screen.findAllByLabelText(/Address 1/); - expect(streetAddress1.length).toBe(3); - expect(streetAddress1[2]).toHaveAttribute('name', 'secondaryDelivery.address.streetAddress1'); + expect(streetAddress1[0]).toHaveAttribute('name', 'pickup.address.streetAddress1'); + expect(streetAddress1[1]).toHaveAttribute('name', 'delivery.address.streetAddress1'); const streetAddress2 = await screen.findAllByLabelText(/Address 2/); - expect(streetAddress2.length).toBe(3); - expect(streetAddress2[2]).toHaveAttribute('name', 'secondaryDelivery.address.streetAddress2'); + expect(streetAddress2[0]).toHaveAttribute('name', 'pickup.address.streetAddress2'); + expect(streetAddress2[1]).toHaveAttribute('name', 'delivery.address.streetAddress2'); const city = screen.getAllByTestId('City'); - expect(city.length).toBe(3); - expect(city[2]).toHaveAttribute('aria-label', 'secondaryDelivery.address.city'); + expect(city[0]).toHaveAttribute('aria-label', 'pickup.address.city'); + expect(city[1]).toHaveAttribute('aria-label', 'delivery.address.city'); const state = await screen.getAllByTestId(/State/); - expect(state.length).toBe(3); - expect(state[2]).toHaveAttribute('aria-label', 'secondaryDelivery.address.state'); + expect(state[0]).toHaveAttribute('aria-label', 'pickup.address.state'); + expect(state[1]).toHaveAttribute('aria-label', 'delivery.address.state'); const zip = await screen.getAllByTestId(/ZIP/); - expect(zip.length).toBe(3); - expect(zip[2]).toHaveAttribute('aria-label', 'secondaryDelivery.address.postalCode'); + expect(zip[0]).toHaveAttribute('aria-label', 'pickup.address.postalCode'); + expect(zip[1]).toHaveAttribute('aria-label', 'delivery.address.postalCode'); }); it('goes back when the back button is clicked', async () => { diff --git a/src/utils/formatMtoShipment.test.js b/src/utils/formatMtoShipment.test.js index 838db1a4101..67291b5f196 100644 --- a/src/utils/formatMtoShipment.test.js +++ b/src/utils/formatMtoShipment.test.js @@ -234,7 +234,7 @@ describe('formatMtoShipmentForDisplay', () => { const expectedTertiaryDeliveryAddress = { ...emptyAddressShape, ...tertiaryDeliveryAddress }; checkAddressesAreEqual(displayValues.tertiaryDelivery.address, expectedTertiaryDeliveryAddress); - expect(displayValues.hasTertiaryDelivery).toBe('false'); + expect(displayValues.hasTertiaryDelivery).toBe('true'); }); it('can format a shipment with lines of accounting', () => { From 3aa359040a0c72898a5e43fb973bcf2baf589b14 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Mon, 10 Feb 2025 19:19:50 +0000 Subject: [PATCH 10/19] remove old test --- src/shared/utils.js | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/shared/utils.js b/src/shared/utils.js index 779e1e65c8c..96885765a14 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -210,25 +210,6 @@ export function checkAddressTogglesToClearAddresses(body) { return values; } -export function checkPreceedingAddress(formValues) { - const values = formValues; - let formError = ''; - - if (values.hasSecondaryDelivery === 'yes' && values.delivery.address.streetAddress1 === '') { - formError = 'delivery.address.streetAddress1'; - } - if (values.hasTertiaryPickup === 'true' && values.secondaryPickup.address.streetAddress1 === '') { - formError = 'secondaryPickup.address.streetAddress1'; - } - if (values.hasTertiaryDelivery === 'yes' && values.secondaryDelivery.address.streetAddress1 === '') { - formError = 'secondaryDelivery.address.streetAddress1'; - } - if (values.hasTertiaryDestination === 'true' && values.secondaryDestination.address.streetAddress1 === '') { - formError = 'secondaryDestination.address.streetAddress1'; - } - return formError; -} - export function isPreceedingAddressComplete(hasDeliveryAddress, addressValues) { if ( hasDeliveryAddress === 'true' && From e25ccab0c96a101dfef1ee0baa4d145962a26d6f Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Mon, 10 Feb 2025 23:11:08 +0000 Subject: [PATCH 11/19] Secondary pickup disabeld --- src/components/Office/ShipmentForm/ShipmentForm.jsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/components/Office/ShipmentForm/ShipmentForm.jsx b/src/components/Office/ShipmentForm/ShipmentForm.jsx index dd7480ead49..03e7d006b65 100644 --- a/src/components/Office/ShipmentForm/ShipmentForm.jsx +++ b/src/components/Office/ShipmentForm/ShipmentForm.jsx @@ -965,6 +965,7 @@ const ShipmentForm = (props) => { value="true" title="Yes, I have a second pickup address" checked={hasSecondaryPickup === 'true'} + disabled={!isPreceedingAddressComplete('true', values.pickup.address)} /> { value="false" title="No, I do not have a second pickup address" checked={hasSecondaryPickup !== 'true'} + disabled={!isPreceedingAddressComplete('true', values.pickup.address)} /> From 7819f9e6453869f17f3e3e7add64e17790b6b5fd Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Fri, 14 Feb 2025 17:13:13 +0000 Subject: [PATCH 12/19] customer sides second pickup/delivery buttons --- src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx | 2 ++ .../PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx index b70c2a6cfff..9fc7eaf454a 100644 --- a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx +++ b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.jsx @@ -381,6 +381,7 @@ class MtoShipmentForm extends Component { value="true" title="Yes, I have a second pickup address" checked={hasSecondaryPickup === 'true'} + disabled={!isPreceedingAddressComplete('true', values.pickup.address)} /> diff --git a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx index f4df895c05a..fe36c389eb7 100644 --- a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx +++ b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx @@ -229,6 +229,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb name="hasSecondaryPickupAddress" value="true" checked={values.hasSecondaryPickupAddress === 'true'} + disabled={!isSecondaryAddressCompletePPM('true', values.pickupAddress.address)} /> @@ -354,6 +356,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb name="hasSecondaryDestinationAddress" value="true" checked={values.hasSecondaryDestinationAddress === 'true'} + disabled={!isSecondaryAddressCompletePPM('true', values.destinationAddress.address)} /> From 2f444fb587e76108459001d6ee75f4711ca65b76 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Sat, 15 Feb 2025 01:17:08 +0000 Subject: [PATCH 13/19] updated test cases --- .../MtoShipmentForm/MtoShipmentForm.test.jsx | 48 ++++++++++++++----- .../DateAndLocationForm.test.jsx | 32 +++++++++---- 2 files changed, 60 insertions(+), 20 deletions(-) diff --git a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx index 4205d3e9155..3c9d42111e3 100644 --- a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx +++ b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx @@ -326,19 +326,45 @@ describe('MtoShipmentForm component', () => { await userEvent.click(screen.getByTitle('Yes, I have a second pickup address')); const streetAddress1 = await screen.findAllByLabelText(/Address 1/); - expect(streetAddress1[1]).toHaveAttribute('name', 'secondaryPickup.address.streetAddress1'); + expect(streetAddress1[0]).toHaveAttribute('name', 'pickup.address.streetAddress1'); const streetAddress2 = await screen.findAllByLabelText(/Address 2/); - expect(streetAddress2[1]).toHaveAttribute('name', 'secondaryPickup.address.streetAddress2'); + expect(streetAddress2[0]).toHaveAttribute('name', 'pickup.address.streetAddress2'); const city = screen.getAllByTestId('City'); - expect(city[1]).toHaveAttribute('aria-label', 'secondaryPickup.address.city'); + expect(city[0]).toHaveAttribute('aria-label', 'pickup.address.city'); const state = screen.getAllByTestId(/State/); - expect(state[1]).toHaveAttribute('aria-label', 'secondaryPickup.address.state'); + expect(state[0]).toHaveAttribute('aria-label', 'pickup.address.state'); const zip = screen.getAllByTestId(/ZIP/); - expect(zip[1]).toHaveAttribute('aria-label', 'secondaryPickup.address.postalCode'); + expect(zip[0]).toHaveAttribute('aria-label', 'pickup.address.postalCode'); + }); + + it('renders a second address fieldset when the user has a pickup address', async () => { + renderMtoShipmentForm(); + + await userEvent.click(screen.getByTitle('Yes, I know my delivery address')); + + const streetAddress1 = await screen.findAllByLabelText(/Address 1/); + expect(streetAddress1[0]).toHaveAttribute('name', 'pickup.address.streetAddress1'); + expect(streetAddress1[1]).toHaveAttribute('name', 'delivery.address.streetAddress1'); + + const streetAddress2 = await screen.findAllByLabelText(/Address 2/); + expect(streetAddress2[0]).toHaveAttribute('name', 'pickup.address.streetAddress2'); + expect(streetAddress2[1]).toHaveAttribute('name', 'delivery.address.streetAddress2'); + + const city = screen.getAllByTestId('City'); + expect(city[0]).toHaveAttribute('aria-label', 'pickup.address.city'); + expect(city[1]).toHaveAttribute('aria-label', 'delivery.address.city'); + + const state = screen.getAllByTestId('State'); + expect(state[0]).toHaveAttribute('aria-label', 'pickup.address.state'); + expect(state[1]).toHaveAttribute('aria-label', 'delivery.address.state'); + + const zip = screen.getAllByTestId('ZIP'); + expect(zip[0]).toHaveAttribute('aria-label', 'pickup.address.postalCode'); + expect(zip[1]).toHaveAttribute('aria-label', 'delivery.address.postalCode'); }); it('renders a second address fieldset when the user has a delivery address', async () => { @@ -1134,25 +1160,25 @@ describe('MtoShipmentForm component', () => { }); }); - it('renders a second address fieldset when the user has a second pickup address', async () => { + it('renders a second address fieldset when the user has a pickup address', async () => { renderUBShipmentForm(); await userEvent.click(screen.getByTitle('Yes, I have a second pickup address')); const streetAddress1 = await screen.findAllByLabelText(/Address 1/); - expect(streetAddress1[1]).toHaveAttribute('name', 'secondaryPickup.address.streetAddress1'); + expect(streetAddress1[0]).toHaveAttribute('name', 'pickup.address.streetAddress1'); const streetAddress2 = await screen.findAllByLabelText(/Address 2/); - expect(streetAddress2[1]).toHaveAttribute('name', 'secondaryPickup.address.streetAddress2'); + expect(streetAddress2[0]).toHaveAttribute('name', 'pickup.address.streetAddress2'); const city = screen.getAllByTestId('City'); - expect(city[1]).toHaveAttribute('aria-label', 'secondaryPickup.address.city'); + expect(city[0]).toHaveAttribute('aria-label', 'pickup.address.city'); const state = screen.getAllByTestId('State'); - expect(state[1]).toHaveAttribute('aria-label', 'secondaryPickup.address.state'); + expect(state[0]).toHaveAttribute('aria-label', 'pickup.address.state'); const zip = screen.getAllByTestId('ZIP'); - expect(zip[1]).toHaveAttribute('aria-label', 'secondaryPickup.address.postalCode'); + expect(zip[0]).toHaveAttribute('aria-label', 'pickup.address.postalCode'); }); it('renders a second address fieldset when the user has a delivery address', async () => { diff --git a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.test.jsx b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.test.jsx index fa35741a231..5f7fd941cbf 100644 --- a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.test.jsx +++ b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.test.jsx @@ -184,23 +184,37 @@ describe('DateAndLocationForm component', () => { , ); - const hasSecondaryDestinationAddress = await screen.getAllByLabelText('Yes')[1]; - await userEvent.click(hasSecondaryDestinationAddress); + await userEvent.click(screen.getByLabelText('Use my current delivery address')); + const postalCodes = screen.getAllByTestId(/ZIP/); const address1 = screen.getAllByLabelText(/Address 1/, { exact: false }); const address2 = screen.getAllByLabelText('Address 2', { exact: false }); - const address3 = screen.getAllByLabelText('Address 3', { exact: false }); const state = screen.getAllByTestId(/State/); const city = screen.getAllByTestId(/City/); + expect(address1[1]).toHaveValue(defaultProps.destinationDutyLocation.address.streetAddress1); + expect(address2[1]).toHaveValue(''); + expect(city[1]).toHaveTextContent(defaultProps.destinationDutyLocation.address.city); + expect(state[1]).toHaveTextContent(defaultProps.destinationDutyLocation.address.state); + expect(postalCodes[1]).toHaveTextContent(defaultProps.destinationDutyLocation.address.postalCode); + + const hasSecondaryDestinationAddress = await screen.getAllByLabelText('Yes')[1]; + + await userEvent.click(hasSecondaryDestinationAddress); + const secondaryPostalCodes = screen.getAllByTestId(/ZIP/); + const secondaryAddress1 = screen.getAllByLabelText(/Address 1/, { exact: false }); + const secondaryAddress2 = screen.getAllByLabelText('Address 2', { exact: false }); + const secondaryAddress3 = screen.getAllByLabelText('Address 3', { exact: false }); + const secondaryState = screen.getAllByTestId(/State/); + const secondaryCity = screen.getAllByTestId(/City/); await waitFor(() => { - expect(address1[2]).toBeInstanceOf(HTMLInputElement); - expect(address2[2]).toBeInstanceOf(HTMLInputElement); - expect(address3[2]).toBeInstanceOf(HTMLInputElement); - expect(state[2]).toBeInstanceOf(HTMLLabelElement); - expect(city[2]).toBeInstanceOf(HTMLLabelElement); - expect(postalCodes[2]).toBeInstanceOf(HTMLLabelElement); + expect(secondaryAddress1[2]).toBeInstanceOf(HTMLInputElement); + expect(secondaryAddress2[2]).toBeInstanceOf(HTMLInputElement); + expect(secondaryAddress3[2]).toBeInstanceOf(HTMLInputElement); + expect(secondaryState[2]).toBeInstanceOf(HTMLLabelElement); + expect(secondaryCity[2]).toBeInstanceOf(HTMLLabelElement); + expect(secondaryPostalCodes[2]).toBeInstanceOf(HTMLLabelElement); }); }); }); From a035e2e116737b9e285ec07f950eaeca0e19bdfb Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Mon, 17 Feb 2025 22:29:18 +0000 Subject: [PATCH 14/19] Updated third address validation on PPM shipments --- .../Booking/DateAndLocationForm/DateAndLocationForm.jsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx index fe36c389eb7..4d23d8286d0 100644 --- a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx +++ b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx @@ -46,6 +46,12 @@ let validationShape = { secondaryDestinationAddress: Yup.object().shape({ address: OptionalAddressSchema, }), + tertiaryPickupAddress: Yup.object().shape({ + address: OptionalAddressSchema, + }), + tertiaryDestinationAddress: Yup.object().shape({ + address: OptionalAddressSchema, + }), }; const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMember, move, onBack, onSubmit }) => { @@ -53,6 +59,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb useCurrentResidence: false, pickupAddress: {}, secondaryPickupAddress: {}, + tertiaryPickupAddress: {}, hasSecondaryPickupAddress: mtoShipment?.ppmShipment?.secondaryPickupAddress ? 'true' : 'false', hasTertiaryPickupAddress: mtoShipment?.ppmShipment?.tertiaryPickupAddress ? 'true' : 'false', useCurrentDestinationAddress: false, @@ -63,7 +70,6 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb sitExpected: mtoShipment?.ppmShipment?.sitExpected ? 'true' : 'false', expectedDepartureDate: mtoShipment?.ppmShipment?.expectedDepartureDate || '', closeoutOffice: move?.closeoutOffice || {}, - tertiaryPickupAddress: {}, tertiaryDestinationAddress: {}, }; From daedf662c1a627d52caa07f4aabcd0a9428f363e Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Tue, 18 Feb 2025 21:23:33 +0000 Subject: [PATCH 15/19] updated function name --- .../DateAndLocationForm.jsx | 18 +++++++++--------- src/shared/utils.js | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx index 4d23d8286d0..9343fac3d84 100644 --- a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx +++ b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx @@ -21,7 +21,7 @@ import { OptionalAddressSchema } from 'components/Customer/MtoShipmentForm/valid import { requiredAddressSchema, partialRequiredAddressSchema } from 'utils/validation'; import { isBooleanFlagEnabled } from 'utils/featureFlags'; import RequiredTag from 'components/form/RequiredTag'; -import { isSecondaryAddressCompletePPM } from 'shared/utils'; +import { isPreceedingPPMAddressComplete } from 'shared/utils'; let meta = ''; @@ -235,7 +235,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb name="hasSecondaryPickupAddress" value="true" checked={values.hasSecondaryPickupAddress === 'true'} - disabled={!isSecondaryAddressCompletePPM('true', values.pickupAddress.address)} + disabled={!isPreceedingPPMAddressComplete('true', values.pickupAddress.address)} /> @@ -286,7 +286,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb title="Yes, I have a third delivery address" checked={values.hasTertiaryPickupAddress === 'true'} disabled={ - !isSecondaryAddressCompletePPM( + !isPreceedingPPMAddressComplete( values.hasSecondaryPickupAddress, values.secondaryPickupAddress.address, ) @@ -302,7 +302,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb title="No, I do not have a third delivery address" checked={values.hasTertiaryPickupAddress === 'false'} disabled={ - !isSecondaryAddressCompletePPM( + !isPreceedingPPMAddressComplete( values.hasSecondaryPickupAddress, values.secondaryPickupAddress.address, ) @@ -362,7 +362,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb name="hasSecondaryDestinationAddress" value="true" checked={values.hasSecondaryDestinationAddress === 'true'} - disabled={!isSecondaryAddressCompletePPM('true', values.destinationAddress.address)} + disabled={!isPreceedingPPMAddressComplete('true', values.destinationAddress.address)} /> @@ -414,7 +414,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb title="Yes, I have a third delivery address" checked={values.hasTertiaryDestinationAddress === 'true'} disabled={ - !isSecondaryAddressCompletePPM( + !isPreceedingPPMAddressComplete( values.hasSecondaryDestinationAddress, values.secondaryDestinationAddress.address, ) @@ -430,7 +430,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb title="No, I do not have a third delivery address" checked={values.hasTertiaryDestinationAddress === 'false'} disabled={ - !isSecondaryAddressCompletePPM( + !isPreceedingPPMAddressComplete( values.hasSecondaryDestinationAddress, values.secondaryDestinationAddress.address, ) diff --git a/src/shared/utils.js b/src/shared/utils.js index 96885765a14..899a01189aa 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -223,7 +223,7 @@ export function isPreceedingAddressComplete(hasDeliveryAddress, addressValues) { return false; } -export function isSecondaryAddressCompletePPM(hasSecondaryDelivery, addressValues) { +export function isPreceedingPPMAddressComplete(hasSecondaryDelivery, addressValues) { if (addressValues === undefined || addressValues.postalCode === undefined) { return false; } From 3f25629245852cf115a9e1acdc479c71d435a924 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Tue, 18 Feb 2025 22:19:12 +0000 Subject: [PATCH 16/19] refined parameter --- src/shared/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/utils.js b/src/shared/utils.js index 899a01189aa..073a9289c6d 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -223,13 +223,13 @@ export function isPreceedingAddressComplete(hasDeliveryAddress, addressValues) { return false; } -export function isPreceedingPPMAddressComplete(hasSecondaryDelivery, addressValues) { +export function isPreceedingPPMAddressComplete(hasAddress, addressValues) { if (addressValues === undefined || addressValues.postalCode === undefined) { return false; } if ( - hasSecondaryDelivery === 'true' && + hasAddress === 'true' && addressValues.streetAddress1 !== '' && addressValues.state !== '' && addressValues.city !== '' && From 2d437d7f53a683e233ee87cc2962fc0c4bea3319 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Tue, 18 Feb 2025 22:36:14 +0000 Subject: [PATCH 17/19] refined parameter --- src/shared/utils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/utils.js b/src/shared/utils.js index 073a9289c6d..3a7545ea9c3 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -210,9 +210,9 @@ export function checkAddressTogglesToClearAddresses(body) { return values; } -export function isPreceedingAddressComplete(hasDeliveryAddress, addressValues) { +export function isPreceedingAddressComplete(hasAddress, addressValues) { if ( - hasDeliveryAddress === 'true' && + hasAddress === 'true' && addressValues.streetAddress1 !== '' && addressValues.state !== '' && addressValues.city !== '' && From 5ffdd1fccab52bf667b59e5cc5806307163a1673 Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Tue, 18 Feb 2025 22:55:40 +0000 Subject: [PATCH 18/19] fixed redudancy --- .../DateAndLocationForm.jsx | 18 +++++++++--------- src/shared/utils.js | 13 ------------- 2 files changed, 9 insertions(+), 22 deletions(-) diff --git a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx index 9343fac3d84..f9f86fed5b2 100644 --- a/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx +++ b/src/components/Customer/PPM/Booking/DateAndLocationForm/DateAndLocationForm.jsx @@ -21,7 +21,7 @@ import { OptionalAddressSchema } from 'components/Customer/MtoShipmentForm/valid import { requiredAddressSchema, partialRequiredAddressSchema } from 'utils/validation'; import { isBooleanFlagEnabled } from 'utils/featureFlags'; import RequiredTag from 'components/form/RequiredTag'; -import { isPreceedingPPMAddressComplete } from 'shared/utils'; +import { isPreceedingAddressComplete } from 'shared/utils'; let meta = ''; @@ -235,7 +235,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb name="hasSecondaryPickupAddress" value="true" checked={values.hasSecondaryPickupAddress === 'true'} - disabled={!isPreceedingPPMAddressComplete('true', values.pickupAddress.address)} + disabled={!isPreceedingAddressComplete('true', values.pickupAddress.address)} /> @@ -286,7 +286,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb title="Yes, I have a third delivery address" checked={values.hasTertiaryPickupAddress === 'true'} disabled={ - !isPreceedingPPMAddressComplete( + !isPreceedingAddressComplete( values.hasSecondaryPickupAddress, values.secondaryPickupAddress.address, ) @@ -302,7 +302,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb title="No, I do not have a third delivery address" checked={values.hasTertiaryPickupAddress === 'false'} disabled={ - !isPreceedingPPMAddressComplete( + !isPreceedingAddressComplete( values.hasSecondaryPickupAddress, values.secondaryPickupAddress.address, ) @@ -362,7 +362,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb name="hasSecondaryDestinationAddress" value="true" checked={values.hasSecondaryDestinationAddress === 'true'} - disabled={!isPreceedingPPMAddressComplete('true', values.destinationAddress.address)} + disabled={!isPreceedingAddressComplete('true', values.destinationAddress.address)} /> @@ -414,7 +414,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb title="Yes, I have a third delivery address" checked={values.hasTertiaryDestinationAddress === 'true'} disabled={ - !isPreceedingPPMAddressComplete( + !isPreceedingAddressComplete( values.hasSecondaryDestinationAddress, values.secondaryDestinationAddress.address, ) @@ -430,7 +430,7 @@ const DateAndLocationForm = ({ mtoShipment, destinationDutyLocation, serviceMemb title="No, I do not have a third delivery address" checked={values.hasTertiaryDestinationAddress === 'false'} disabled={ - !isPreceedingPPMAddressComplete( + !isPreceedingAddressComplete( values.hasSecondaryDestinationAddress, values.secondaryDestinationAddress.address, ) diff --git a/src/shared/utils.js b/src/shared/utils.js index 3a7545ea9c3..bae96deadaf 100644 --- a/src/shared/utils.js +++ b/src/shared/utils.js @@ -211,19 +211,6 @@ export function checkAddressTogglesToClearAddresses(body) { } export function isPreceedingAddressComplete(hasAddress, addressValues) { - if ( - hasAddress === 'true' && - addressValues.streetAddress1 !== '' && - addressValues.state !== '' && - addressValues.city !== '' && - addressValues.postalCode !== '' - ) { - return true; - } - return false; -} - -export function isPreceedingPPMAddressComplete(hasAddress, addressValues) { if (addressValues === undefined || addressValues.postalCode === undefined) { return false; } From 4a329b6fcbc94f537395e6e5730850c3b9a7286e Mon Sep 17 00:00:00 2001 From: Jon Spight Date: Mon, 24 Feb 2025 17:02:55 +0000 Subject: [PATCH 19/19] missing testing piece --- src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx index 3c9d42111e3..2f28ca91088 100644 --- a/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx +++ b/src/components/Customer/MtoShipmentForm/MtoShipmentForm.test.jsx @@ -326,6 +326,7 @@ describe('MtoShipmentForm component', () => { await userEvent.click(screen.getByTitle('Yes, I have a second pickup address')); const streetAddress1 = await screen.findAllByLabelText(/Address 1/); + expect(streetAddress1.length).toBe(1); expect(streetAddress1[0]).toHaveAttribute('name', 'pickup.address.streetAddress1'); const streetAddress2 = await screen.findAllByLabelText(/Address 2/);