diff --git a/packages/api/tsconfig.json b/packages/api/tsconfig.json index 2d007a8e0ca497c30a33a686c5535bafe3c46f64..c6696bd975783742c66e7b43ce7c68af2424b883 100644 --- a/packages/api/tsconfig.json +++ b/packages/api/tsconfig.json @@ -26,6 +26,10 @@ "resolveJsonModule": true, "noUnusedLocals": true, "noUnusedParameters": true, + // TODO 2024-12-04 mettre les deux options suivantes à true génère beaucoup d'erreurs + "noPropertyAccessFromIndexSignature": false, + "noUncheckedIndexedAccess": false, + "noUncheckedSideEffectImports": true, "noEmit": true, "paths": { "graphql-fields": ["./src/@types/graphql-fields"], diff --git a/packages/common/src/etape.ts b/packages/common/src/etape.ts index 4459ed007326f38f29637f658edaa55820935560..245c939f489e75df1aaf88b816d9c77a4e1c2775 100644 --- a/packages/common/src/etape.ts +++ b/packages/common/src/etape.ts @@ -134,7 +134,7 @@ export const getStatutId = (etape: Pick<FlattenEtape, 'date' | 'contenu' | 'type return etape.statutId } - const duree = etape.contenu[sectionDureeIds[etape.typeId]]?.duree?.value ?? 0 + const duree = etape.contenu[sectionDureeIds[etape.typeId]]?.['duree']?.value ?? 0 if (isBefore(currentDate, etape.date)) { return ETAPES_STATUTS.PROGRAMME diff --git a/packages/common/src/permissions/etape-form.test.ts b/packages/common/src/permissions/etape-form.test.ts index 4e107edad025a35180877f13e8684a3252bec8fe..250ffff6310988203191f1d6250bec2f0eb949a1 100644 --- a/packages/common/src/permissions/etape-form.test.ts +++ b/packages/common/src/permissions/etape-form.test.ts @@ -552,6 +552,52 @@ const axmDocumentsComplete: Pick<EtapeDocument | TempEtapeDocument, 'etape_docum ] const entreprise1Id = entrepriseIdValidator.parse('id1') +test('etapeDocumentsStepIsComplete avec mecanisation', () => { + expect( + etapeDocumentsStepIsComplete( + { typeId: ETAPES_TYPES.demande, contenu: { arm: { mecanise: { value: true, etapeHeritee: null, heritee: false } } }, isBrouillon: ETAPE_IS_NOT_BROUILLON }, + DEMARCHES_TYPES_IDS.Octroi, + TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX, + demarcheIdValidator.parse('demarcheId'), + [{ etape_document_type_id: 'dec' }], + [], + firstEtapeDateValidator.parse('2022-01-01') + ) + ).toMatchInlineSnapshot(` + { + "errors": [ + "le document "Documents cartographiques" (car) est obligatoire", + "le document "Décision cas par cas" (dep) est obligatoire", + "le document "Dossier "Loi sur l'eau"" (doe) est obligatoire", + "le document "Dossier de demande" (dom) est obligatoire", + "le document "Formulaire de demande" (for) est obligatoire", + ], + "valid": false, + } + `) + + expect( + etapeDocumentsStepIsComplete( + { typeId: ETAPES_TYPES.demande, contenu: { arm: { mecanise: { value: false, etapeHeritee: null, heritee: false } } }, isBrouillon: ETAPE_IS_NOT_BROUILLON }, + DEMARCHES_TYPES_IDS.Octroi, + TITRES_TYPES_IDS.AUTORISATION_DE_RECHERCHE_METAUX, + demarcheIdValidator.parse('demarcheId'), + [{ etape_document_type_id: 'dec' }], + [], + firstEtapeDateValidator.parse('2022-01-01') + ) + ).toMatchInlineSnapshot(` + { + "errors": [ + "le document "Documents cartographiques" (car) est obligatoire", + "le document "Dossier de demande" (dom) est obligatoire", + "le document "Formulaire de demande" (for) est obligatoire", + ], + "valid": false, + } + `) +}) + test('etapeDocumentsStepIsComplete', () => { expect( etapeDocumentsStepIsComplete( diff --git a/packages/common/src/permissions/etape-form.ts b/packages/common/src/permissions/etape-form.ts index 1842ded65fd46c36c0c0c2243102f6c57b17a0ff..8909255e0d31a77546564f3518d8b4e9b312fb4f 100644 --- a/packages/common/src/permissions/etape-form.ts +++ b/packages/common/src/permissions/etape-form.ts @@ -254,7 +254,7 @@ export const etapeDocumentsStepIsComplete = ( firstEtapeDate: FirstEtapeDate ): ValidReturn => { const errors: string[] = [] - const documentTypes = getDocumentsTypes({ typeId: etape.typeId }, demarcheTypeId, titreTypeId, demarcheId, sdomZoneIds, etape.contenu.arm?.mecanise?.value === true, firstEtapeDate) + const documentTypes = getDocumentsTypes({ typeId: etape.typeId }, demarcheTypeId, titreTypeId, demarcheId, sdomZoneIds, etape.contenu['arm']?.['mecanise']?.value === true, firstEtapeDate) errors.push( ...documentTypes diff --git a/packages/common/tsconfig.json b/packages/common/tsconfig.json index 33ad6d6e5dfcf1be1c82c6f085fbcd7eb4bb5b30..9a700bc806548ed7acd11486e0995ad521112839 100644 --- a/packages/common/tsconfig.json +++ b/packages/common/tsconfig.json @@ -22,7 +22,10 @@ "resolveJsonModule": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noEmit": true + "noEmit": true, + "noPropertyAccessFromIndexSignature": true, + "noUncheckedIndexedAccess": true, + "noUncheckedSideEffectImports": true, }, "exclude": ["vitest.config.ts"] } diff --git a/packages/ui/tsconfig.json b/packages/ui/tsconfig.json index 09ff23dcf031ffc70f12969dcf6423621b70be1b..3f4bd78f47b1657a6e1ca8e745b055651fa0ddbc 100644 --- a/packages/ui/tsconfig.json +++ b/packages/ui/tsconfig.json @@ -14,6 +14,10 @@ "noUnusedLocals": true, "noUnusedParameters": true, "noErrorTruncation": false, + // TODO 2024-12-04 mettre les deux options suivantes à true génère beaucoup d'erreurs + "noPropertyAccessFromIndexSignature": false, + "noUncheckedIndexedAccess": false, + "noUncheckedSideEffectImports": true, "lib": [ "esnext", "dom",