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