From 8413923c06ae765bd99ae75fe2c05a17e0311485 Mon Sep 17 00:00:00 2001
From: Hugo SUBTIL <ext.sopra.husubtil@grandlyon.com>
Date: Wed, 20 Oct 2021 12:01:28 +0200
Subject: [PATCH] clean: remove unused imports, and various sonar corrections

---
 scripts/server.js                             |  26 +-
 .../Analysis/AnalysisConsumption.tsx          |   3 +-
 .../Spinner/StyledEcogestureSpinner.tsx       |   4 +-
 .../Connection/ConnectionFormLogin.tsx        |   4 +-
 src/components/Duel/DuelResultModal.spec.tsx  |   1 -
 src/migrations/migration.service.ts           |   9 +-
 src/services/action.service.ts                |   2 +-
 src/services/profile.service.ts               | 154 ++-
 src/services/profileType.service.spec.ts      | 910 +++++++++---------
 src/services/profileType.service.ts           |   2 +-
 src/services/profileTypeForm.ts               |   1 -
 src/store/profileType/profileType.reducer.ts  |   4 -
 12 files changed, 550 insertions(+), 570 deletions(-)

diff --git a/scripts/server.js b/scripts/server.js
index f36c086ed..376b06523 100644
--- a/scripts/server.js
+++ b/scripts/server.js
@@ -28,19 +28,19 @@ http
       const { rawHeaders, httpVersion, method, socket, url } = request
       const { remoteAddress, remoteFamily } = socket
 
-      // console.log(
-      //   JSON.stringify({
-      //     timestamp: Date.now(),
-      //     processingTime: Date.now() - requestStart,
-      //     rawHeaders,
-      //     errorMessage,
-      //     httpVersion,
-      //     method,
-      //     remoteAddress,
-      //     remoteFamily,
-      //     url,
-      //   })
-      // )
+      console.log(
+        JSON.stringify({
+          timestamp: Date.now(),
+          processingTime: Date.now() - requestStart,
+          rawHeaders,
+          errorMessage,
+          httpVersion,
+          method,
+          remoteAddress,
+          remoteFamily,
+          url,
+        })
+      )
       console.log(JSON.parse(body))
     })
 
diff --git a/src/components/Analysis/AnalysisConsumption.tsx b/src/components/Analysis/AnalysisConsumption.tsx
index 58c291320..d1cb39211 100644
--- a/src/components/Analysis/AnalysisConsumption.tsx
+++ b/src/components/Analysis/AnalysisConsumption.tsx
@@ -1,4 +1,4 @@
-import React, { useCallback, useEffect, useState, Dispatch } from 'react'
+import React, { useCallback, useEffect, useState } from 'react'
 import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { useSelector } from 'react-redux'
 import { AppStore } from 'store'
@@ -11,7 +11,6 @@ import Button from '@material-ui/core/Button'
 import AnalysisConsumptionRow from 'components/Analysis/AnalysisConsumptionRow'
 import StyledCard from 'components/CommonKit/Card/StyledCard'
 import ProfileTypeService from 'services/profileType.service'
-import ProfileService from 'services/profile.service'
 import { Client, useClient } from 'cozy-client'
 import { DateTime } from 'luxon'
 import ProfileTypeEntityService from 'services/profileTypeEntity.service'
diff --git a/src/components/CommonKit/Spinner/StyledEcogestureSpinner.tsx b/src/components/CommonKit/Spinner/StyledEcogestureSpinner.tsx
index 730b367fa..6b3957417 100644
--- a/src/components/CommonKit/Spinner/StyledEcogestureSpinner.tsx
+++ b/src/components/CommonKit/Spinner/StyledEcogestureSpinner.tsx
@@ -12,10 +12,10 @@ const SpinnerBase = withStyles({
 
 type StyledSpinnerProps = CircularProgressProps
 
-const StyledSpinner: React.ComponentType<StyledSpinnerProps> = ({
+const StyledEcogestureSpinner: React.ComponentType<StyledSpinnerProps> = ({
   ...props
 }: StyledSpinnerProps) => {
   return <SpinnerBase {...props} />
 }
 
-export default StyledSpinner
+export default StyledEcogestureSpinner
diff --git a/src/components/Connection/ConnectionFormLogin.tsx b/src/components/Connection/ConnectionFormLogin.tsx
index 107bc5e83..1882f2481 100644
--- a/src/components/Connection/ConnectionFormLogin.tsx
+++ b/src/components/Connection/ConnectionFormLogin.tsx
@@ -3,7 +3,7 @@ import { useI18n } from 'cozy-ui/transpiled/react/I18n'
 import { useClient } from 'cozy-client'
 import { useDispatch } from 'react-redux'
 
-import { Account, AccountAuthData, FluidStatus, FluidConnection } from 'models'
+import { Account, FluidStatus, FluidConnection } from 'models'
 import AccountService from 'services/account.service'
 import ConnectionService from 'services/connection.service'
 
@@ -156,7 +156,7 @@ const ConnectionFormLogin: React.FC<ConnectionFormLoginProps> = ({
   useEffect(() => {
     if (account && account.auth) {
       const auth = account.auth
-      const authData = auth as AccountAuthData
+      const authData = auth
       if (authData.login) {
         setLogin(authData.login)
       }
diff --git a/src/components/Duel/DuelResultModal.spec.tsx b/src/components/Duel/DuelResultModal.spec.tsx
index ab5ba7898..4970dbcfa 100644
--- a/src/components/Duel/DuelResultModal.spec.tsx
+++ b/src/components/Duel/DuelResultModal.spec.tsx
@@ -7,7 +7,6 @@ import { profileData } from '../../../tests/__mocks__/profile.mock'
 import configureStore from 'redux-mock-store'
 
 import { act } from 'react-dom/test-utils'
-import UsageEventService from 'services/usageEvent.service'
 import DuelResultModal from './DuelResultModal'
 
 jest.mock('cozy-ui/transpiled/react/I18n', () => {
diff --git a/src/migrations/migration.service.ts b/src/migrations/migration.service.ts
index 1dfcc1f61..d23a0c16d 100644
--- a/src/migrations/migration.service.ts
+++ b/src/migrations/migration.service.ts
@@ -15,10 +15,13 @@ export class MigrationService {
     log.info('[Migration] Running migrations...')
     for (const migration of migrations) {
       // First attempt
-      const result: MigrationResult = await migrate(migration, this._client)
-      log.info(migrationLog(migration, result))
+      const migrationResult: MigrationResult = await migrate(
+        migration,
+        this._client
+      )
+      log.info(migrationLog(migration, migrationResult))
 
-      if (result.type === MIGRATION_RESULT_FAILED) {
+      if (migrationResult.type === MIGRATION_RESULT_FAILED) {
         // Retry in case of failure
         const result = await migrate(migration, this._client)
 
diff --git a/src/services/action.service.ts b/src/services/action.service.ts
index 2095ddfed..70643ede1 100644
--- a/src/services/action.service.ts
+++ b/src/services/action.service.ts
@@ -4,7 +4,7 @@ import { FluidType } from 'enum/fluid.enum'
 import { UserActionState } from 'enum/userAction.enum'
 import { UserChallengeUpdateFlag } from 'enum/userChallenge.enum'
 import { orderBy } from 'lodash'
-import { DateTime, Interval } from 'luxon'
+import { DateTime } from 'luxon'
 import { Ecogesture, UserAction, UserChallenge } from 'models'
 import { getSeason } from 'utils/utils'
 import ChallengeService from './challenge.service'
diff --git a/src/services/profile.service.ts b/src/services/profile.service.ts
index 5a8836af3..46a43c5c2 100644
--- a/src/services/profile.service.ts
+++ b/src/services/profile.service.ts
@@ -1,85 +1,69 @@
-import {
-  Client,
-  MongoSelector,
-  Q,
-  QueryDefinition,
-  QueryResult,
-} from 'cozy-client'
-import { Profile, ProfileEntity, ProfileType } from 'models'
-import { PROFILETYPE_DOCTYPE, PROFILE_DOCTYPE } from 'doctypes'
-import { DateTime } from 'luxon'
-import {
-  ConstructionYear,
-  Floor,
-  HotWaterEquipment,
-  HousingType,
-  IndividualInsulationWork,
-  IndividualOrCollective,
-  OutsideFacingWalls,
-  ThreeChoicesAnswer,
-} from 'enum/profileType.enum'
-
-export default class ProfileService {
-  private readonly _client: Client
-
-  constructor(_client: Client) {
-    this._client = _client
-  }
-  /**
-   * Retrieve Profile from the ProfileEntity
-   * @param {ProfileEntity} profileEntity
-   * @returns {Profile}
-   */
-  private parseProfileEntityToProfile(profileEntity: ProfileEntity): Profile {
-    const profile: Profile = {
-      ...profileEntity,
-      haveSeenOldFluidModal:
-        typeof profileEntity.haveSeenOldFluidModal === 'string'
-          ? DateTime.fromISO(profileEntity.haveSeenOldFluidModal, {
-              zone: 'utc',
-            })
-          : profileEntity.haveSeenOldFluidModal,
-      monthlyAnalysisDate:
-        typeof profileEntity.monthlyAnalysisDate === 'string'
-          ? DateTime.fromISO(profileEntity.monthlyAnalysisDate, {
-              zone: 'utc',
-            })
-          : profileEntity.monthlyAnalysisDate,
-      lastConnectionDate: DateTime.fromISO(profileEntity.lastConnectionDate, {
-        zone: 'utc',
-      }),
-    }
-    return profile
-  }
-
-  public async getProfile(): Promise<Profile | null> {
-    const query: QueryDefinition = Q(PROFILE_DOCTYPE)
-    const {
-      data: [profile],
-    }: QueryResult<ProfileEntity[]> = await this._client.query(query.limitBy(1))
-    const profileEntity: ProfileEntity | null = profile ? profile : null
-    if (profileEntity) {
-      return this.parseProfileEntityToProfile(profileEntity)
-    }
-    return null
-  }
-
-  public async updateProfile(
-    attributes: Partial<Profile>
-  ): Promise<Profile | null> {
-    const query: QueryDefinition = Q(PROFILE_DOCTYPE)
-    const {
-      data: [doc],
-    }: QueryResult<ProfileEntity[]> = await this._client.query(query.limitBy(1))
-    const {
-      data: profileEntity,
-    }: QueryResult<ProfileEntity | null> = await this._client.save({
-      ...doc,
-      ...attributes,
-    })
-    if (profileEntity) {
-      return this.parseProfileEntityToProfile(profileEntity)
-    }
-    return null
-  }
-}
+import { Client, Q, QueryDefinition, QueryResult } from 'cozy-client'
+import { Profile, ProfileEntity } from 'models'
+import { PROFILE_DOCTYPE } from 'doctypes'
+import { DateTime } from 'luxon'
+
+export default class ProfileService {
+  private readonly _client: Client
+
+  constructor(_client: Client) {
+    this._client = _client
+  }
+  /**
+   * Retrieve Profile from the ProfileEntity
+   * @param {ProfileEntity} profileEntity
+   * @returns {Profile}
+   */
+  private parseProfileEntityToProfile(profileEntity: ProfileEntity): Profile {
+    const profile: Profile = {
+      ...profileEntity,
+      haveSeenOldFluidModal:
+        typeof profileEntity.haveSeenOldFluidModal === 'string'
+          ? DateTime.fromISO(profileEntity.haveSeenOldFluidModal, {
+              zone: 'utc',
+            })
+          : profileEntity.haveSeenOldFluidModal,
+      monthlyAnalysisDate:
+        typeof profileEntity.monthlyAnalysisDate === 'string'
+          ? DateTime.fromISO(profileEntity.monthlyAnalysisDate, {
+              zone: 'utc',
+            })
+          : profileEntity.monthlyAnalysisDate,
+      lastConnectionDate: DateTime.fromISO(profileEntity.lastConnectionDate, {
+        zone: 'utc',
+      }),
+    }
+    return profile
+  }
+
+  public async getProfile(): Promise<Profile | null> {
+    const query: QueryDefinition = Q(PROFILE_DOCTYPE)
+    const {
+      data: [profile],
+    }: QueryResult<ProfileEntity[]> = await this._client.query(query.limitBy(1))
+    const profileEntity: ProfileEntity | null = profile ? profile : null
+    if (profileEntity) {
+      return this.parseProfileEntityToProfile(profileEntity)
+    }
+    return null
+  }
+
+  public async updateProfile(
+    attributes: Partial<Profile>
+  ): Promise<Profile | null> {
+    const query: QueryDefinition = Q(PROFILE_DOCTYPE)
+    const {
+      data: [doc],
+    }: QueryResult<ProfileEntity[]> = await this._client.query(query.limitBy(1))
+    const {
+      data: profileEntity,
+    }: QueryResult<ProfileEntity | null> = await this._client.save({
+      ...doc,
+      ...attributes,
+    })
+    if (profileEntity) {
+      return this.parseProfileEntityToProfile(profileEntity)
+    }
+    return null
+  }
+}
diff --git a/src/services/profileType.service.spec.ts b/src/services/profileType.service.spec.ts
index 14e969941..f3cfb1b0c 100644
--- a/src/services/profileType.service.spec.ts
+++ b/src/services/profileType.service.spec.ts
@@ -1,455 +1,455 @@
-import {
-  Floor,
-  HotWaterEquipment,
-  HousingType,
-  IndividualInsulationWork,
-  IndividualOrCollective,
-  ProfileTypeStepForm,
-  ThreeChoicesAnswer,
-} from 'enum/profileType.enum'
-import { ProfileType } from 'models/profileType.model'
-import {
-  mockCorrectedConsumption,
-  mockEstimatedConsumption,
-  mockMonthColdWaterConsumption,
-  mockMonthConsumption,
-  mockMonthConsumption1,
-  mockMonthConsumption2,
-  mockMonthCookingConsumption,
-  mockMonthElectricSpecificConsumption,
-  mockMonthEcsConsumption1Solar,
-  mockMonthEcsConsumptionOther,
-  mockMonthEcsConsumptionThermo,
-  mockProfileType,
-  mockProfileType1,
-  mockProfileType2,
-  mockTestProfile1,
-  mockTestProfile2,
-  mockTestProfile3,
-  mockwaterRawNeeds,
-  mockWaterSpreadNeeds,
-  mockMonthlyForecastJanuaryTestProfile1,
-  mockMonthlyForecastJanuaryTestProfile2,
-  mockMonthlyForecastJanuaryTestProfile3,
-  mockProfileTypeAnswers,
-  mockMonthlyForecastJanuaryTest1WithFullArrays,
-} from '../../tests/__mocks__/profileType.mock'
-import ProfileTypeService from './profileType.service'
-import mockClient from '../../tests/__mocks__/client'
-import { DateTime, Settings } from 'luxon'
-
-const wrongNumber = 99999
-describe('ProfileType service', () => {
-  const profileTypeService = new ProfileTypeService(mockProfileType, mockClient)
-
-  describe('calculateWarmingEstimatedConsumption', () => {
-    it('shoud calculate the Warming Estimated Consumption', () => {
-      const estimatedConsumption = profileTypeService.calculateWarmingEstimatedConsumption()
-      expect(estimatedConsumption).toEqual(mockEstimatedConsumption)
-    })
-
-    it('shoud calculate the Warming Corrected Consumption', () => {
-      const correctedConsumption = profileTypeService.calculateWarmingCorrectedConsumption(
-        mockEstimatedConsumption
-      )
-      expect(correctedConsumption).toEqual(mockCorrectedConsumption)
-    })
-    it('shoud calculate the Warming Month Consumption', async () => {
-      const monthConsumption = await profileTypeService.calculateWarmingMonthConsumption(
-        mockCorrectedConsumption,
-        3
-      )
-      expect(monthConsumption).toEqual(mockMonthConsumption)
-    })
-    it('shoud get the heating consumption', async () => {
-      const monthConsumption = await profileTypeService.getMonthHeating(3)
-      expect(monthConsumption).toEqual(mockMonthConsumption)
-    })
-  })
-  describe('shoud get the heating consumption for a flat with collective heating', () => {
-    const _profileTypeService = new ProfileTypeService(
-      mockProfileType1,
-      mockClient
-    )
-    it('shoud get the heating consumption', async () => {
-      const monthConsumption = await _profileTypeService.getMonthHeating(2)
-      expect(monthConsumption).toEqual(mockMonthConsumption1)
-    })
-  })
-  describe('shoud get the heating consumption for a house with individual heating, facilities, installation and individual work', () => {
-    const _profileTypeService = new ProfileTypeService(
-      mockProfileType2,
-      mockClient
-    )
-    it('shoud get the heating consumption', async () => {
-      const monthConsumption = await _profileTypeService.getMonthHeating(1)
-      expect(monthConsumption).toEqual(mockMonthConsumption2)
-    })
-  })
-  describe('calculateMonthWaterRawNeeds', () => {
-    it('shoud calculate the water raw needs consumption by month', () => {
-      const waterRawNeeds = profileTypeService.calculateMonthWaterRawNeeds(
-        mockProfileType,
-        1
-      )
-      expect(waterRawNeeds).toEqual(mockwaterRawNeeds)
-    })
-
-    it('shoud calculate the water spread needs Consumption', () => {
-      const waterSpreadNeeds = profileTypeService.calculateSpreadNeeds(
-        mockProfileType,
-        1
-      )
-      expect(waterSpreadNeeds).toEqual(mockWaterSpreadNeeds)
-    })
-    it('shoud calculate the total ecs consumption by month if profileType.hotWaterEquipment === "solar"', () => {
-      const monthEcsConsumption = profileTypeService.calculateTotalConsumption(
-        mockWaterSpreadNeeds,
-        mockProfileType1,
-        1
-      )
-      expect(monthEcsConsumption).toEqual(mockMonthEcsConsumption1Solar)
-    })
-    it('shoud calculate the total ecs consumption by month if profileType.hotWaterEquipment === "other"', () => {
-      const mockProfileTypeWithOther = { ...mockProfileType }
-      mockProfileTypeWithOther.hotWaterEquipment = HotWaterEquipment.OTHER
-      const monthEcsConsumption = profileTypeService.calculateTotalConsumption(
-        mockWaterSpreadNeeds,
-        mockProfileTypeWithOther,
-        1
-      )
-      expect(monthEcsConsumption).toEqual(mockMonthEcsConsumptionOther)
-    })
-    it('shoud get the ECS consumption if profileType.hotWaterEquipment === "thermodynamic"', () => {
-      const mockProfileTypeWithOther = { ...mockProfileType }
-      mockProfileTypeWithOther.hotWaterEquipment =
-        HotWaterEquipment.THERMODYNAMIC
-      const monthConsumption = profileTypeService.getMonthEcs(1)
-      expect(monthConsumption).toEqual(mockMonthEcsConsumptionThermo)
-    })
-
-    describe('shoud get the month cooking consumption', () => {
-      it('shoud get the month cooking consumption', () => {
-        const _profileTypeService = new ProfileTypeService(
-          mockProfileType,
-          mockClient
-        )
-
-        const monthCookingConsumption = _profileTypeService.getMonthCookingConsumption(
-          1
-        )
-        expect(monthCookingConsumption).toEqual(mockMonthCookingConsumption)
-      })
-    })
-    describe('shoud get the month electric specific consumption', () => {
-      it('shoud get the electric specific consumption', () => {
-        const _profileTypeService = new ProfileTypeService(
-          mockProfileType,
-          mockClient
-        )
-
-        const monthElectricSpecificConsumption = _profileTypeService.getMonthElectricSpecificConsumption(
-          1
-        )
-        expect(monthElectricSpecificConsumption).toEqual(
-          mockMonthElectricSpecificConsumption
-        )
-      })
-    })
-    describe('shoud get the month cold water consumption', () => {
-      it('shoud get the cold water consumption', () => {
-        const _profileTypeService = new ProfileTypeService(
-          mockProfileType,
-          mockClient
-        )
-        const monthColdWaterConsumption = _profileTypeService.getMonthColdWaterConsumption(
-          1
-        )
-        expect(monthColdWaterConsumption).toEqual(mockMonthColdWaterConsumption)
-      })
-    })
-  })
-  describe('shoud get the monthly Forecast', () => {
-    // For month of january
-    const profileTypeService1 = new ProfileTypeService(
-      mockTestProfile1,
-      mockClient
-    )
-    it('shoud get the monthly forecast for test profile 1', async () => {
-      const monthlyForecast = await profileTypeService1.getMonthlyForecast(1)
-      expect(monthlyForecast).toEqual(mockMonthlyForecastJanuaryTestProfile1)
-    })
-    const profileTypeService2 = new ProfileTypeService(
-      mockTestProfile2,
-      mockClient
-    )
-    it('shoud get the monthly forecast for test profile 2', async () => {
-      const monthlyForecast = await profileTypeService2.getMonthlyForecast(1)
-      expect(monthlyForecast).toEqual(mockMonthlyForecastJanuaryTestProfile2)
-    })
-    const profileTypeService3 = new ProfileTypeService(
-      mockTestProfile3,
-      mockClient
-    )
-    it('shoud get the monthly forecast for test profile 3', async () => {
-      const monthlyForecast = await profileTypeService3.getMonthlyForecast(1)
-      expect(monthlyForecast).toEqual(mockMonthlyForecastJanuaryTestProfile3)
-    })
-    it('shoud get the monthly forecast for test profile 1 with wall and roof and window insulation', async () => {
-      const mockProfileWithThreeInsulation: ProfileType = {
-        ...mockTestProfile1,
-        individualInsulationWork: [
-          IndividualInsulationWork.ROOF_INSULATION,
-          IndividualInsulationWork.WALL_INSULATION,
-          IndividualInsulationWork.WINDOW_REPLACEMENT,
-        ],
-        hasInstalledVentilation: ThreeChoicesAnswer.YES,
-        hasReplacedHeater: ThreeChoicesAnswer.YES,
-      }
-      const _profileTypeService = new ProfileTypeService(
-        mockProfileWithThreeInsulation,
-        mockClient
-      )
-      const monthlyForecast = await _profileTypeService.getMonthlyForecast(1)
-      expect(monthlyForecast).toEqual(
-        mockMonthlyForecastJanuaryTest1WithFullArrays
-      )
-    })
-  })
-  describe('getNextFormStep', () => {
-    it('shoud get the next step in function of the current step', () => {
-      let nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.HOUSING_TYPE
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.AREA)
-      nextStep = profileTypeService.getNextFormStep(ProfileTypeStepForm.AREA)
-      expect(nextStep).toEqual(ProfileTypeStepForm.OCCUPANTS_NUMBER)
-
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.OCCUPANTS_NUMBER
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.CONSTRUCTION_YEAR)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.CONSTRUCTION_YEAR
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.OUTSIDE_FACING_WALLS)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.OUTSIDE_FACING_WALLS
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.FLOOR)
-      nextStep = profileTypeService.getNextFormStep(ProfileTypeStepForm.FLOOR)
-      expect(nextStep).toEqual(ProfileTypeStepForm.HEATING)
-      nextStep = profileTypeService.getNextFormStep(ProfileTypeStepForm.HEATING)
-      expect(nextStep).toEqual(ProfileTypeStepForm.WARMING_FLUID)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.WARMING_FLUID
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.VENTILATION)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.VENTILATION
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.HEATER_REPLACEMENT)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.HEATER_REPLACEMENT
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.COLD_WATER)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.COLD_WATER
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.HOT_WATER)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.HOT_WATER
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.HOT_WATER_FLUID)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.HOT_WATER_FLUID
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.HOT_WATER_EQUIPMENT)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.HOT_WATER_EQUIPMENT
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.COOKING_FLUID)
-      nextStep = profileTypeService.getNextFormStep(
-        ProfileTypeStepForm.COOKING_FLUID
-      )
-      expect(nextStep).toEqual(ProfileTypeStepForm.END)
-      nextStep = profileTypeService.getNextFormStep(wrongNumber)
-      expect(nextStep).toEqual(ProfileTypeStepForm.HOUSING_TYPE)
-    })
-  })
-  describe('getPreviousFormStep', () => {
-    it('shoud get the previus step in function of the current step', () => {
-      let previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.AREA
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.HOUSING_TYPE)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.OCCUPANTS_NUMBER
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.AREA)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.CONSTRUCTION_YEAR
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.OCCUPANTS_NUMBER)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.OUTSIDE_FACING_WALLS
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.CONSTRUCTION_YEAR)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.FLOOR
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.OUTSIDE_FACING_WALLS)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.HEATING
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.FLOOR)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.WARMING_FLUID
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.HEATING)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.INDIVIDUAL_INSULATION_WORK
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.WARMING_FLUID)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.VENTILATION
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.WARMING_FLUID)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.HEATER_REPLACEMENT
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.VENTILATION)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.HOT_WATER
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.COLD_WATER)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.HOT_WATER_FLUID
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.HOT_WATER)
-
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.HOT_WATER_EQUIPMENT
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.HOT_WATER_FLUID)
-      previousStep = profileTypeService.getPreviousFormStep(
-        ProfileTypeStepForm.COOKING_FLUID
-      )
-      expect(previousStep).toEqual(ProfileTypeStepForm.HOT_WATER_EQUIPMENT)
-      previousStep = profileTypeService.getPreviousFormStep(wrongNumber)
-      expect(previousStep).toEqual(ProfileTypeStepForm.HOUSING_TYPE)
-    })
-  })
-  describe('getAnswerForStep', () => {
-    it('shoud get the good answers in function of the current step', () => {
-      let answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.HOUSING_TYPE
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[0])
-      answers = ProfileTypeService.getAnswerForStep(ProfileTypeStepForm.AREA)
-      expect(answers).toEqual(mockProfileTypeAnswers[1])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.OCCUPANTS_NUMBER
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[2])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.CONSTRUCTION_YEAR
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[3])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.OUTSIDE_FACING_WALLS
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[4])
-      answers = ProfileTypeService.getAnswerForStep(ProfileTypeStepForm.FLOOR)
-      expect(answers).toEqual(mockProfileTypeAnswers[5])
-      answers = ProfileTypeService.getAnswerForStep(ProfileTypeStepForm.HEATING)
-      expect(answers).toEqual(mockProfileTypeAnswers[6])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.WARMING_FLUID
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[7])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.INDIVIDUAL_INSULATION_WORK
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[8])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.VENTILATION
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[9])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.HEATER_REPLACEMENT
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[10])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.COLD_WATER
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[11])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.HOT_WATER
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[12])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.HOT_WATER_FLUID
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[13])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.HOT_WATER_EQUIPMENT
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[14])
-      answers = ProfileTypeService.getAnswerForStep(
-        ProfileTypeStepForm.COOKING_FLUID
-      )
-      expect(answers).toEqual(mockProfileTypeAnswers[15])
-      answers = ProfileTypeService.getAnswerForStep(wrongNumber)
-      expect(answers).toEqual(mockProfileTypeAnswers[16])
-    })
-  })
-  describe('checkConsistency', () => {
-    it('shoud return consistent profile for individual house', () => {
-      const mockProfile = {
-        ...mockProfileType1,
-        housingType: HousingType.INDIVIDUAL_HOUSE,
-      }
-      jest
-        .spyOn(DateTime, 'local')
-        .mockReturnValueOnce(
-          DateTime.fromISO('2021-01-01T00:00:00.000Z', { zone: 'utc' })
-        )
-
-      const expectedResult = {
-        ...mockProfile,
-        floor: Floor.NOT_APPLICABLE,
-        heating: IndividualOrCollective.INDIVIDUAL,
-        coldWater: IndividualOrCollective.INDIVIDUAL,
-        hotWater: IndividualOrCollective.INDIVIDUAL,
-      }
-      const result = ProfileTypeService.checkConsistency(mockProfile)
-      expect(result).toEqual(expectedResult)
-    })
-    it('shoud return consistent profile for appartment', () => {
-      const mockProfile = mockProfileType1
-      jest
-        .spyOn(DateTime, 'local')
-        .mockReturnValueOnce(
-          DateTime.fromISO('2021-01-01T00:00:00.000Z', { zone: 'utc' })
-        )
-
-      const expectedResult = {
-        ...mockProfile,
-        warmingFluid: null,
-        individualInsulationWork: [],
-        facilitiesInstallation: [],
-        hotWaterFluid: null,
-        hotWaterEquipment: HotWaterEquipment.OTHER,
-      }
-      const result = ProfileTypeService.checkConsistency(mockProfile)
-      expect(result).toEqual(expectedResult)
-    })
-  })
-  describe('getDjU', () => {
-    it('shoud return default dju', async () => {
-      const result = await profileTypeService.fetchDJU(2)
-      expect(result).toEqual(363)
-    })
-  })
-})
+import {
+  Floor,
+  HotWaterEquipment,
+  HousingType,
+  IndividualInsulationWork,
+  IndividualOrCollective,
+  ProfileTypeStepForm,
+  ThreeChoicesAnswer,
+} from 'enum/profileType.enum'
+import { ProfileType } from 'models/profileType.model'
+import {
+  mockCorrectedConsumption,
+  mockEstimatedConsumption,
+  mockMonthColdWaterConsumption,
+  mockMonthConsumption,
+  mockMonthConsumption1,
+  mockMonthConsumption2,
+  mockMonthCookingConsumption,
+  mockMonthElectricSpecificConsumption,
+  mockMonthEcsConsumption1Solar,
+  mockMonthEcsConsumptionOther,
+  mockMonthEcsConsumptionThermo,
+  mockProfileType,
+  mockProfileType1,
+  mockProfileType2,
+  mockTestProfile1,
+  mockTestProfile2,
+  mockTestProfile3,
+  mockwaterRawNeeds,
+  mockWaterSpreadNeeds,
+  mockMonthlyForecastJanuaryTestProfile1,
+  mockMonthlyForecastJanuaryTestProfile2,
+  mockMonthlyForecastJanuaryTestProfile3,
+  mockProfileTypeAnswers,
+  mockMonthlyForecastJanuaryTest1WithFullArrays,
+} from '../../tests/__mocks__/profileType.mock'
+import ProfileTypeService from './profileType.service'
+import mockClient from '../../tests/__mocks__/client'
+import { DateTime } from 'luxon'
+
+const wrongNumber = 99999
+describe('ProfileType service', () => {
+  const profileTypeService = new ProfileTypeService(mockProfileType, mockClient)
+
+  describe('calculateWarmingEstimatedConsumption', () => {
+    it('shoud calculate the Warming Estimated Consumption', () => {
+      const estimatedConsumption = profileTypeService.calculateWarmingEstimatedConsumption()
+      expect(estimatedConsumption).toEqual(mockEstimatedConsumption)
+    })
+
+    it('shoud calculate the Warming Corrected Consumption', () => {
+      const correctedConsumption = profileTypeService.calculateWarmingCorrectedConsumption(
+        mockEstimatedConsumption
+      )
+      expect(correctedConsumption).toEqual(mockCorrectedConsumption)
+    })
+    it('shoud calculate the Warming Month Consumption', async () => {
+      const monthConsumption = await profileTypeService.calculateWarmingMonthConsumption(
+        mockCorrectedConsumption,
+        3
+      )
+      expect(monthConsumption).toEqual(mockMonthConsumption)
+    })
+    it('shoud get the heating consumption', async () => {
+      const monthConsumption = await profileTypeService.getMonthHeating(3)
+      expect(monthConsumption).toEqual(mockMonthConsumption)
+    })
+  })
+  describe('shoud get the heating consumption for a flat with collective heating', () => {
+    const _profileTypeService = new ProfileTypeService(
+      mockProfileType1,
+      mockClient
+    )
+    it('shoud get the heating consumption', async () => {
+      const monthConsumption = await _profileTypeService.getMonthHeating(2)
+      expect(monthConsumption).toEqual(mockMonthConsumption1)
+    })
+  })
+  describe('shoud get the heating consumption for a house with individual heating, facilities, installation and individual work', () => {
+    const _profileTypeService = new ProfileTypeService(
+      mockProfileType2,
+      mockClient
+    )
+    it('shoud get the heating consumption', async () => {
+      const monthConsumption = await _profileTypeService.getMonthHeating(1)
+      expect(monthConsumption).toEqual(mockMonthConsumption2)
+    })
+  })
+  describe('calculateMonthWaterRawNeeds', () => {
+    it('shoud calculate the water raw needs consumption by month', () => {
+      const waterRawNeeds = profileTypeService.calculateMonthWaterRawNeeds(
+        mockProfileType,
+        1
+      )
+      expect(waterRawNeeds).toEqual(mockwaterRawNeeds)
+    })
+
+    it('shoud calculate the water spread needs Consumption', () => {
+      const waterSpreadNeeds = profileTypeService.calculateSpreadNeeds(
+        mockProfileType,
+        1
+      )
+      expect(waterSpreadNeeds).toEqual(mockWaterSpreadNeeds)
+    })
+    it('shoud calculate the total ecs consumption by month if profileType.hotWaterEquipment === "solar"', () => {
+      const monthEcsConsumption = profileTypeService.calculateTotalConsumption(
+        mockWaterSpreadNeeds,
+        mockProfileType1,
+        1
+      )
+      expect(monthEcsConsumption).toEqual(mockMonthEcsConsumption1Solar)
+    })
+    it('shoud calculate the total ecs consumption by month if profileType.hotWaterEquipment === "other"', () => {
+      const mockProfileTypeWithOther = { ...mockProfileType }
+      mockProfileTypeWithOther.hotWaterEquipment = HotWaterEquipment.OTHER
+      const monthEcsConsumption = profileTypeService.calculateTotalConsumption(
+        mockWaterSpreadNeeds,
+        mockProfileTypeWithOther,
+        1
+      )
+      expect(monthEcsConsumption).toEqual(mockMonthEcsConsumptionOther)
+    })
+    it('shoud get the ECS consumption if profileType.hotWaterEquipment === "thermodynamic"', () => {
+      const mockProfileTypeWithOther = { ...mockProfileType }
+      mockProfileTypeWithOther.hotWaterEquipment =
+        HotWaterEquipment.THERMODYNAMIC
+      const monthConsumption = profileTypeService.getMonthEcs(1)
+      expect(monthConsumption).toEqual(mockMonthEcsConsumptionThermo)
+    })
+
+    describe('shoud get the month cooking consumption', () => {
+      it('shoud get the month cooking consumption', () => {
+        const _profileTypeService = new ProfileTypeService(
+          mockProfileType,
+          mockClient
+        )
+
+        const monthCookingConsumption = _profileTypeService.getMonthCookingConsumption(
+          1
+        )
+        expect(monthCookingConsumption).toEqual(mockMonthCookingConsumption)
+      })
+    })
+    describe('shoud get the month electric specific consumption', () => {
+      it('shoud get the electric specific consumption', () => {
+        const _profileTypeService = new ProfileTypeService(
+          mockProfileType,
+          mockClient
+        )
+
+        const monthElectricSpecificConsumption = _profileTypeService.getMonthElectricSpecificConsumption(
+          1
+        )
+        expect(monthElectricSpecificConsumption).toEqual(
+          mockMonthElectricSpecificConsumption
+        )
+      })
+    })
+    describe('shoud get the month cold water consumption', () => {
+      it('shoud get the cold water consumption', () => {
+        const _profileTypeService = new ProfileTypeService(
+          mockProfileType,
+          mockClient
+        )
+        const monthColdWaterConsumption = _profileTypeService.getMonthColdWaterConsumption(
+          1
+        )
+        expect(monthColdWaterConsumption).toEqual(mockMonthColdWaterConsumption)
+      })
+    })
+  })
+  describe('shoud get the monthly Forecast', () => {
+    // For month of january
+    const profileTypeService1 = new ProfileTypeService(
+      mockTestProfile1,
+      mockClient
+    )
+    it('shoud get the monthly forecast for test profile 1', async () => {
+      const monthlyForecast = await profileTypeService1.getMonthlyForecast(1)
+      expect(monthlyForecast).toEqual(mockMonthlyForecastJanuaryTestProfile1)
+    })
+    const profileTypeService2 = new ProfileTypeService(
+      mockTestProfile2,
+      mockClient
+    )
+    it('shoud get the monthly forecast for test profile 2', async () => {
+      const monthlyForecast = await profileTypeService2.getMonthlyForecast(1)
+      expect(monthlyForecast).toEqual(mockMonthlyForecastJanuaryTestProfile2)
+    })
+    const profileTypeService3 = new ProfileTypeService(
+      mockTestProfile3,
+      mockClient
+    )
+    it('shoud get the monthly forecast for test profile 3', async () => {
+      const monthlyForecast = await profileTypeService3.getMonthlyForecast(1)
+      expect(monthlyForecast).toEqual(mockMonthlyForecastJanuaryTestProfile3)
+    })
+    it('shoud get the monthly forecast for test profile 1 with wall and roof and window insulation', async () => {
+      const mockProfileWithThreeInsulation: ProfileType = {
+        ...mockTestProfile1,
+        individualInsulationWork: [
+          IndividualInsulationWork.ROOF_INSULATION,
+          IndividualInsulationWork.WALL_INSULATION,
+          IndividualInsulationWork.WINDOW_REPLACEMENT,
+        ],
+        hasInstalledVentilation: ThreeChoicesAnswer.YES,
+        hasReplacedHeater: ThreeChoicesAnswer.YES,
+      }
+      const _profileTypeService = new ProfileTypeService(
+        mockProfileWithThreeInsulation,
+        mockClient
+      )
+      const monthlyForecast = await _profileTypeService.getMonthlyForecast(1)
+      expect(monthlyForecast).toEqual(
+        mockMonthlyForecastJanuaryTest1WithFullArrays
+      )
+    })
+  })
+  describe('getNextFormStep', () => {
+    it('shoud get the next step in function of the current step', () => {
+      let nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.HOUSING_TYPE
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.AREA)
+      nextStep = profileTypeService.getNextFormStep(ProfileTypeStepForm.AREA)
+      expect(nextStep).toEqual(ProfileTypeStepForm.OCCUPANTS_NUMBER)
+
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.OCCUPANTS_NUMBER
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.CONSTRUCTION_YEAR)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.CONSTRUCTION_YEAR
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.OUTSIDE_FACING_WALLS)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.OUTSIDE_FACING_WALLS
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.FLOOR)
+      nextStep = profileTypeService.getNextFormStep(ProfileTypeStepForm.FLOOR)
+      expect(nextStep).toEqual(ProfileTypeStepForm.HEATING)
+      nextStep = profileTypeService.getNextFormStep(ProfileTypeStepForm.HEATING)
+      expect(nextStep).toEqual(ProfileTypeStepForm.WARMING_FLUID)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.WARMING_FLUID
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.VENTILATION)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.VENTILATION
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.HEATER_REPLACEMENT)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.HEATER_REPLACEMENT
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.COLD_WATER)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.COLD_WATER
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.HOT_WATER)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.HOT_WATER
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.HOT_WATER_FLUID)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.HOT_WATER_FLUID
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.HOT_WATER_EQUIPMENT)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.HOT_WATER_EQUIPMENT
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.COOKING_FLUID)
+      nextStep = profileTypeService.getNextFormStep(
+        ProfileTypeStepForm.COOKING_FLUID
+      )
+      expect(nextStep).toEqual(ProfileTypeStepForm.END)
+      nextStep = profileTypeService.getNextFormStep(wrongNumber)
+      expect(nextStep).toEqual(ProfileTypeStepForm.HOUSING_TYPE)
+    })
+  })
+  describe('getPreviousFormStep', () => {
+    it('shoud get the previus step in function of the current step', () => {
+      let previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.AREA
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.HOUSING_TYPE)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.OCCUPANTS_NUMBER
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.AREA)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.CONSTRUCTION_YEAR
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.OCCUPANTS_NUMBER)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.OUTSIDE_FACING_WALLS
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.CONSTRUCTION_YEAR)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.FLOOR
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.OUTSIDE_FACING_WALLS)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.HEATING
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.FLOOR)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.WARMING_FLUID
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.HEATING)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.INDIVIDUAL_INSULATION_WORK
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.WARMING_FLUID)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.VENTILATION
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.WARMING_FLUID)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.HEATER_REPLACEMENT
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.VENTILATION)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.HOT_WATER
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.COLD_WATER)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.HOT_WATER_FLUID
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.HOT_WATER)
+
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.HOT_WATER_EQUIPMENT
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.HOT_WATER_FLUID)
+      previousStep = profileTypeService.getPreviousFormStep(
+        ProfileTypeStepForm.COOKING_FLUID
+      )
+      expect(previousStep).toEqual(ProfileTypeStepForm.HOT_WATER_EQUIPMENT)
+      previousStep = profileTypeService.getPreviousFormStep(wrongNumber)
+      expect(previousStep).toEqual(ProfileTypeStepForm.HOUSING_TYPE)
+    })
+  })
+  describe('getAnswerForStep', () => {
+    it('shoud get the good answers in function of the current step', () => {
+      let answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.HOUSING_TYPE
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[0])
+      answers = ProfileTypeService.getAnswerForStep(ProfileTypeStepForm.AREA)
+      expect(answers).toEqual(mockProfileTypeAnswers[1])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.OCCUPANTS_NUMBER
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[2])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.CONSTRUCTION_YEAR
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[3])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.OUTSIDE_FACING_WALLS
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[4])
+      answers = ProfileTypeService.getAnswerForStep(ProfileTypeStepForm.FLOOR)
+      expect(answers).toEqual(mockProfileTypeAnswers[5])
+      answers = ProfileTypeService.getAnswerForStep(ProfileTypeStepForm.HEATING)
+      expect(answers).toEqual(mockProfileTypeAnswers[6])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.WARMING_FLUID
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[7])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.INDIVIDUAL_INSULATION_WORK
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[8])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.VENTILATION
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[9])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.HEATER_REPLACEMENT
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[10])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.COLD_WATER
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[11])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.HOT_WATER
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[12])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.HOT_WATER_FLUID
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[13])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.HOT_WATER_EQUIPMENT
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[14])
+      answers = ProfileTypeService.getAnswerForStep(
+        ProfileTypeStepForm.COOKING_FLUID
+      )
+      expect(answers).toEqual(mockProfileTypeAnswers[15])
+      answers = ProfileTypeService.getAnswerForStep(wrongNumber)
+      expect(answers).toEqual(mockProfileTypeAnswers[16])
+    })
+  })
+  describe('checkConsistency', () => {
+    it('shoud return consistent profile for individual house', () => {
+      const mockProfile = {
+        ...mockProfileType1,
+        housingType: HousingType.INDIVIDUAL_HOUSE,
+      }
+      jest
+        .spyOn(DateTime, 'local')
+        .mockReturnValueOnce(
+          DateTime.fromISO('2021-01-01T00:00:00.000Z', { zone: 'utc' })
+        )
+
+      const expectedResult = {
+        ...mockProfile,
+        floor: Floor.NOT_APPLICABLE,
+        heating: IndividualOrCollective.INDIVIDUAL,
+        coldWater: IndividualOrCollective.INDIVIDUAL,
+        hotWater: IndividualOrCollective.INDIVIDUAL,
+      }
+      const result = ProfileTypeService.checkConsistency(mockProfile)
+      expect(result).toEqual(expectedResult)
+    })
+    it('shoud return consistent profile for appartment', () => {
+      const mockProfile = mockProfileType1
+      jest
+        .spyOn(DateTime, 'local')
+        .mockReturnValueOnce(
+          DateTime.fromISO('2021-01-01T00:00:00.000Z', { zone: 'utc' })
+        )
+
+      const expectedResult = {
+        ...mockProfile,
+        warmingFluid: null,
+        individualInsulationWork: [],
+        facilitiesInstallation: [],
+        hotWaterFluid: null,
+        hotWaterEquipment: HotWaterEquipment.OTHER,
+      }
+      const result = ProfileTypeService.checkConsistency(mockProfile)
+      expect(result).toEqual(expectedResult)
+    })
+  })
+  describe('getDjU', () => {
+    it('shoud return default dju', async () => {
+      const result = await profileTypeService.fetchDJU(2)
+      expect(result).toEqual(363)
+    })
+  })
+})
diff --git a/src/services/profileType.service.ts b/src/services/profileType.service.ts
index 4f821ec4a..375220292 100644
--- a/src/services/profileType.service.ts
+++ b/src/services/profileType.service.ts
@@ -25,7 +25,7 @@ import {
 } from 'enum/profileType.enum'
 import { FluidType } from 'enum/fluid.enum'
 import ConverterService from './converter.service'
-import { Client, Q, QueryDefinition, QueryResult } from 'cozy-client'
+import { Client } from 'cozy-client'
 
 export default class ProfileTypeService {
   private readonly profileType: ProfileType
diff --git a/src/services/profileTypeForm.ts b/src/services/profileTypeForm.ts
index ab91f4799..52cce991f 100644
--- a/src/services/profileTypeForm.ts
+++ b/src/services/profileTypeForm.ts
@@ -5,7 +5,6 @@ import {
   ProfileTypeStepForm,
 } from 'enum/profileType.enum'
 import { ProfileType } from 'models'
-import { ProfileTypeActionTypes } from 'store/profileType/profileType.actions'
 
 export default class ProfileTypeFormService {
   private readonly profileType: ProfileType
diff --git a/src/store/profileType/profileType.reducer.ts b/src/store/profileType/profileType.reducer.ts
index f26550938..82e676205 100644
--- a/src/store/profileType/profileType.reducer.ts
+++ b/src/store/profileType/profileType.reducer.ts
@@ -47,10 +47,6 @@ export const profileTypeReducer: Reducer<ProfileType> = (
 ): ProfileType => {
   switch (action.type) {
     case UPDATE_PROFILETYPE:
-      return {
-        ...state,
-        ...action.payload,
-      }
     case CREATE_NEW_PROFILETYPE:
       return {
         ...state,
-- 
GitLab