From 1c62f41189f9e96de64ac2004a173e1853690be9 Mon Sep 17 00:00:00 2001
From: Filip Bugos <xbugos@fi.muni.cz>
Date: Sun, 16 Apr 2023 20:32:33 +0200
Subject: [PATCH] feat: User service test 16/04/23

---
 .../fi/pa165/core/user/UserServiceTest.java   | 79 +++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java b/core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java
index 78a712f..efc8ffd 100644
--- a/core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java
+++ b/core/src/test/java/cz/muni/fi/pa165/core/user/UserServiceTest.java
@@ -2,15 +2,27 @@ package cz.muni.fi.pa165.core.user;
 
 import cz.muni.fi.pa165.core.company.Company;
 import cz.muni.fi.pa165.core.device.Device;
+import cz.muni.fi.pa165.core.house.House;
+import cz.muni.fi.pa165.core.house.HouseService;
+import cz.muni.fi.pa165.core.metrics.Metrics;
+import cz.muni.fi.pa165.core.metrics.MetricsService;
+import cz.muni.fi.pa165.core.smartmeter.SmartMeter;
+import cz.muni.fi.pa165.core.smartmeter.SmartMeterService;
+import cz.muni.fi.pa165.core.user.roles.HouseRole;
+import cz.muni.fi.pa165.core.user.roles.RoleService;
+import cz.muni.fi.pa165.model.dto.role.enums.HouseRoleEnum;
+import org.junit.Assert;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.mockito.InjectMocks;
 import org.mockito.Mock;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
 
+import java.time.LocalDateTime;
 import java.util.List;
 import java.util.Optional;
 
@@ -25,6 +37,18 @@ public class UserServiceTest {
     @InjectMocks
     private UserService userService;
 
+    @Mock
+    private MetricsService metricsService;
+
+    @Mock
+    private SmartMeterService smartMeterService;
+
+    @Mock
+    private HouseService houseService;
+
+    @Mock
+    private RoleService roleService;
+
     @Mock
     private UserRepository userReposiroyMock;
 
@@ -228,4 +252,59 @@ public class UserServiceTest {
 
         assertEquals(pageResult, result);
     }
+
+    @Test
+    void shouldReturnUserMonthConsumption() {
+        User user =
+                User.builder()
+                        .email("test@gmail.com")
+                        .firstName("lol")
+                        .lastName("lol")
+                        .username("lol")
+                        .password("lol")
+                        .userType(UserType.ADMIN)
+                        .build();
+        user.setId("6a9f853d-59ef-4636-9c0b-bbac44bfd7f4");
+        userService.create(user);
+
+        House house = House.builder()
+                .address("lol")
+                .city("lol")
+                .state("lol")
+                .zipcode("lol")
+                .build();
+        house.setId("b256ac78-dc47-11ed-afa1-0242ac120002");
+        houseService.create(house);
+
+        HouseRole role = HouseRole.builder()
+                .houseRole(HouseRoleEnum.Owner)
+                .house(house)
+                .build();
+        role.setUser(user);
+        roleService.create(role);
+
+        SmartMeter smartMeter = SmartMeter
+                .builder()
+                .house(house)
+                .build();
+        smartMeterService.create(smartMeter);
+
+        LocalDateTime date = LocalDateTime.of(2023,
+                1,15,0,0,0,0);
+
+        double consumptionSeed = 0;
+        Metrics metrics = Metrics.builder()
+                .consumptionKWH(consumptionSeed)
+                .timeStamp(date)
+                .smartMeter(smartMeter)
+                .build();
+        metricsService.create(metrics);
+
+        double consumption = userService.getConsumption(user.getId(), house.getId(),
+                LocalDateTime.of(2023, 1,1,0,0,0,0),
+                LocalDateTime.of(2023, 1,31,0,0,0,0));
+
+        assertEquals(consumptionSeed, consumption);
+
+    }
 }
-- 
GitLab