From 32eb67aa765b2813fffa73166bf5d9c7d18b6f72 Mon Sep 17 00:00:00 2001
From: Yoan Vallet <yoan.vallet@gmail.com>
Date: Sun, 15 Nov 2020 03:46:00 +0100
Subject: [PATCH] feat: review fluid service tests

---
 src/services/fluid.service.spec.ts | 91 +++++++++++++++++++++++++++++-
 1 file changed, 90 insertions(+), 1 deletion(-)

diff --git a/src/services/fluid.service.spec.ts b/src/services/fluid.service.spec.ts
index e8e848c60..1b856e7b9 100644
--- a/src/services/fluid.service.spec.ts
+++ b/src/services/fluid.service.spec.ts
@@ -49,6 +49,13 @@ jest.mock('./consumption.service', () => {
 describe('FLuid service', () => {
   const fluidService = new FluidService(mockClient)
 
+  beforeEach(() => {
+    mockGetAccountByType.mockReset()
+    mockGetTrigger.mockReset()
+    mockFetchTriggerState.mockReset()
+    mockFetchAllLastDateData.mockReset()
+  })
+
   describe('getFluidStatus method', () => {
     it('shoud return fluid status for all fluids', async () => {
       const mockLastDataDates: (DateTime | null)[] = [
@@ -91,7 +98,89 @@ describe('FLuid service', () => {
       expect(result).toEqual(mockResult)
     })
 
-    it('shoud return fluid status with null status', async () => {
+    it('shoud return fluid status with null status when no accounts', async () => {
+      const mockLastDataDates: (DateTime | null)[] = [
+        DateTime.local(),
+        DateTime.local(),
+        DateTime.local(),
+      ]
+      const mockResult: FluidStatus[] = [
+        {
+          fluidType: FluidType.ELECTRICITY,
+          status: null,
+          lastDataDate: mockLastDataDates[FluidType.ELECTRICITY],
+        },
+        {
+          fluidType: FluidType.WATER,
+          status: null,
+          lastDataDate: mockLastDataDates[FluidType.WATER],
+        },
+        {
+          fluidType: FluidType.GAS,
+          status: null,
+          lastDataDate: mockLastDataDates[FluidType.GAS],
+        },
+      ]
+      mockGetAccountByType
+        .mockResolvedValueOnce(null)
+        .mockResolvedValueOnce(null)
+        .mockResolvedValueOnce(null)
+      mockGetKonnector
+        .mockResolvedValueOnce(konnectorsData[0])
+        .mockResolvedValueOnce(konnectorsData[1])
+        .mockResolvedValueOnce(konnectorsData[2])
+      mockGetTrigger
+        .mockResolvedValueOnce(triggersData[0])
+        .mockResolvedValueOnce(triggersData[1])
+        .mockResolvedValueOnce(triggersData[2])
+      mockFetchTriggerState.mockResolvedValue(triggerStateData)
+      mockFetchAllLastDateData.mockResolvedValue(mockLastDataDates)
+      const result: FluidStatus[] = await fluidService.getFluidStatus()
+      expect(result).toEqual(mockResult)
+    })
+
+    it('shoud return fluid status with null status when no konnector', async () => {
+      const mockLastDataDates: (DateTime | null)[] = [
+        DateTime.local(),
+        DateTime.local(),
+        DateTime.local(),
+      ]
+      const mockResult: FluidStatus[] = [
+        {
+          fluidType: FluidType.ELECTRICITY,
+          status: null,
+          lastDataDate: mockLastDataDates[FluidType.ELECTRICITY],
+        },
+        {
+          fluidType: FluidType.WATER,
+          status: null,
+          lastDataDate: mockLastDataDates[FluidType.WATER],
+        },
+        {
+          fluidType: FluidType.GAS,
+          status: null,
+          lastDataDate: mockLastDataDates[FluidType.GAS],
+        },
+      ]
+      mockGetAccountByType
+        .mockResolvedValueOnce(accountsData[0])
+        .mockResolvedValueOnce(accountsData[1])
+        .mockResolvedValueOnce(accountsData[2])
+      mockGetKonnector
+        .mockResolvedValueOnce(null)
+        .mockResolvedValueOnce(null)
+        .mockResolvedValueOnce(null)
+      mockGetTrigger
+        .mockResolvedValueOnce(triggersData[0])
+        .mockResolvedValueOnce(triggersData[1])
+        .mockResolvedValueOnce(triggersData[2])
+      mockFetchTriggerState.mockResolvedValue(triggerStateData)
+      mockFetchAllLastDateData.mockResolvedValue(mockLastDataDates)
+      const result: FluidStatus[] = await fluidService.getFluidStatus()
+      expect(result).toEqual(mockResult)
+    })
+
+    it('shoud return fluid status with null status when no triggers', async () => {
       const mockLastDataDates: (DateTime | null)[] = [
         DateTime.local(),
         DateTime.local(),
-- 
GitLab