From a41b716ebb50ae5be8657f199cf1fa3c48556fe6 Mon Sep 17 00:00:00 2001
From: Bastien DUMONT <bdumont@grandlyon.com>
Date: Wed, 29 Mar 2023 07:16:56 +0000
Subject: [PATCH] chore(sonar): fix some critical smells

---
 .../Ecogesture/EcogestureEmptyList.spec.tsx   |  5 +-
 .../Ecogesture/EcogestureList.spec.tsx        |  2 +-
 .../EcogestureEmptyList.spec.tsx.snap         |  2 +-
 .../EcogestureList.spec.tsx.snap              |  4 +-
 src/utils/picto.ts                            | 58 ++++++++-----------
 5 files changed, 30 insertions(+), 41 deletions(-)

diff --git a/src/components/Ecogesture/EcogestureEmptyList.spec.tsx b/src/components/Ecogesture/EcogestureEmptyList.spec.tsx
index 1ee33bdda..09570fb09 100644
--- a/src/components/Ecogesture/EcogestureEmptyList.spec.tsx
+++ b/src/components/Ecogesture/EcogestureEmptyList.spec.tsx
@@ -17,14 +17,15 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
     }),
   }
 })
-const mockedNavigate = jest.fn()
 jest.mock('react-router-dom', () => ({
   ...jest.requireActual('react-router-dom'),
   useNavigate: () => mockedNavigate,
 }))
 const mockStore = configureStore([])
+const mockedNavigate = jest.fn()
 const mockChangeTab = jest.fn()
-const mockHandleClick = () => {}
+const mockHandleClick = jest.fn()
+
 describe('EcogestureEmptyList component', () => {
   it('should be rendered correctly', () => {
     const store = mockStore({
diff --git a/src/components/Ecogesture/EcogestureList.spec.tsx b/src/components/Ecogesture/EcogestureList.spec.tsx
index 6d0e6b701..0ea4f27a9 100644
--- a/src/components/Ecogesture/EcogestureList.spec.tsx
+++ b/src/components/Ecogesture/EcogestureList.spec.tsx
@@ -23,7 +23,7 @@ jest.mock('cozy-ui/transpiled/react/I18n', () => {
 jest.mock('components/Ecogesture/EcogestureCard', () => 'mock-ecogesturecard')
 
 const mockStore = configureStore([])
-const mockHandleReinit = () => {}
+const mockHandleReinit = jest.fn()
 
 describe('EcogesturesList component', () => {
   it('should be rendered correctly', async () => {
diff --git a/src/components/Ecogesture/__snapshots__/EcogestureEmptyList.spec.tsx.snap b/src/components/Ecogesture/__snapshots__/EcogestureEmptyList.spec.tsx.snap
index ac78b2c1e..80b817f03 100644
--- a/src/components/Ecogesture/__snapshots__/EcogestureEmptyList.spec.tsx.snap
+++ b/src/components/Ecogesture/__snapshots__/EcogestureEmptyList.spec.tsx.snap
@@ -14,7 +14,7 @@ exports[`EcogestureEmptyList component should be rendered correctly 1`] = `
   }
 >
   <EcogestureEmptyList
-    handleReinitClick={[Function]}
+    handleReinitClick={[MockFunction]}
     isObjective={true}
     isSelectionDone={false}
     setTab={[MockFunction]}
diff --git a/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap b/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap
index 55fd93885..426846c35 100644
--- a/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap
+++ b/src/components/Ecogesture/__snapshots__/EcogestureList.spec.tsx.snap
@@ -46,7 +46,7 @@ exports[`EcogesturesList component should be rendered correctly 1`] = `
     >
       <EcogestureList
         displaySelection={false}
-        handleReinitClick={[Function]}
+        handleReinitClick={[MockFunction]}
         list={
           Array [
             Object {
@@ -1955,7 +1955,7 @@ exports[`EcogesturesList component should be rendered correctly 1`] = `
             />
             <button
               className="reinit-button"
-              onClick={[Function]}
+              onClick={[MockFunction]}
             >
               <span>
                 ecogesture.reinit
diff --git a/src/utils/picto.ts b/src/utils/picto.ts
index 7c093d39f..a5c2b78cf 100644
--- a/src/utils/picto.ts
+++ b/src/utils/picto.ts
@@ -27,7 +27,7 @@ import WaterIcon from '../assets/icons/visu/water.svg'
 import { FluidType } from '../enum/fluid.enum'
 
 /**
- * Return an icon corresponding to FuildType enum
+ * Return an icon corresponding to FluidType enum
  * @param type FluidType
  */
 export function getPicto(type: FluidType, small = false) {
@@ -45,7 +45,7 @@ export function getPicto(type: FluidType, small = false) {
   }
 }
 /**
- * Return an icon corresponding to add FuildType enum
+ * Return an icon corresponding to add FluidType enum
  * @param type FluidType
  */
 export function getAddPicto(type: FluidType) {
@@ -74,55 +74,43 @@ export function getParamPicto(type: FluidType) {
   }
 }
 
+const getIcon = (
+  active: boolean,
+  connected: boolean,
+  activeIcon: string,
+  inactiveIcon: string
+) => {
+  if (connected) {
+    return active ? activeIcon : inactiveIcon
+  } else {
+    return active ? DisconnectedActive : Disconnected
+  }
+}
+
 /**
- * Return an icon corresponding to FuildType enum
- * @param type FluidType
+ * Returns the appropriate icon for a given fluid type and connection status
  */
 export function getNavPicto(
-  type: FluidType,
+  fluidType: FluidType,
   active: boolean,
   connected: boolean
 ) {
-  switch (type) {
+  switch (fluidType) {
     case FluidType.ELECTRICITY:
-      return connected
-        ? active
-          ? ElecSmallIcon
-          : ElecUnactive
-        : active
-        ? DisconnectedActive
-        : Disconnected
+      return getIcon(active, connected, ElecSmallIcon, ElecUnactive)
     case FluidType.WATER:
-      return connected
-        ? active
-          ? WaterSmallIcon
-          : WaterUnactive
-        : active
-        ? DisconnectedActive
-        : Disconnected
+      return getIcon(active, connected, WaterSmallIcon, WaterUnactive)
     case FluidType.GAS:
-      return connected
-        ? active
-          ? GasSmallIcon
-          : GasUnactive
-        : active
-        ? DisconnectedActive
-        : Disconnected
+      return getIcon(active, connected, GasSmallIcon, GasUnactive)
     case FluidType.MULTIFLUID:
-      return connected
-        ? active
-          ? Multi
-          : MultiUnactive
-        : active
-        ? DisconnectedActive
-        : Disconnected
+      return getIcon(active, connected, Multi, MultiUnactive)
     default:
       return ElecIcon
   }
 }
 
 /**
- * Return an partner icon corresponding to FuildType enum
+ * Return an partner icon corresponding to FluidType enum
  * @param slug string
  * @param blackLogo boolean - define the color of the logo (black or white)
  */
-- 
GitLab