Skip to content
Snippets Groups Projects
Commit 33531622 authored by Birk Øvstetun Narvhus's avatar Birk Øvstetun Narvhus
Browse files

added tests for services

parent a8778006
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,8 @@ import lombok.AllArgsConstructor; ...@@ -4,6 +4,8 @@ import lombok.AllArgsConstructor;
import ntnu.idatt2016.v233.SmartMat.dto.request.ProductRequest; import ntnu.idatt2016.v233.SmartMat.dto.request.ProductRequest;
import ntnu.idatt2016.v233.SmartMat.entity.product.Product; import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
import ntnu.idatt2016.v233.SmartMat.service.product.ProductService; import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
import ntnu.idatt2016.v233.SmartMat.util.CategoryUtil;
import ntnu.idatt2016.v233.SmartMat.util.ProductUtil;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -38,6 +40,11 @@ public class ProductController { ...@@ -38,6 +40,11 @@ public class ProductController {
.url(productRequest.image()) .url(productRequest.image())
.build(); .build();
CategoryUtil.defineCategory(product.getName(),product.getDescription());
if(productService.getProductById(productRequest.ean()).isPresent()) if(productService.getProductById(productRequest.ean()).isPresent())
return ResponseEntity.status(409).build(); return ResponseEntity.status(409).build();
......
...@@ -51,7 +51,7 @@ public class FridgeProductAssoService { ...@@ -51,7 +51,7 @@ public class FridgeProductAssoService {
* Deletes a fridge product association * Deletes a fridge product association
* @param fridgeProductAsso the fridge product association to delete * @param fridgeProductAsso the fridge product association to delete
*/ */
public void deleteFridgeProductAsso(FridgeProductAsso fridgeProductAsso) { public boolean deleteFridgeProductAsso(FridgeProductAsso fridgeProductAsso) {
fridgeProductAsso.getFridgeId().getProducts().remove(fridgeProductAsso); fridgeProductAsso.getFridgeId().getProducts().remove(fridgeProductAsso);
fridgeProductAsso.getEan().getFridges().remove(fridgeProductAsso); fridgeProductAsso.getEan().getFridges().remove(fridgeProductAsso);
fridgeProductAssoRepository.delete(fridgeProductAsso); fridgeProductAssoRepository.delete(fridgeProductAsso);
...@@ -59,5 +59,7 @@ public class FridgeProductAssoService { ...@@ -59,5 +59,7 @@ public class FridgeProductAssoService {
fridgeRepository.save(fridgeProductAsso.getFridgeId()); fridgeRepository.save(fridgeProductAsso.getFridgeId());
productRepository.save(fridgeProductAsso.getEan()); productRepository.save(fridgeProductAsso.getEan());
return true;
} }
} }
...@@ -91,7 +91,6 @@ public class FridgeService { ...@@ -91,7 +91,6 @@ public class FridgeService {
Fridge fridge = fridgeRepository.findByGroupGroupId(groupId).orElseThrow(() -> new IllegalArgumentException("Fridge does not exist")); Fridge fridge = fridgeRepository.findByGroupGroupId(groupId).orElseThrow(() -> new IllegalArgumentException("Fridge does not exist"));
if (product.isPresent()) { if (product.isPresent()) {
Product productToRemove = product.get(); Product productToRemove = product.get();
if (!fridge.getProducts().contains( if (!fridge.getProducts().contains(
......
package ntnu.idatt2016.v233.SmartMat.service.group;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import java.sql.Date;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Optional;
import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
import ntnu.idatt2016.v233.SmartMat.service.group.FridgeProductAssoService;
import ntnu.idatt2016.v233.SmartMat.service.group.FridgeService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository;
import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
public class FridgeServiceTest {
@Mock
private FridgeRepository fridgeRepository;
@Mock
private ProductService productService;
@Mock
private FridgeProductAssoService fridgeProductAssoService;
@Mock
private GroupRepository groupRepository;
@InjectMocks
private FridgeService fridgeService;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
}
@Test
public void testAddProductToFridge() {
// Arrange
long groupId = 1L;
long ean = 12345L;
Optional<Product> product = Optional.of(Product.builder()
.ean(ean)
.name("Test Product")
.build());
Fridge fridge = new Fridge();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
fridge.setGroup(group);
group.setFridge(fridge);
when(productService.getProductById(ean)).thenReturn(product);
when(fridgeRepository.findByGroupGroupId(groupId)).thenReturn(Optional.of(fridge));
when(fridgeProductAssoService.createFridgeProductAsso(any(Fridge.class), any(Product.class), any(Date.class))).thenReturn(new FridgeProductAsso());
// Act
boolean result = fridgeService.addProductToFridge(groupId, ean);
verify(fridgeProductAssoService).createFridgeProductAsso(any(Fridge.class), any(Product.class), any(Date.class));
// Assert
assertTrue(result);
}
@Test
public void testAddGroupToFridge() {
// Arrange
long fridgeId = 1L;
long groupId = 1L;
Optional<Fridge> fridge = Optional.of(new Fridge());
Optional<Group> group = Optional.of(new Group());
when(fridgeRepository.findById(fridgeId)).thenReturn(fridge);
when(groupRepository.findByGroupId(groupId)).thenReturn(group);
// Act
fridgeService.addGroupToFridge(fridgeId, groupId);
// Assert
assertEquals(fridge.get().getGroup(), group.get());
assertEquals(group.get().getFridge(), fridge.get());
}
}
package ntnu.idatt2016.v233.SmartMat.service.group; package ntnu.idatt2016.v233.SmartMat.service.group;
import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository;
import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks; import org.mockito.InjectMocks;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.Collections; import java.util.List;
import java.util.Optional; import java.util.Optional;
import ntnu.idatt2016.v233.SmartMat.entity.group.Group; import static org.junit.jupiter.api.Assertions.assertEquals;
import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
import ntnu.idatt2016.v233.SmartMat.util.GroupUtil;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
import static org.junit.jupiter.api.Assertions.*;
class GroupServiceTest { public class GroupServiceTest {
@InjectMocks
private GroupService groupService;
@Mock @Mock
private GroupRepository groupRepository; private GroupRepository groupRepository;
@Mock
private FridgeRepository fridgeRepository;
@InjectMocks
private GroupService groupService;
@BeforeEach @BeforeEach
void setUp() { void setUp() {
MockitoAnnotations.openMocks(this); MockitoAnnotations.openMocks(this);
...@@ -31,62 +34,61 @@ class GroupServiceTest { ...@@ -31,62 +34,61 @@ class GroupServiceTest {
@Test @Test
void testGetGroupByName() { void testGetGroupByName() {
// Arrange
String groupName = "Test Group"; String groupName = "Test Group";
Group group = new Group(); Group group = new Group();
group.setGroupName(groupName); group.setGroupName(groupName);
when(groupRepository.findByGroupName(groupName)).thenReturn(Optional.of(group)); when(groupRepository.findByGroupName(groupName)).thenReturn(Optional.of(group));
// Act
Optional<Group> result = groupService.getGroupByName(groupName); Optional<Group> result = groupService.getGroupByName(groupName);
assertTrue(result.isPresent()); // Assert
assertEquals(groupName, result.get().getGroupName()); assertEquals(group, result.get());
} verify(groupRepository).findByGroupName(groupName);
@Test
void testGetGroupById() {
long groupId = 1L;
Group group = new Group();
group.setGroupId(groupId);
when(groupRepository.findById(groupId)).thenReturn(Optional.of(group));
Optional<Group> result = groupService.getGroupById(groupId);
assertTrue(result.isPresent());
assertEquals(groupId, result.get().getGroupId());
} }
@Test @Test
void testCreateGroup() { void testCreateGroup() {
String groupName = "New Group"; // Arrange
String groupName = "Test Group";
Group group = new Group(); Group group = new Group();
group.setGroupName(groupName); group.setGroupName(groupName);
when(groupRepository.findByGroupName(groupName)).thenReturn(Optional.empty()); when(groupRepository.findByGroupName(groupName)).thenReturn(Optional.empty());
when(groupRepository.findAllLinkCode()).thenReturn(Collections.emptyList()); when(groupRepository.findAllLinkCode()).thenReturn(List.of());
when(groupRepository.save(any(Group.class))).thenAnswer(invocation -> invocation.getArgument(0)); when(groupRepository.save(group)).thenReturn(group);
Group createdGroup = groupService.createGroup(group); // Act
Group result = groupService.createGroup(group);
assertEquals(groupName, createdGroup.getGroupName()); // Assert
assertNotNull(createdGroup.getLinkCode()); assertEquals(group, result);
verify(groupRepository).findByGroupName(groupName);
verify(groupRepository).findAllLinkCode();
verify(groupRepository).save(group);
} }
@Test @Test
void testGetLevelByGroupId() { void testAddFridgeToGroup() {
long groupId = 1L; // Arrange
long level = 3L; long fridgeId = 1L;
long groupId = 2L;
Fridge fridge = new Fridge();
Group group = new Group(); Group group = new Group();
group.setGroupId(groupId); when(fridgeRepository.findById(fridgeId)).thenReturn(Optional.of(fridge));
group.setLevel(level); when(groupRepository.findByGroupId(groupId)).thenReturn(Optional.of(group));
when(groupRepository.save(group)).thenReturn(group);
when(groupRepository.findById(groupId)).thenReturn(Optional.of(group)); when(fridgeRepository.save(fridge)).thenReturn(fridge);
when(groupRepository.getLevelByGroupId(groupId)).thenReturn(Optional.of(level));
// Act
Optional<Long> result = groupService.getLevelByGroupId(groupId); groupService.addFridgeToGroup(fridgeId, groupId);
assertTrue(result.isPresent()); // Assert
assertEquals(level, result.get()); assertEquals(group, fridge.getGroup());
assertEquals(fridge, group.getFridge());
verify(fridgeRepository).findById(fridgeId);
verify(groupRepository).findByGroupId(groupId);
verify(groupRepository).save(group);
verify(fridgeRepository).save(fridge);
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment