From 6a011aef9da9583d95c326df5604ab4d0c10c2fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Romain?= <francoisromain@gmail.com> Date: Thu, 28 Jan 2021 12:43:40 +0100 Subject: [PATCH] =?UTF-8?q?docs:=20met=20=C3=A0=20jour=20typedoc=20(#629)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package-lock.json | 32 +-- package.json | 3 +- src/api/graphql/resolvers/entreprises.ts | 10 +- src/api/graphql/resolvers/statistiques.ts | 8 +- .../titres-activites-statut-ids-update.ts | 2 +- .../processes/titres-activites-update.test.ts | 8 +- .../processes/titres-activites-update.ts | 13 +- .../processes/titres-phases-update.ts | 7 +- .../processes/titres-statut-ids-update.ts | 6 +- .../__mocks__/titre-statut-id-find-titres.ts | 260 ++++++++---------- .../titre-activite-statut-id-find.test.ts | 2 +- .../rules/titre-activite-statut-id-find.ts | 27 +- .../rules/titre-activites-build.test.ts | 40 ++- src/business/rules/titre-activites-build.ts | 35 ++- .../rules/titre-etape-prop-find.test.ts | 69 ++--- src/business/rules/titre-etape-prop-find.ts | 51 ++-- src/business/rules/titre-phases-find.test.ts | 43 +-- src/business/rules/titre-phases-find.ts | 8 +- .../rules/titre-statut-id-find.test.ts | 55 ++-- src/business/rules/titre-statut-id-find.ts | 28 +- .../utils/activite-type-annees-find.test.ts | 17 +- .../utils/activite-type-annees-find.ts | 8 +- tsconfig.json | 1 - 23 files changed, 397 insertions(+), 336 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b3428930..601a834d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9826,9 +9826,9 @@ } }, "marked": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/marked/-/marked-1.2.7.tgz", - "integrity": "sha512-No11hFYcXr/zkBvL6qFmAp1z6BKY3zqLMHny/JN/ey+al7qwCM2+CMBL9BOgqMxZU36fz4cCWfn2poWIf7QRXA==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.2.8.tgz", + "integrity": "sha512-lzmFjGnzWHkmbk85q/ILZjFoHHJIQGF+SxGEfIdGk/XhiTPhqGs37gbru6Kkd48diJnEyYwnG67nru0Z2gQtuQ==", "dev": true }, "matomo-tracker": { @@ -14139,28 +14139,10 @@ "integrity": "sha512-JQ2O9laZ/EhfWUWYp/8EyuShYhtXLhIa6DU8eZNUfaurMhEgKdffbadKNv6HMmTfOxAcgiePg06OCxNX8EyP3g==", "dev": true }, - "typedoc-plugin-external-module-name": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/typedoc-plugin-external-module-name/-/typedoc-plugin-external-module-name-4.0.6.tgz", - "integrity": "sha512-WqJW5gbfeQD7VA96p5eRFkVlPPGXfpaAo7M/sNOeBwSBTRylKYX15kAVaGP6iM/VhXtDagTMyKhwG97sENfKHA==", - "dev": true, - "requires": { - "lodash": "^4.1.2", - "semver": "^7.1.1" - }, - "dependencies": { - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - } - } - }, - "typedoc-plugin-pages": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-pages/-/typedoc-plugin-pages-1.1.0.tgz", - "integrity": "sha512-pmCCp3G2aCeEWb829dcVe9Pl+pI5OsaqfyrkEutcAHZi6IMVfQ5G5NdrkIkFCGhJU/DY04rGrVdynWqnaO5/jg==", + "typedoc-plugin-pages-fork": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-pages-fork/-/typedoc-plugin-pages-fork-0.0.1.tgz", + "integrity": "sha512-WZoTOSarUL1CPO7LJOpsltP6B8Qrx3Tc0/hjZVNRe5mwvZnU1/LAz12ERyKzA/TsR1iIpiaixzkbhIwYkICGiQ==", "dev": true, "requires": { "compare-versions": "^3.6.0", diff --git a/package.json b/package.json index bd9da5a69..9dae60dd8 100644 --- a/package.json +++ b/package.json @@ -161,8 +161,7 @@ "ts-jest": "^26.4.4", "ts-node": "^9.1.1", "typedoc": "^0.20.19", - "typedoc-plugin-external-module-name": "^4.0.6", - "typedoc-plugin-pages": "^1.1.0", + "typedoc-plugin-pages-fork": "^0.0.1", "typedoc-plugin-sourcefile-url": "^1.0.6" }, "prettier": { diff --git a/src/api/graphql/resolvers/entreprises.ts b/src/api/graphql/resolvers/entreprises.ts index abb518bad..a3dbd8510 100644 --- a/src/api/graphql/resolvers/entreprises.ts +++ b/src/api/graphql/resolvers/entreprises.ts @@ -1,5 +1,6 @@ import { IEntreprise, IEntrepriseColonneId, IToken } from '../../../types' import { GraphQLResolveInfo } from 'graphql' +import * as dateFormat from 'dateformat' import { debug } from '../../../config/index' import { @@ -20,7 +21,7 @@ import { permissionCheck } from '../../../tools/permission' import { emailCheck } from '../../../tools/email-check' import { apiInseeEntrepriseAndEtablissementsGet } from '../../../tools/api-insee/index' -import titreEtapePropFind from '../../../business/rules/titre-etape-prop-find' +import { titreEtapePropFind } from '../../../business/rules/titre-etape-prop-find' const entreprise = async ( { id }: { id: string }, @@ -96,12 +97,14 @@ const etapeEntreprises = async ( let entreprises = [] as IEntreprise[] if (titreDemarche.etapes) { + const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') const titulaires = (titreEtapePropFind( 'titulaires', titreEtape, titreDemarche.etapes, - titre + aujourdhui, + titre.demarches ) as IEntreprise[] | null) || [] const amodiataires = @@ -109,7 +112,8 @@ const etapeEntreprises = async ( 'amodiataires', titreEtape, titreDemarche.etapes, - titre + aujourdhui, + titre.demarches ) as IEntreprise[] | null) || [] entreprises = [...titulaires, ...amodiataires] diff --git a/src/api/graphql/resolvers/statistiques.ts b/src/api/graphql/resolvers/statistiques.ts index 2152f56fd..fe6894770 100644 --- a/src/api/graphql/resolvers/statistiques.ts +++ b/src/api/graphql/resolvers/statistiques.ts @@ -1,5 +1,7 @@ -import titreEtapePropFind from '../../../business/rules/titre-etape-prop-find' +import { titreEtapePropFind } from '../../../business/rules/titre-etape-prop-find' import { debug } from '../../../config/index' +import * as dateFormat from 'dateformat' + import { titresActivitesGet } from '../../../database/queries/titres-activites' import { matomoData } from '../../../tools/api-matomo/index' import { ITitre } from '../../../types' @@ -86,11 +88,13 @@ const titresArrayBuild = (titres: ITitre[], annee: number) => if (!firstOctroiValide?.etapes?.length) return acc + const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') const surface = titreEtapePropFind( 'surface', firstOctroiValide.etapes[0], firstOctroiValide.etapes, - titre + aujourdhui, + titre.demarches ) as number | null | undefined acc.push({ diff --git a/src/business/processes/titres-activites-statut-ids-update.ts b/src/business/processes/titres-activites-statut-ids-update.ts index fa17440cd..3ef184499 100644 --- a/src/business/processes/titres-activites-statut-ids-update.ts +++ b/src/business/processes/titres-activites-statut-ids-update.ts @@ -4,7 +4,7 @@ import { titreActiviteUpdate, titresActivitesGet } from '../../database/queries/titres-activites' -import titreActiviteStatutIdFind from '../rules/titre-activite-statut-id-find' +import { titreActiviteStatutIdFind } from '../rules/titre-activite-statut-id-find' // met à jour le statut des activités d'un titre const titreActivitesStatutIdsUpdate = async () => { diff --git a/src/business/processes/titres-activites-update.test.ts b/src/business/processes/titres-activites-update.test.ts index f3411c372..e397fc349 100644 --- a/src/business/processes/titres-activites-update.test.ts +++ b/src/business/processes/titres-activites-update.test.ts @@ -4,11 +4,11 @@ import { ITitreActivite } from '../../types' import titresActivitesTypesUpdate from './titres-activites-update' import activitesTypesFilter from '../utils/activites-types-filter' -import activiteTypeAnneesFind from '../utils/activite-type-annees-find' +import { activiteTypeAnneesFind } from '../utils/activite-type-annees-find' import { titresActivitesUpsert } from '../../database/queries/titres-activites' import { titresGet } from '../../database/queries/titres' import { activitesTypesGet } from '../../database/queries/metas-activites' -import titreActivitesBuild from '../rules/titre-activites-build' +import { titreActivitesBuild } from '../rules/titre-activites-build' import { titresSansActivite, @@ -31,7 +31,7 @@ jest.mock('../utils/activites-types-filter', () => ({ jest.mock('../utils/activite-type-annees-find', () => ({ __esModule: true, - default: jest.fn() + activiteTypeAnneesFind: jest.fn() })) jest.mock('../../database/queries/titres-activites', () => ({ @@ -41,7 +41,7 @@ jest.mock('../../database/queries/titres-activites', () => ({ jest.mock('../rules/titre-activites-build', () => ({ __esModule: true, - default: jest.fn().mockResolvedValue(true) + titreActivitesBuild: jest.fn().mockResolvedValue(true) })) const titresGetMock = mocked(titresGet, true) diff --git a/src/business/processes/titres-activites-update.ts b/src/business/processes/titres-activites-update.ts index ae62a9cb0..6ce9abc7c 100644 --- a/src/business/processes/titres-activites-update.ts +++ b/src/business/processes/titres-activites-update.ts @@ -1,9 +1,10 @@ import { ITitreActivite } from '../../types' +import * as dateFormat from 'dateformat' import activitesTypesFilter from '../utils/activites-types-filter' -import activiteTypeAnneesFind from '../utils/activite-type-annees-find' +import { activiteTypeAnneesFind } from '../utils/activite-type-annees-find' import { titresActivitesUpsert } from '../../database/queries/titres-activites' -import titreActivitesBuild from '../rules/titre-activites-build' +import { titreActivitesBuild } from '../rules/titre-activites-build' import { titresGet } from '../../database/queries/titres' import { activitesTypesGet } from '../../database/queries/metas-activites' @@ -23,10 +24,12 @@ const titresActivitesUpdate = async (titresIds?: string[]) => { 'super' ) const activitesTypes = await activitesTypesGet({}, 'super') + const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') + const annee = new Date().getFullYear() const titresActivitesCreated = activitesTypes.reduce( (acc: ITitreActivite[], activiteType) => { - const annees = activiteTypeAnneesFind(activiteType) + const annees = activiteTypeAnneesFind(activiteType, annee) if (!annees.length) return acc acc.push( @@ -34,7 +37,9 @@ const titresActivitesUpdate = async (titresIds?: string[]) => { // filtre les types d'activités qui concernent le titre if (!activitesTypesFilter(activiteType, titre)) return acc - acc.push(...titreActivitesBuild(titre, activiteType, annees)) + acc.push( + ...titreActivitesBuild(titre, activiteType, annees, aujourdhui) + ) return acc }, []) diff --git a/src/business/processes/titres-phases-update.ts b/src/business/processes/titres-phases-update.ts index 7efc8fb8c..617f274c7 100644 --- a/src/business/processes/titres-phases-update.ts +++ b/src/business/processes/titres-phases-update.ts @@ -1,10 +1,11 @@ import { ITitrePhase } from '../../types' +import * as dateFormat from 'dateformat' import { titrePhasesUpsert, titrePhasesDelete } from '../../database/queries/titres-phases' -import titrePhasesFind from '../rules/titre-phases-find' +import { titrePhasesFind } from '../rules/titre-phases-find' import PQueue from 'p-queue' import { titresGet } from '../../database/queries/titres' @@ -100,6 +101,8 @@ const titresPhasesUpdate = async (titresIds?: string[]) => { 'super' ) + const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') + const { titresPhasesIdsUpdated, titresPhasesIdsDeleted } = titres.reduce( ( res: { @@ -123,7 +126,7 @@ const titresPhasesUpdate = async (titresIds?: string[]) => { // retourne un tableau avec les phases // créées à partir des démarches - const titrePhases = titrePhasesFind(demarches, titre.typeId) + const titrePhases = titrePhasesFind(demarches, aujourdhui, titre.typeId) const titrePhasesToUpdate = titrePhasesUpdatedFind( titrePhasesOld, diff --git a/src/business/processes/titres-statut-ids-update.ts b/src/business/processes/titres-statut-ids-update.ts index 80f5965eb..9f5e13869 100644 --- a/src/business/processes/titres-statut-ids-update.ts +++ b/src/business/processes/titres-statut-ids-update.ts @@ -1,7 +1,8 @@ import PQueue from 'p-queue' +import * as dateFormat from 'dateformat' import { titresGet, titreUpdate } from '../../database/queries/titres' -import titreStatutIdFind from '../rules/titre-statut-id-find' +import { titreStatutIdFind } from '../rules/titre-statut-id-find' const titresStatutIdsUpdate = async (titresIds?: string[]) => { console.info() @@ -19,9 +20,10 @@ const titresStatutIdsUpdate = async (titresIds?: string[]) => { ) const titresUpdated = [] as string[] + const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') titres.forEach(titre => { - const statutId = titreStatutIdFind(titre) + const statutId = titreStatutIdFind(aujourdhui, titre.demarches) if (statutId !== titre.statutId) { queue.add(async () => { diff --git a/src/business/rules/__mocks__/titre-statut-id-find-titres.ts b/src/business/rules/__mocks__/titre-statut-id-find-titres.ts index a0d0720fa..57d920caf 100644 --- a/src/business/rules/__mocks__/titre-statut-id-find-titres.ts +++ b/src/business/rules/__mocks__/titre-statut-id-find-titres.ts @@ -1,158 +1,126 @@ -import { ITitre } from '../../../types' +import { ITitreDemarche } from '../../../types' -const titreSansDemarche = { - id: 'test' -} as ITitre +const titreDemarchesIndefini = [{ statutId: 'ind' }] as ITitreDemarche[] -const titreDemarcheIndefini = { - id: 'test', - demarches: [{ statutId: 'ind' }] -} as ITitre +const titreDemarchesValide = [ + { + id: 'm-pr-saint-pierre-2014-oct01', + titreId: 'm-pr-saint-pierre-2014', + typeId: 'oct', + statutId: 'acc', + ordre: 1, + etapes: [ + { + id: 'm-pr-saint-pierre-2014-oct01-dex01', + titreDemarcheId: 'm-pr-saint-pierre-2014-oct01', + typeId: 'dex', + statutId: 'acc', + ordre: 1, + date: '2014-04-01', + dateDebut: null, + dateFin: '3014-04-01' + } + ] + } +] as ITitreDemarche[] -const titreValide = { - id: 'm-pr-saint-pierre-2014', - demarches: [ - { - id: 'm-pr-saint-pierre-2014-oct01', - titreId: 'm-pr-saint-pierre-2014', - typeId: 'oct', - statutId: 'acc', - ordre: 1, - etapes: [ - { - id: 'm-pr-saint-pierre-2014-oct01-dex01', - titreDemarcheId: 'm-pr-saint-pierre-2014-oct01', - typeId: 'dex', - statutId: 'acc', - ordre: 1, - date: '2014-04-01', - dateDebut: null, - dateFin: '3014-04-01' - } - ] - } - ] -} as ITitre +const titreDemarchesEchu = [ + { + id: 'm-pr-saint-pierre-1914-oct01', + titreId: 'm-pr-saint-pierre-1914', + typeId: 'oct', + statutId: 'acc', + ordre: 1, + etapes: [ + { + id: 'm-pr-saint-pierre-2014-oct01-dex01', + titreDemarcheId: 'm-pr-saint-pierre-2014-oct01', + typeId: 'dex', + statutId: 'acc', + ordre: 1, + date: '1014-04-01', + dateDebut: null, + dateFin: '2014-04-01' + } + ] + } +] as ITitreDemarche[] -const titreEchu = { - id: 'm-pr-saint-pierre-1914', - demarches: [ - { - id: 'm-pr-saint-pierre-1914-oct01', - titreId: 'm-pr-saint-pierre-1914', - typeId: 'oct', - statutId: 'acc', - ordre: 1, - etapes: [ - { - id: 'm-pr-saint-pierre-2014-oct01-dex01', - titreDemarcheId: 'm-pr-saint-pierre-2014-oct01', - typeId: 'dex', - statutId: 'acc', - ordre: 1, - date: '1014-04-01', - dateDebut: null, - dateFin: '2014-04-01' - } - ] - } - ] -} as ITitre +const titreDemarchesOctroiInstruction = [ + { + id: 'm-pr-saint-pierre-2014-oct01', + titreId: 'm-pr-saint-pierre-2014', + typeId: 'oct', + statutId: 'ins', + ordre: 1 + } +] as ITitreDemarche[] -const titreOctroiInstruction = { - id: 'm-pr-saint-pierre-2014', - demarches: [ - { - id: 'm-pr-saint-pierre-2014-oct01', - titreId: 'm-pr-saint-pierre-2014', - typeId: 'oct', - statutId: 'ins', - ordre: 1 - } - ] -} as ITitre +const titreDemarchesOctroiDepose = [ + { + id: 'm-pr-saint-pierre-2014-oct01', + titreId: 'm-pr-saint-pierre-2014', + typeId: 'oct', + statutId: 'dep', + ordre: 1 + } +] as ITitreDemarche[] -const titreOctroiDepose = { - id: 'm-pr-saint-pierre-2014', - demarches: [ - { - id: 'm-pr-saint-pierre-2014-oct01', - titreId: 'm-pr-saint-pierre-2014', - typeId: 'oct', - statutId: 'dep', - ordre: 1 - } - ] -} as ITitre +const titreDemarchesOctroiRejete = [ + { + id: 'm-pr-saint-pierre-2014-oct01', + titreId: 'm-pr-saint-pierre-2014', + typeId: 'oct', + statutId: 'rej', + ordre: 1 + } +] as ITitreDemarche[] -const titreOctroiRejete = { - id: 'm-pr-saint-pierre-2014', - demarches: [ - { - id: 'm-pr-saint-pierre-2014-oct01', - titreId: 'm-pr-saint-pierre-2014', - typeId: 'oct', - statutId: 'rej', - ordre: 1 - } - ] -} as ITitre +const titreDemarchesOctroiClasse = [ + { + id: 'm-pr-saint-pierre-2014-oct01', + titreId: 'm-pr-saint-pierre-2014', + typeId: 'oct', + statutId: 'cls', + ordre: 1 + } +] as ITitreDemarche[] -const titreOctroiClasse = { - id: 'm-pr-saint-pierre-2014', - demarches: [ - { - id: 'm-pr-saint-pierre-2014-oct01', - titreId: 'm-pr-saint-pierre-2014', - typeId: 'oct', - statutId: 'cls', - ordre: 1 - } - ] -} as ITitre +const titreDemarchesOctroiRetire = [ + { + id: 'm-pr-saint-pierre-2014-oct01', + titreId: 'm-pr-saint-pierre-2014', + typeId: 'oct', + statutId: 'des', + ordre: 1 + } +] as ITitreDemarche[] -const titreOctroiRetire = { - id: 'm-pr-saint-pierre-2014', - demarches: [ - { - id: 'm-pr-saint-pierre-2014-oct01', - titreId: 'm-pr-saint-pierre-2014', - typeId: 'oct', - statutId: 'des', - ordre: 1 - } - ] -} as ITitre - -const titreDemarcheInstruction = { - id: 'm-pr-saint-pierre-2014', - demarches: [ - { - id: 'm-pr-saint-pierre-2014-mut01', - titreId: 'm-pr-saint-pierre-2014', - typeId: 'mut', - statutId: 'ins', - ordre: 1 - }, - { - id: 'm-pr-saint-pierre-2014-oct01', - titreId: 'm-pr-saint-pierre-2014', - typeId: 'oct', - statutId: 'acc', - ordre: 1 - } - ] -} as ITitre +const titreDemarchesInstruction = [ + { + id: 'm-pr-saint-pierre-2014-mut01', + titreId: 'm-pr-saint-pierre-2014', + typeId: 'mut', + statutId: 'ins', + ordre: 1 + }, + { + id: 'm-pr-saint-pierre-2014-oct01', + titreId: 'm-pr-saint-pierre-2014', + typeId: 'oct', + statutId: 'acc', + ordre: 1 + } +] as ITitreDemarche[] export { - titreSansDemarche, - titreDemarcheIndefini, - titreValide, - titreEchu, - titreOctroiInstruction, - titreOctroiDepose, - titreOctroiRejete, - titreOctroiClasse, - titreOctroiRetire, - titreDemarcheInstruction + titreDemarchesIndefini, + titreDemarchesValide, + titreDemarchesEchu, + titreDemarchesOctroiInstruction, + titreDemarchesOctroiDepose, + titreDemarchesOctroiRejete, + titreDemarchesOctroiClasse, + titreDemarchesOctroiRetire, + titreDemarchesInstruction } diff --git a/src/business/rules/titre-activite-statut-id-find.test.ts b/src/business/rules/titre-activite-statut-id-find.test.ts index b6f822393..7021557e6 100644 --- a/src/business/rules/titre-activite-statut-id-find.test.ts +++ b/src/business/rules/titre-activite-statut-id-find.test.ts @@ -1,4 +1,4 @@ -import titreActiviteStatutIdFind from './titre-activite-statut-id-find' +import { titreActiviteStatutIdFind } from './titre-activite-statut-id-find' import { titreActiviteFermee, diff --git a/src/business/rules/titre-activite-statut-id-find.ts b/src/business/rules/titre-activite-statut-id-find.ts index e7a6ab5f3..f719e2596 100644 --- a/src/business/rules/titre-activite-statut-id-find.ts +++ b/src/business/rules/titre-activite-statut-id-find.ts @@ -1,25 +1,36 @@ import { ITitreActivite } from '../../types' -// TODO: ajouter un cas si les activités ont un délai null (champ vide) -const titreActiviteStatutIdFind = (titreActivite: ITitreActivite) => { - // si l'activité a un statut différent de "déposé" ou "fermé" +/** + * Trouve le statut d'une activité + * @param titreActivite - activité + * @returns statut d'activité + */ +const titreActiviteStatutIdFind = (titreActivite: ITitreActivite) => { + /** + * si l'activité a un statut différent de "déposé" ou "fermé" + */ if (!['dep', 'fer'].includes(titreActivite.statutId)) { const dateDepot = new Date(titreActivite.date) - const dateDelai = new Date(dateDepot) dateDelai.setMonth(dateDepot.getMonth() + titreActivite.type!.delaiMois) - // si le délai de remplissage est dépassé - // passe le statut de l'activité à "fermé" + /** + * si le délai de remplissage est dépassé + * passe le statut de l'activité à "fermé" + * */ if (Date.now() > dateDelai.getTime()) { return 'fer' } + + // TODO: ajouter un cas si les activités ont un délai null (champ vide) } - // sinon retourne le statut de l'activité + /** + * sinon retourne le statut de l'activité + */ return titreActivite.statutId } -export default titreActiviteStatutIdFind +export { titreActiviteStatutIdFind } diff --git a/src/business/rules/titre-activites-build.test.ts b/src/business/rules/titre-activites-build.test.ts index c5872a137..1f9c7cb05 100644 --- a/src/business/rules/titre-activites-build.test.ts +++ b/src/business/rules/titre-activites-build.test.ts @@ -1,5 +1,6 @@ import { mocked } from 'ts-jest/utils' -import titreActivitesBuild from './titre-activites-build' + +import { titreActivitesBuild } from './titre-activites-build' import * as titreValiditePeriodeCheck from '../utils/titre-validite-periode-check' import { @@ -21,10 +22,17 @@ jest.mock('../utils/titre-validite-periode-check', () => ({ const titreValiditePeriodeCheckMock = mocked(titreValiditePeriodeCheck, true) describe("construction des activités d'un titre", () => { + const aujourdhui = '2020-12-01' + test("ne crée pas d'activité si la fin de la période est dans le futur", () => { titreValiditePeriodeCheckMock.default.mockReturnValue(true) - const res = titreActivitesBuild(titreVide, activiteTypeGrp, [2300]) + const res = titreActivitesBuild( + titreVide, + activiteTypeGrp, + [2300], + aujourdhui + ) expect(res.length).toEqual(0) expect(titreValiditePeriodeCheckMock.default).not.toHaveBeenCalled() @@ -33,9 +41,12 @@ describe("construction des activités d'un titre", () => { test('crée quatre activités si le titre est valide pour la période', () => { titreValiditePeriodeCheckMock.default.mockReturnValue(true) - const res = titreActivitesBuild(titreAvecActivite201801, activiteTypeXxx, [ - 2018 - ]) + const res = titreActivitesBuild( + titreAvecActivite201801, + activiteTypeXxx, + [2018], + aujourdhui + ) expect(res.length).toEqual(4) expect(titreValiditePeriodeCheckMock.default).toHaveBeenCalled() @@ -44,9 +55,12 @@ describe("construction des activités d'un titre", () => { test('crée trois activités si le titre est valide pour la période et possède déja une activité', () => { titreValiditePeriodeCheckMock.default.mockReturnValue(true) - const res = titreActivitesBuild(titreAvecActivite201801, activiteTypeGrp, [ - 2018 - ]) + const res = titreActivitesBuild( + titreAvecActivite201801, + activiteTypeGrp, + [2018], + aujourdhui + ) expect(res.length).toEqual(3) expect(titreValiditePeriodeCheckMock.default).toHaveBeenCalled() @@ -55,7 +69,12 @@ describe("construction des activités d'un titre", () => { test("ne crée pas d'activité si le titre n'est pas valide pour la période", () => { titreValiditePeriodeCheckMock.default.mockReturnValue(false) - const res = titreActivitesBuild(titreVide, activiteTypeGrp, [2018]) + const res = titreActivitesBuild( + titreVide, + activiteTypeGrp, + [2018], + aujourdhui + ) expect(res.length).toEqual(0) expect(titreValiditePeriodeCheckMock.default).toHaveBeenCalled() @@ -67,7 +86,8 @@ describe("construction des activités d'un titre", () => { const res = titreActivitesBuild( titreModificationEnInstance, activiteTypeGrp, - [2018] + [2018], + aujourdhui ) expect(res.length).toEqual(4) diff --git a/src/business/rules/titre-activites-build.ts b/src/business/rules/titre-activites-build.ts index 7e5932a11..8bfe39455 100644 --- a/src/business/rules/titre-activites-build.ts +++ b/src/business/rules/titre-activites-build.ts @@ -8,6 +8,19 @@ import { import * as dateFormat from 'dateformat' import titreValiditePeriodeCheck from '../utils/titre-validite-periode-check' +/** + * Construit une activité + * @param titreDemarches - démarches d'un titre + * @param titreStatutId - id du statut du titre + * @param titreId - id du titre + * @param typeId - id du type de l'activité + * @param annee - année, + * @param periodeIndex - index de la période concernée (ex: 1 pour le premier trimestre) + * @param monthsCount - nombre de mois concernés (ex : 3 pour un trimestre) + * @param aujourdhui - date du jour au format YYYY-MM-JJ + * @returns une activité ou null + */ + const titreActiviteBuild = ( titreDemarches: ITitreDemarche[], titreStatutId: string, @@ -15,7 +28,8 @@ const titreActiviteBuild = ( typeId: string, annee: number, periodeIndex: number, - monthsCount: number + monthsCount: number, + aujourdhui: string ) => { const frequencePeriodeId = periodeIndex + 1 @@ -24,8 +38,6 @@ const titreActiviteBuild = ( 'yyyy-mm-dd' ) - const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') - // si la date de fin de l'activité n'est pas passée // on ne crée pas l'activité if (periodeDateFin > aujourdhui) return null @@ -66,10 +78,20 @@ const titreActiviteBuild = ( return titreActivite } +/** + * Construit les activités à ajouter sur un titre + * @param titre - titre + * @param activiteType - type d'activité + * @param annees - liste des années + * @param aujourdhui - date du jour au format yyyy-mm-dd + * @returns une liste d'activités + */ + const titreActivitesBuild = ( titre: ITitre, activiteType: IActiviteType, - annees: number[] + annees: number[], + aujourdhui: string ) => { const periods = activiteType.frequence![activiteType.frequence!.periodesNom!]! const monthsCount = 12 / periods.length @@ -102,7 +124,8 @@ const titreActivitesBuild = ( activiteType.id, annee, periodeIndex, - monthsCount + monthsCount, + aujourdhui ) if (titreActivite) { @@ -115,4 +138,4 @@ const titreActivitesBuild = ( ) } -export default titreActivitesBuild +export { titreActivitesBuild } diff --git a/src/business/rules/titre-etape-prop-find.test.ts b/src/business/rules/titre-etape-prop-find.test.ts index 18b36f2e7..c232b19bb 100644 --- a/src/business/rules/titre-etape-prop-find.test.ts +++ b/src/business/rules/titre-etape-prop-find.test.ts @@ -1,17 +1,19 @@ -import { ITitreEtape, ITitre } from '../../types' +import { ITitreEtape, ITitreDemarche } from '../../types' -import titreEtapePropFind from './titre-etape-prop-find' +import { titreEtapePropFind } from './titre-etape-prop-find' console.error = jest.fn() describe("valeur d'une propriété pour une étape", () => { + const aujourdhui = '2020-12-01' test('retourne null si le titre ne contient pas de propriété "demarches"', () => { expect( titreEtapePropFind( 'titulaires', ({} as unknown) as ITitreEtape, ([] as unknown) as ITitreEtape[], - ({} as unknown) as ITitre + aujourdhui, + undefined ) ).toEqual(null) }) @@ -22,7 +24,8 @@ describe("valeur d'une propriété pour une étape", () => { 'titulaires', ({} as unknown) as ITitreEtape, ([] as unknown) as ITitreEtape[], - ({ demarches: [] } as unknown) as ITitre + aujourdhui, + ([] as unknown) as ITitreDemarche[] ) ).toEqual(null) }) @@ -33,7 +36,8 @@ describe("valeur d'une propriété pour une étape", () => { 'titulaires', ({} as unknown) as ITitreEtape, ([] as unknown) as ITitreEtape[], - ({ demarches: [{ etapes: {} }] } as unknown) as ITitre + aujourdhui, + ([{ etapes: {} }] as unknown) as ITitreDemarche[] ) ).toThrow(/is not a function/) expect(console.error).toHaveBeenCalled() @@ -45,9 +49,8 @@ describe("valeur d'une propriété pour une étape", () => { 'titulaires', ({} as unknown) as ITitreEtape, ([] as unknown) as ITitreEtape[], - ({ - demarches: [{}, { etapes: [] }] - } as unknown) as ITitre + aujourdhui, + ([{}, { etapes: [] }] as unknown) as ITitreDemarche[] ) ).toEqual(null) }) @@ -69,7 +72,8 @@ describe("valeur d'une propriété pour une étape", () => { titulaires: [{ id: 'fr-xxxxxxxxx' }] } ] as unknown) as ITitreEtape[], - {} as ITitre + aujourdhui, + undefined ) ).toEqual([{ id: 'fr-xxxxxxxxx' }]) }) @@ -80,30 +84,29 @@ describe("valeur d'une propriété pour une étape", () => { 'titulaires', ({ date: '1000-01-01' } as unknown) as ITitreEtape, [], - ({ - demarches: [ - { - id: 'demarche-01', - etapes: [ - { - id: 'demarche-01-etape-01', - date: '1000-01-01' - } - ] - }, - { - typeId: 'oct', - etapes: [ - { - id: 'demarche-02-etape-01', - date: '1000-01-01', - statutId: 'acc', - titulaires: [{ id: 'fr-xxxxxxxxx' }] - } - ] - } - ] - } as unknown) as ITitre + aujourdhui, + ([ + { + id: 'demarche-01', + etapes: [ + { + id: 'demarche-01-etape-01', + date: '1000-01-01' + } + ] + }, + { + typeId: 'oct', + etapes: [ + { + id: 'demarche-02-etape-01', + date: '1000-01-01', + statutId: 'acc', + titulaires: [{ id: 'fr-xxxxxxxxx' }] + } + ] + } + ] as unknown) as ITitreDemarche[] ) ).toEqual([{ id: 'fr-xxxxxxxxx' }]) }) diff --git a/src/business/rules/titre-etape-prop-find.ts b/src/business/rules/titre-etape-prop-find.ts index 57cdd4fd3..1474e28db 100644 --- a/src/business/rules/titre-etape-prop-find.ts +++ b/src/business/rules/titre-etape-prop-find.ts @@ -1,12 +1,7 @@ -import { - ITitreDemarche, - ITitre, - ITitreEtape, - ITitreEtapeProp -} from '../../types' +import { ITitreDemarche, ITitreEtape, ITitreEtapeProp } from '../../types' import titrePropEtapeIdFind from './titre-prop-etape-id-find' -import titreStatutIdFind from './titre-statut-id-find' +import { titreStatutIdFind } from './titre-statut-id-find' const titreEtapeFind = ( titreDemarches: ITitreDemarche[], @@ -60,10 +55,10 @@ const titreDemarchesEtapesFilter = ( ) if (titreEtapesFiltered.length) { - titreDemarche.etapes = titreEtapesFiltered - return true } + + return false } return false @@ -74,7 +69,8 @@ const titreEtapePropFind = ( prop: ITitreEtapeProp, titreEtape: ITitreEtape, titreDemarcheEtapes: ITitreEtape[], - titre: ITitre + aujourdhui: string, + titreDemarches?: ITitreDemarche[] | null ) => { try { // filtre les étapes antérieures à la date de l'étape sélectionnée @@ -89,27 +85,44 @@ const titreEtapePropFind = ( // sinon (la propriété n'est pas dans la démarche) // cherche la propriété dans les démarches précédentes - if (!titre.demarches?.length) return null + if (!titreDemarches?.length) return null // filtre les démarches et étapes antérieures à la date de l'étape sélectionnée - titre.demarches = titreDemarchesEtapesFilter( - titre.demarches, + + const titreDemarchesFiltered = titreDemarchesEtapesFilter( + titreDemarches, titreEtape.date ) - // recalcule le statut du titre - titre.statutId = titreStatutIdFind(titre) + titreDemarchesFiltered.forEach((td: ITitreDemarche) => { + if (td.etapes) { + const titreEtapesFiltered = titreEtapesDateFilter( + td.etapes, + titreEtape.date + ) + + if (titreEtapesFiltered.length) { + td.etapes = titreEtapesFiltered + } + } + }) + + // calcule le statut du titre + const titreStatutId = titreStatutIdFind(aujourdhui, titreDemarchesFiltered) // cherche la première occurrence de la propriété // dans une démarche et une étape valides const propTitreEtapeId = titrePropEtapeIdFind( prop, - titre.demarches, - titre.statutId! + titreDemarchesFiltered, + titreStatutId! ) if (propTitreEtapeId) { - const propTitreEtape = titreEtapeFind(titre.demarches, propTitreEtapeId) + const propTitreEtape = titreEtapeFind( + titreDemarchesFiltered, + propTitreEtapeId + ) return propTitreEtape![prop] } @@ -122,4 +135,4 @@ const titreEtapePropFind = ( } } -export default titreEtapePropFind +export { titreEtapePropFind } diff --git a/src/business/rules/titre-phases-find.test.ts b/src/business/rules/titre-phases-find.test.ts index 15c3f8535..f697bc43f 100644 --- a/src/business/rules/titre-phases-find.test.ts +++ b/src/business/rules/titre-phases-find.test.ts @@ -1,4 +1,4 @@ -import titrePhasesFind from './titre-phases-find' +import { titrePhasesFind } from './titre-phases-find' import { titreDemarcheOctDpuAcc, titreDemarcheOctDpuInexistante, @@ -11,8 +11,9 @@ import { } from './__mocks__/titre-phases-find-demarches' describe("phases d'une démarche", () => { + const aujourdhui = '2020-12-01' test("un titre qui a une démarche d'octroi avec une dpu a une phase", () => { - expect(titrePhasesFind([titreDemarcheOctDpuAcc])).toEqual([ + expect(titrePhasesFind([titreDemarcheOctDpuAcc], aujourdhui)).toEqual([ { dateDebut: '2200-01-01', dateFin: '2202-01-01', @@ -23,11 +24,15 @@ describe("phases d'une démarche", () => { }) test("un titre qui a une démarche d'octroi sans dpu n'a pas de phase", () => { - expect(titrePhasesFind([titreDemarcheOctDpuInexistante])).toEqual([]) + expect( + titrePhasesFind([titreDemarcheOctDpuInexistante], aujourdhui) + ).toEqual([]) }) test("un titre AXM qui a une démarche d'octroi avec une dex a une phase", () => { - expect(titrePhasesFind([titreAxmDemarcheOctDexAcc], 'axm')).toEqual([ + expect( + titrePhasesFind([titreAxmDemarcheOctDexAcc], aujourdhui, 'axm') + ).toEqual([ { dateDebut: '2200-01-01', dateFin: '2202-01-01', @@ -38,7 +43,9 @@ describe("phases d'une démarche", () => { }) test("un titre PRM qui a une démarche d'octroi avec une rpu a une phase", () => { - expect(titrePhasesFind([titrePrmDemarcheOctRpuAcc], 'prm')).toEqual([ + expect( + titrePhasesFind([titrePrmDemarcheOctRpuAcc], aujourdhui, 'prm') + ).toEqual([ { dateDebut: '2200-01-01', dateFin: '2200-01-02', @@ -49,18 +56,20 @@ describe("phases d'une démarche", () => { }) test("un titre qui a une démarche d'octroi avec une dpu dont la date de début est renseignée a une phase", () => { - expect(titrePhasesFind([titreDemarcheOctDpuDateDebut])).toEqual([ - { - dateDebut: '2200-01-02', - dateFin: '2202-01-02', - statutId: 'val', - titreDemarcheId: 'h-cx-courdemanges-1988-oct01' - } - ]) + expect(titrePhasesFind([titreDemarcheOctDpuDateDebut], aujourdhui)).toEqual( + [ + { + dateDebut: '2200-01-02', + dateFin: '2202-01-02', + statutId: 'val', + titreDemarcheId: 'h-cx-courdemanges-1988-oct01' + } + ] + ) }) test('un titre qui a une démarche de prolongation avec une dpu a une phase', () => { - expect(titrePhasesFind(titreDemarchesOctProlongation)).toEqual([ + expect(titrePhasesFind(titreDemarchesOctProlongation, aujourdhui)).toEqual([ { dateDebut: '2200-01-01', dateFin: '2500-01-01', @@ -77,7 +86,7 @@ describe("phases d'une démarche", () => { }) test("la phase d'un titre concernée par une démarche d'annulation a une date de fin qui est celle de cette démarche d'annulation", () => { - expect(titrePhasesFind(titreDemarchesOctAnnulation)).toEqual([ + expect(titrePhasesFind(titreDemarchesOctAnnulation, aujourdhui)).toEqual([ { dateDebut: '2000-01-02', dateFin: '2019-01-02', @@ -88,7 +97,9 @@ describe("phases d'une démarche", () => { }) test("la phase d'un titre concernée par une démarche de renonciation partielle n'est pas affectée par la renonciation", () => { - expect(titrePhasesFind(titreDemarchesOctAnnulationSansPoints)).toEqual([ + expect( + titrePhasesFind(titreDemarchesOctAnnulationSansPoints, aujourdhui) + ).toEqual([ { dateDebut: '2000-01-02', dateFin: '2020-01-02', diff --git a/src/business/rules/titre-phases-find.ts b/src/business/rules/titre-phases-find.ts index ca3556475..12ccb8158 100644 --- a/src/business/rules/titre-phases-find.ts +++ b/src/business/rules/titre-phases-find.ts @@ -1,6 +1,5 @@ import { ITitreDemarche, ITitrePhase } from '../../types' -import * as dateFormat from 'dateformat' import titreDemarcheDateFinAndDureeFind from './titre-demarche-date-fin-duree-find' import titreDemarchePhasesFilter from './titre-demarche-phases-filter' import titreEtapesSortDesc from '../utils/titre-etapes-sort-desc' @@ -29,6 +28,7 @@ const titreDemarcheAnnulationFind = (titreDemarches: ITitreDemarche[]) => // retourne un tableau contenant les phases d'un titre const titrePhasesFind = ( titreDemarches: ITitreDemarche[], + aujourdhui: string, titreTypeId?: string ) => { // filtre les démarches qui donnent lieu à des phases @@ -44,7 +44,6 @@ const titrePhasesFind = ( return titreDemarchesFiltered.reduce( (titrePhases: ITitrePhase[], titreDemarche, index) => { let dateFin = titrePhaseDateFinFind( - titreDemarches, titreDemarchesFiltered, titreDemarche ) as string @@ -69,8 +68,6 @@ const titrePhasesFind = ( // dateFin et dateDebut ne seront jamais `null` // car les démarches sont pré-filtrées - const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') - // si // - la date du jour est plus récente que la date de fin // le statut est valide @@ -146,7 +143,6 @@ const titrePhaseDateDebutFind = ( // - titreDemarche: la démarche dont on cherche la date de fin const titrePhaseDateFinFind = ( - titreDemarches: ITitreDemarche[], titreDemarchesFiltered: ITitreDemarche[], titreDemarche: ITitreDemarche ) => @@ -156,4 +152,4 @@ const titrePhaseDateFinFind = ( titreDemarche.ordre! ).dateFin -export default titrePhasesFind +export { titrePhasesFind } diff --git a/src/business/rules/titre-statut-id-find.test.ts b/src/business/rules/titre-statut-id-find.test.ts index d5bd16d1a..459b028bd 100644 --- a/src/business/rules/titre-statut-id-find.test.ts +++ b/src/business/rules/titre-statut-id-find.test.ts @@ -1,56 +1,69 @@ -import titreStatutIdFind from './titre-statut-id-find' +import { titreStatutIdFind } from './titre-statut-id-find' import { - titreSansDemarche, - titreDemarcheIndefini, - titreValide, - titreEchu, - titreOctroiInstruction, - titreOctroiDepose, - titreOctroiRejete, - titreOctroiClasse, - titreOctroiRetire, - titreDemarcheInstruction + titreDemarchesIndefini, + titreDemarchesValide, + titreDemarchesEchu, + titreDemarchesOctroiInstruction, + titreDemarchesOctroiDepose, + titreDemarchesOctroiRejete, + titreDemarchesOctroiClasse, + titreDemarchesOctroiRetire, + titreDemarchesInstruction } from './__mocks__/titre-statut-id-find-titres' describe("statut d'un titre", () => { + const aujourdhui = '2020-12-01' + test("le statut d'un titre sans démarche est “ind”", () => { - expect(titreStatutIdFind(titreSansDemarche)).toEqual('ind') + expect(titreStatutIdFind(aujourdhui, undefined)).toEqual('ind') }) test("le statut d'un titre avec des démarches dont le statut est “ind” est également “ind”", () => { - expect(titreStatutIdFind(titreDemarcheIndefini)).toEqual('ind') + expect(titreStatutIdFind(aujourdhui, titreDemarchesIndefini)).toEqual('ind') }) test("le statut d'un titre dont la date de fin est dans le futur est “val”", () => { - expect(titreStatutIdFind(titreValide)).toEqual('val') + expect(titreStatutIdFind(aujourdhui, titreDemarchesValide)).toEqual('val') }) test("le statut d'un titre dont la date de fin est dans le passé est “ech”", () => { - expect(titreStatutIdFind(titreEchu)).toEqual('ech') + expect(titreStatutIdFind(aujourdhui, titreDemarchesEchu)).toEqual('ech') }) test("le statut d'un titre dont l'unique démarche est un octroi en instruction est “dmi”", () => { - expect(titreStatutIdFind(titreOctroiInstruction)).toEqual('dmi') + expect( + titreStatutIdFind(aujourdhui, titreDemarchesOctroiInstruction) + ).toEqual('dmi') }) test("le statut d'un titre dont l'unique démarche est un octroi déposé est “dmi”", () => { - expect(titreStatutIdFind(titreOctroiDepose)).toEqual('dmi') + expect(titreStatutIdFind(aujourdhui, titreDemarchesOctroiDepose)).toEqual( + 'dmi' + ) }) test("le statut d'un titre dont l'unique démarche est un octroi rejeté est “dmc”", () => { - expect(titreStatutIdFind(titreOctroiRejete)).toEqual('dmc') + expect(titreStatutIdFind(aujourdhui, titreDemarchesOctroiRejete)).toEqual( + 'dmc' + ) }) test("le statut d'un titre dont l'unique démarche est un octroi classé sans suite est “dmc”", () => { - expect(titreStatutIdFind(titreOctroiClasse)).toEqual('dmc') + expect(titreStatutIdFind(aujourdhui, titreDemarchesOctroiClasse)).toEqual( + 'dmc' + ) }) test("le statut d'un titre dont l'unique démarche est un octroi retiré est “dmc”", () => { - expect(titreStatutIdFind(titreOctroiRetire)).toEqual('dmc') + expect(titreStatutIdFind(aujourdhui, titreDemarchesOctroiRetire)).toEqual( + 'dmc' + ) }) test("le statut d'un titre avec une démarche en instruction est “mod”", () => { - expect(titreStatutIdFind(titreDemarcheInstruction)).toEqual('mod') + expect(titreStatutIdFind(aujourdhui, titreDemarchesInstruction)).toEqual( + 'mod' + ) }) }) diff --git a/src/business/rules/titre-statut-id-find.ts b/src/business/rules/titre-statut-id-find.ts index aa05e53da..80712f9fe 100644 --- a/src/business/rules/titre-statut-id-find.ts +++ b/src/business/rules/titre-statut-id-find.ts @@ -1,25 +1,27 @@ -import { ITitre } from '../../types' +import { ITitreDemarche } from '../../types' -import * as dateFormat from 'dateformat' import titreDateFinFind from './titre-date-fin-find' -const titreStatutIdFind = (titre: ITitre) => { - if (!titre.demarches || !titre.demarches.length) return 'ind' +const titreStatutIdFind = ( + aujourdhui: string, + titreDemarches?: ITitreDemarche[] | null +) => { + if (!titreDemarches || !titreDemarches.length) return 'ind' // si toutes les démarches du titre ont le statut `indéfini` // alors le titre a également le statut `indéfini` - if (titre.demarches.every(d => d.statutId === 'ind')) return 'ind' + if (titreDemarches.every(d => d.statutId === 'ind')) return 'ind' // s'il y a une seule démarche (octroi) if ( - titre.demarches.length === 1 && - ['oct', 'vut', 'vct'].includes(titre.demarches[0].typeId) && + titreDemarches.length === 1 && + ['oct', 'vut', 'vct'].includes(titreDemarches[0].typeId) && ['eco', 'ins', 'dep', 'rej', 'cls', 'des'].includes( - titre.demarches[0].statutId! + titreDemarches[0].statutId! ) ) { // le statut de la démarche est en instruction ou déposée - if (['eco', 'ins', 'dep'].includes(titre.demarches[0].statutId!)) { + if (['eco', 'ins', 'dep'].includes(titreDemarches[0].statutId!)) { // le statut du titre est demande initiale return 'dmi' } @@ -30,14 +32,14 @@ const titreStatutIdFind = (titre: ITitre) => { } // une démarche a le statut en instruction - if (titre.demarches.find(d => d.statutId === 'ins')) { + if (titreDemarches.find(d => d.statutId === 'ins')) { // le statut du titre est modification en instance return 'mod' } // la date du jour est inférieure à la date d’échéance - const dateFin = titreDateFinFind(titre.demarches) - const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') + const dateFin = titreDateFinFind(titreDemarches) + if (dateFin && aujourdhui < dateFin) { // le statut du titre est valide return 'val' @@ -47,4 +49,4 @@ const titreStatutIdFind = (titre: ITitre) => { return 'ech' } -export default titreStatutIdFind +export { titreStatutIdFind } diff --git a/src/business/utils/activite-type-annees-find.test.ts b/src/business/utils/activite-type-annees-find.test.ts index dcd486155..3f4cb056f 100644 --- a/src/business/utils/activite-type-annees-find.test.ts +++ b/src/business/utils/activite-type-annees-find.test.ts @@ -1,17 +1,18 @@ import { IActiviteType } from '../../types' -import * as dateFormat from 'dateformat' -import activiteTypeAnneesFind from './activite-type-annees-find' +import { activiteTypeAnneesFind } from './activite-type-annees-find' describe('calcule les années que couvre une activité', () => { test("retourne un tableau d'années que couvre une activité", () => { - const anneeEnCours = new Date().getFullYear() - const aujourdhui = dateFormat(new Date(), 'yyyy-mm-dd') + const anneeFin = 2020 expect( - activiteTypeAnneesFind(({ - dateDebut: aujourdhui - } as unknown) as IActiviteType) - ).toEqual([anneeEnCours]) + activiteTypeAnneesFind( + ({ + dateDebut: '2020-12-01' + } as unknown) as IActiviteType, + anneeFin + ) + ).toEqual([anneeFin]) }) }) diff --git a/src/business/utils/activite-type-annees-find.ts b/src/business/utils/activite-type-annees-find.ts index 753a38428..cf716d640 100644 --- a/src/business/utils/activite-type-annees-find.ts +++ b/src/business/utils/activite-type-annees-find.ts @@ -1,9 +1,11 @@ import { IActiviteType } from '../../types' -const activiteTypeAnneesFind = (activiteType: IActiviteType) => { +const activiteTypeAnneesFind = ( + activiteType: IActiviteType, + anneeFin: number +) => { // calcule les années qui concernent le type d'activité const anneeDebut = new Date(activiteType.dateDebut).getFullYear() - const anneeFin = new Date().getFullYear() const annees = [...new Array(anneeFin - anneeDebut + 1)].map( (x, delta) => anneeDebut + delta @@ -12,4 +14,4 @@ const activiteTypeAnneesFind = (activiteType: IActiviteType) => { return annees } -export default activiteTypeAnneesFind +export { activiteTypeAnneesFind } diff --git a/tsconfig.json b/tsconfig.json index e294aa165..cd60a2f43 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -21,7 +21,6 @@ "exclude": ["node_modules", "**/*.test.ts", "**/__mocks__/*"], "include": ["src/**/*"], "typedocOptions": { - "mode": "modules", "out": "docs", "exclude": ["**/*+(.test|.spec|.e2e).ts", "**/__mocks__/**/*"], "includeVersion": true, -- GitLab