From a23133ac4d5040ee4db33c09406bb1a6c8f1a213 Mon Sep 17 00:00:00 2001 From: Benoit Guigal Date: Thu, 6 Feb 2025 14:46:00 +0100 Subject: [PATCH] refacto : create a helpers file for emptypackaging and cleanPackagings function --- .../forms/__tests__/validation.integration.ts | 14 ++++++ back/src/forms/validation.ts | 8 +++- .../common/utils/packagingsBsddSummary.ts | 2 +- .../FormWasteTransportSummary.tsx | 11 ++++- .../SignEmissionFormModalContent.tsx | 29 +++++------- .../SignTransportFormModalContent.tsx | 13 +++-- front/src/form/bsdd/StepList.tsx | 15 +----- front/src/form/bsdd/WasteInfo.tsx | 3 +- .../bsdd/components/packagings/helpers.ts | 47 +++++++++++++++++++ front/src/form/bsdd/utils/initial-state.ts | 6 +-- 10 files changed, 104 insertions(+), 44 deletions(-) create mode 100644 front/src/form/bsdd/components/packagings/helpers.ts diff --git a/back/src/forms/__tests__/validation.integration.ts b/back/src/forms/__tests__/validation.integration.ts index b70fa30cd3..d558551173 100644 --- a/back/src/forms/__tests__/validation.integration.ts +++ b/back/src/forms/__tests__/validation.integration.ts @@ -1702,6 +1702,20 @@ describe("draftFormSchema", () => { ); }); + it.each([-1, 0])( + "should not validate when packaging volume is %p (not strictly positive)", + async volume => { + const validateFn = () => + draftFormSchema.validate({ + wasteDetailsPackagingInfos: [{ type: "FUT", weight: 1, volume }] + }); + + await expect(validateFn()).rejects.toThrow( + "Le volume doit être un nombre positif" + ); + } + ); + it("should not be valid when passing eco-organisme as emitter", async () => { const ecoOrganisme = await ecoOrganismeFactory({ siret: siretify(), diff --git a/back/src/forms/validation.ts b/back/src/forms/validation.ts index a1e242ccba..a1f62e1956 100644 --- a/back/src/forms/validation.ts +++ b/back/src/forms/validation.ts @@ -688,7 +688,13 @@ export const packagingInfoFn = ({ "Le nombre de benne ou de citerne ne peut être supérieur à 2." ) : schema - ) + ), + volume: yup + .number() + .optional() + .nullable() + .moreThan(0, "Le volume doit être un nombre positif"), + identificationNumbers: yup.array(yup.string()).optional().notRequired() }); const parcelCommonInfos = yup diff --git a/front/src/Apps/common/utils/packagingsBsddSummary.ts b/front/src/Apps/common/utils/packagingsBsddSummary.ts index 29050ac5eb..4e40ba7c8f 100644 --- a/front/src/Apps/common/utils/packagingsBsddSummary.ts +++ b/front/src/Apps/common/utils/packagingsBsddSummary.ts @@ -43,7 +43,7 @@ export function getPackagingInfosSummary(packagingInfos: PackagingInfo[]) { summary += ` de ${packagingInfo.volume} ${volumeUnit}`; } - if (packagingInfo.identificationNumbers) { + if (packagingInfo.identificationNumbers?.length) { summary += ` (n° ${packagingInfo.identificationNumbers.join(", ")})`; } diff --git a/front/src/dashboard/components/BSDList/BSDD/WorkflowAction/FormWasteTransportSummary.tsx b/front/src/dashboard/components/BSDList/BSDD/WorkflowAction/FormWasteTransportSummary.tsx index 68b7094988..31e2066229 100644 --- a/front/src/dashboard/components/BSDList/BSDD/WorkflowAction/FormWasteTransportSummary.tsx +++ b/front/src/dashboard/components/BSDList/BSDD/WorkflowAction/FormWasteTransportSummary.tsx @@ -23,6 +23,7 @@ import { useEffect } from "react"; import { getTransportModeLabel } from "../../../../constants"; import { getFormWasteDetailsADRMention } from "@td/constants"; import PackagingList from "../../../../../form/bsdd/components/packagings/PackagingList"; +import { emptyPackaging } from "../../../../../form/bsdd/components/packagings/helpers"; interface FormWasteTransportSummaryProps { form: Form; @@ -202,7 +203,15 @@ export function FormWasteTransportSummary({ {form.emitter?.type === EmitterType.Appendix1Producer && (