From 74c98af84b14f93c0704ea9972374340564c318e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Bitard?= <bitard.michael@gmail.com> Date: Tue, 9 Jul 2024 15:58:04 +0200 Subject: [PATCH] =?UTF-8?q?fix(api):=20ne=20v=C3=A9rifie=20plus=20avec=20T?= =?UTF-8?q?DE=20quand=20on=20a=20une=20machine=20(#1315)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/api/src/api/rest/etapes.ts | 17 ++++----- packages/api/src/business/daily.ts | 2 - .../titre-demarche-etat-validate.ts | 4 +- ...tre-etape-type-and-status-validate.test.ts | 10 ++--- .../titre-etape-type-and-status-validate.ts | 2 +- .../scripts/demarches-etape-statut-check.ts | 11 ------ .../src/tools/demarches/etape-statut-check.ts | 37 ------------------- 7 files changed, 16 insertions(+), 67 deletions(-) delete mode 100644 packages/api/src/scripts/demarches-etape-statut-check.ts delete mode 100644 packages/api/src/tools/demarches/etape-statut-check.ts diff --git a/packages/api/src/api/rest/etapes.ts b/packages/api/src/api/rest/etapes.ts index da733519c..5d18d29d0 100644 --- a/packages/api/src/api/rest/etapes.ts +++ b/packages/api/src/api/rest/etapes.ts @@ -1036,15 +1036,6 @@ const demarcheEtapesTypesGet = async (titreDemarcheId: DemarcheId, date: CaminoD if (titreEtapeId && !titreEtape) throw new Error("l'étape n'existe pas") - // si on modifie une étape - // vérifie que son type est possible sur la démarche - if (titreEtape) { - if (!isTDEExist(titre.typeId, titreDemarche.typeId, titreEtape.typeId)) { - const demarcheType = DemarchesTypes[titreDemarche.typeId] - throw new Error(`étape ${EtapesTypes[titreEtape.typeId].nom} inexistante pour une démarche ${demarcheType.nom} pour un titre ${titre.typeId}.`) - } - } - const demarcheDefinition = demarcheDefinitionFind(titre.typeId, titreDemarche.typeId, titreDemarche.etapes, titreDemarche.id) const etapesTypes: EtapeTypeEtapeStatutWithMainStep[] = [] @@ -1053,6 +1044,14 @@ const demarcheEtapesTypesGet = async (titreDemarcheId: DemarcheId, date: CaminoD const etapes = titreDemarche.etapes.map(etape => titreEtapeForMachineValidator.parse(etape)) etapesTypes.push(...etapesTypesPossibleACetteDateOuALaPlaceDeLEtape(demarcheDefinition.machine, etapes, titreEtapeId, date)) } else { + // si on modifie une étape + // vérifie que son type est possible sur la démarche + if (titreEtape) { + if (!isTDEExist(titre.typeId, titreDemarche.typeId, titreEtape.typeId)) { + const demarcheType = DemarchesTypes[titreDemarche.typeId] + throw new Error(`étape ${EtapesTypes[titreEtape.typeId].nom} inexistante pour une démarche ${demarcheType.nom} pour un titre ${titre.typeId}.`) + } + } // dans un premier temps on récupère toutes les étapes possibles pour cette démarche let etapesTypesTDE = getEtapesTDE(titre.typeId, titreDemarche.typeId) diff --git a/packages/api/src/business/daily.ts b/packages/api/src/business/daily.ts index 1a5726035..f16af0cde 100644 --- a/packages/api/src/business/daily.ts +++ b/packages/api/src/business/daily.ts @@ -19,7 +19,6 @@ import { titresActivitesRelanceSend } from './processes/titres-activites-relance import type { Pool } from 'pg' import { demarchesDefinitionsCheck } from '../tools/demarches/definitions-check.js' import { titreTypeDemarcheTypeEtapeTypeCheck } from '../tools/demarches/tde-check.js' -import { etapeStatutCheck } from '../tools/demarches/etape-statut-check.js' export const daily = async (pool: Pool) => { try { @@ -49,7 +48,6 @@ export const daily = async (pool: Pool) => { await demarchesDefinitionsCheck() await titreTypeDemarcheTypeEtapeTypeCheck() - await etapeStatutCheck() logsUpdate({ titresEtapesOrdreUpdated, diff --git a/packages/api/src/business/validations/titre-demarche-etat-validate.ts b/packages/api/src/business/validations/titre-demarche-etat-validate.ts index a4594a612..48198be7b 100644 --- a/packages/api/src/business/validations/titre-demarche-etat-validate.ts +++ b/packages/api/src/business/validations/titre-demarche-etat-validate.ts @@ -4,7 +4,7 @@ import type { ITitre, ITitreEtape } from '../../types.js' import { demarcheDefinitionFind } from '../rules-demarches/definitions.js' import { titreEtapeForMachineValidator, toMachineEtapes } from '../rules-demarches/machine-common.js' -import { titreEtapeTypeAndStatusValidate } from './titre-etape-type-and-status-validate.js' +import { tdeOldTitreEtapeTypeAndStatusValidate } from './titre-etape-type-and-status-validate.js' import { DemarcheId } from 'camino-common/src/demarche.js' import { DemarcheTypeId } from 'camino-common/src/static/demarchesTypes.js' import { ETAPE_IS_BROUILLON } from 'camino-common/src/etape.js' @@ -62,7 +62,7 @@ export const titreDemarcheUpdatedEtatValidate = ( return [] } // le type d'étape correspond à la démarche et au type de titre - const titreEtapeTypeAndStatusErrors = titreEtapeTypeAndStatusValidate(titre.typeId, titreDemarche.typeId, titreEtape.typeId, titreEtape.statutId) + const titreEtapeTypeAndStatusErrors = tdeOldTitreEtapeTypeAndStatusValidate(titre.typeId, titreDemarche.typeId, titreEtape.typeId, titreEtape.statutId) titreDemarchesErrors.push(...titreEtapeTypeAndStatusErrors) return titreDemarchesErrors diff --git a/packages/api/src/business/validations/titre-etape-type-and-status-validate.test.ts b/packages/api/src/business/validations/titre-etape-type-and-status-validate.test.ts index 5efd17091..a99ff78e3 100644 --- a/packages/api/src/business/validations/titre-etape-type-and-status-validate.test.ts +++ b/packages/api/src/business/validations/titre-etape-type-and-status-validate.test.ts @@ -1,19 +1,19 @@ -import { titreEtapeTypeAndStatusValidate } from './titre-etape-type-and-status-validate.js' +import { tdeOldTitreEtapeTypeAndStatusValidate } from './titre-etape-type-and-status-validate.js' import { describe, test, expect } from 'vitest' describe("valide le type et le statut d'une étape en fonction du type de titre et du type de démarche", () => { test('le statut est obligatoire', () => { - expect(titreEtapeTypeAndStatusValidate('arm', 'oct', 'mdp', undefined)).toEqual(['le statut est obligatoire']) + expect(tdeOldTitreEtapeTypeAndStatusValidate('arm', 'oct', 'mdp', undefined)).toEqual(['le statut est obligatoire']) }) test("le type et le statut de l'étape correspondent au type de titre et de démarche", () => { - expect(titreEtapeTypeAndStatusValidate('arm', 'oct', 'mdp', 'fai')).toHaveLength(0) + expect(tdeOldTitreEtapeTypeAndStatusValidate('arm', 'oct', 'mdp', 'fai')).toHaveLength(0) }) test("le statut de l'étape ne correspond pas au type de titre et de démarche", () => { - expect(titreEtapeTypeAndStatusValidate('arm', 'oct', 'mdp', 'rej')).toEqual(['statut de l\'étape "rej" invalide pour une étape mdp pour une démarche de type octroi']) + expect(tdeOldTitreEtapeTypeAndStatusValidate('arm', 'oct', 'mdp', 'rej')).toEqual(['statut de l\'étape "rej" invalide pour une étape mdp pour une démarche de type octroi']) }) test("le type de l'étape n'est pas compatible avec le type de titre et de démarche", () => { - expect(titreEtapeTypeAndStatusValidate('arm', 'oct', 'dex', 'fai')).toEqual(['étape "dex" invalide pour une démarche "octroi"']) + expect(tdeOldTitreEtapeTypeAndStatusValidate('arm', 'oct', 'dex', 'fai')).toEqual(['étape "dex" invalide pour une démarche "octroi"']) }) }) diff --git a/packages/api/src/business/validations/titre-etape-type-and-status-validate.ts b/packages/api/src/business/validations/titre-etape-type-and-status-validate.ts index c1c1a4a0c..09b2e9145 100644 --- a/packages/api/src/business/validations/titre-etape-type-and-status-validate.ts +++ b/packages/api/src/business/validations/titre-etape-type-and-status-validate.ts @@ -6,7 +6,7 @@ import { isTDEExist } from 'camino-common/src/static/titresTypes_demarchesTypes_ import { DemarcheTypeId, DemarchesTypes } from 'camino-common/src/static/demarchesTypes.js' import { TitreTypeId } from 'camino-common/src/static/titresTypes.js' -export const titreEtapeTypeAndStatusValidate = (titreTypeId: TitreTypeId, demarcheTypeId: DemarcheTypeId, etapeTypeId: EtapeTypeId, etapeStatutId: EtapeStatutId | undefined): string[] => { +export const tdeOldTitreEtapeTypeAndStatusValidate = (titreTypeId: TitreTypeId, demarcheTypeId: DemarcheTypeId, etapeTypeId: EtapeTypeId, etapeStatutId: EtapeStatutId | undefined): string[] => { if (!etapeStatutId) { return [`le statut est obligatoire`] } diff --git a/packages/api/src/scripts/demarches-etape-statut-check.ts b/packages/api/src/scripts/demarches-etape-statut-check.ts deleted file mode 100644 index bca179b57..000000000 --- a/packages/api/src/scripts/demarches-etape-statut-check.ts +++ /dev/null @@ -1,11 +0,0 @@ -import '../init.js' -import { etapeStatutCheck } from '../tools/demarches/etape-statut-check.js' - -etapeStatutCheck() - .then(() => { - process.exit() - }) - .catch(err => { - console.error(err) - process.exit(1) - }) diff --git a/packages/api/src/tools/demarches/etape-statut-check.ts b/packages/api/src/tools/demarches/etape-statut-check.ts deleted file mode 100644 index 94ed0c3dd..000000000 --- a/packages/api/src/tools/demarches/etape-statut-check.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { EtapesTypes } from 'camino-common/src/static/etapesTypes.js' -import { titresEtapesGet } from '../../database/queries/titres-etapes.js' -import { userSuper } from '../../database/user-super.js' -import { getEtapesStatuts } from 'camino-common/src/static/etapesTypesEtapesStatuts.js' -import { isTDEExist } from 'camino-common/src/static/titresTypes_demarchesTypes_etapesTypes/index.js' - -export const etapeStatutCheck = async () => { - console.info() - console.info('- - -') - console.info('vérification des statuts des étapes en bdd') - console.info() - - const etapes = await titresEtapesGet( - {}, - { - fields: { - demarche: { titre: { id: {} } }, - }, - }, - userSuper - ) - - let errorsNb = 0 - - etapes.forEach(etape => { - const tdeExists = isTDEExist(etape.demarche!.titre!.typeId, etape.demarche!.typeId, etape.typeId) - const etapesStatuts = getEtapesStatuts(etape.typeId) - - const etapeType = EtapesTypes[etape.typeId] - - if (tdeExists && !etapesStatuts!.map(es => es.id).includes(etape.statutId)) { - console.info(`erreur sur le titre https://camino.beta.gouv.fr/titres/${etape.demarche!.titreId}, étape « ${etapeType.nom} » a un statut inconnu`) - errorsNb++ - } - }) - console.info(`erreurs : ${errorsNb} statuts inconnus`) -} -- GitLab