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

Merge branch 'test/271-group-entity-and-fridge-achivements-services-test' into 'main'

added test for update product in fridge and wast product in fridge

See merge request idatt2106-v23-03/backend!222
parents 4091cea0 8f57a56a
No related branches found
No related tags found
No related merge requests found
...@@ -27,8 +27,8 @@ import java.util.Optional; ...@@ -27,8 +27,8 @@ import java.util.Optional;
* Service for management of a group fridge * Service for management of a group fridge
* *
* @author Anders Austlid & Birk * @author Anders Austlid & Birk
* @version 1.2 * @version 2
* @since 26.04.2023 * @since 04.05.2023
*/ */
@AllArgsConstructor @AllArgsConstructor
@Service @Service
...@@ -100,19 +100,16 @@ public class FridgeService { ...@@ -100,19 +100,16 @@ public class FridgeService {
public Optional<FridgeProductAsso> updateProductInFridge(FridgeProductRequest request) { public Optional<FridgeProductAsso> updateProductInFridge(FridgeProductRequest request) {
Optional<FridgeProductAsso> fridgeProductAsso = fridgeProductAssoRepo.findById(request.fridgeProductId()); Optional<FridgeProductAsso> fridgeProductAsso = fridgeProductAssoRepo.findById(request.fridgeProductId());
if (fridgeProductAsso.isEmpty()) return Optional.empty(); if (fridgeProductAsso.isEmpty()) return Optional.empty();
Integer amount = request.amount();
Integer days = request.days();
if (amount != null) fridgeProductAsso.get() fridgeProductAsso.get()
.setAmount(request.amount()); .setAmount(request.amount());
if (days != null) fridgeProductAsso.get() fridgeProductAsso.get()
.setDaysToExpiration(request.days()); .setDaysToExpiration(request.days());
fridgeProductAssoRepo.save(fridgeProductAsso.get());
return fridgeProductAsso;
return Optional.of(fridgeProductAssoRepo.save(fridgeProductAsso.get()));
} }
...@@ -134,15 +131,6 @@ public class FridgeService { ...@@ -134,15 +131,6 @@ public class FridgeService {
return true; return true;
} }
/**
* Updates a fridge
* @param fridge the fridge to update
*/
public void updateFridge(Fridge fridge) {
if (fridgeRepository.findById(fridge.getFridgeId()).isEmpty())
return;
fridgeRepository.save(fridge);
}
/** /**
......
...@@ -6,11 +6,16 @@ import static org.mockito.Mockito.verify; ...@@ -6,11 +6,16 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import ntnu.idatt2016.v233.SmartMat.dto.request.FridgeProductRequest; import ntnu.idatt2016.v233.SmartMat.dto.request.FridgeProductRequest;
import ntnu.idatt2016.v233.SmartMat.entity.Waste;
import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso; import ntnu.idatt2016.v233.SmartMat.entity.fridgeProduct.FridgeProductAsso;
import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge; import ntnu.idatt2016.v233.SmartMat.entity.group.Fridge;
import ntnu.idatt2016.v233.SmartMat.entity.group.Group; import ntnu.idatt2016.v233.SmartMat.entity.group.Group;
import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupAsso;
import ntnu.idatt2016.v233.SmartMat.entity.group.UserGroupId;
import ntnu.idatt2016.v233.SmartMat.entity.product.Product; import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
import ntnu.idatt2016.v233.SmartMat.entity.user.User;
import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository; import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
import ntnu.idatt2016.v233.SmartMat.repository.group.WasteRepository;
import ntnu.idatt2016.v233.SmartMat.repository.product.FridgeProductAssoRepo; import ntnu.idatt2016.v233.SmartMat.repository.product.FridgeProductAssoRepo;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
...@@ -21,7 +26,6 @@ import org.mockito.MockitoAnnotations; ...@@ -21,7 +26,6 @@ import org.mockito.MockitoAnnotations;
import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository; import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository;
import ntnu.idatt2016.v233.SmartMat.service.product.ProductService; import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
import java.sql.Date;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Optional; import java.util.Optional;
...@@ -38,6 +42,10 @@ public class FridgeServiceTest { ...@@ -38,6 +42,10 @@ public class FridgeServiceTest {
@Mock @Mock
private GroupRepository groupRepository; private GroupRepository groupRepository;
@Mock
private WasteRepository wasteRepository;
@Mock @Mock
private FridgeProductAssoRepo fridgeProductAssoRepo; private FridgeProductAssoRepo fridgeProductAssoRepo;
...@@ -217,7 +225,353 @@ public class FridgeServiceTest { ...@@ -217,7 +225,353 @@ public class FridgeServiceTest {
@Test @Test
void deleteEntireAmountFromProduct(){ void deleteEntireAmountFromProduct(){
// Arrange
long ean = 12345L;
Product product = Product.builder()
.ean(ean)
.name("Test Product")
.build();
Fridge fridge = Fridge.builder()
.fridgeId(1234L)
.build();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
fridge.setGroup(group);
group.setFridge(fridge);
FridgeProductAsso fridgepr = FridgeProductAsso.builder()
.fridgeId(fridge)
.ean(product)
.id(123456L)
.amount(2)
.build();
fridge.addProduct(fridgepr);
product.addFridge(fridgepr);
when(fridgeProductAssoRepo.findById(123456L)).thenReturn(Optional.of(fridgepr));
when(fridgeProductAssoRepo.findAllById(123456L)).thenReturn(Optional.of(fridgepr));
when(productService.getProductById(ean)).thenReturn(Optional.of(product));
double newAmount = fridgepr.getAmount() - 1;
when(fridgeProductAssoRepo.save(FridgeProductAsso.builder()
.amount(newAmount)
.id(123456L)
.ean(product)
.fridgeId(fridge)
.build()
)).thenReturn(FridgeProductAsso.builder()
.amount(newAmount)
.id(139132L)
.ean(product)
.fridgeId(fridge)
.build());
// Act
Optional<FridgeProductAsso> result = fridgeService.deleteAmountFromFridge(123456L, 2);
// Assert
assertTrue(result.isEmpty());
verify(fridgeProductAssoRepo).delete(any(FridgeProductAsso.class));
} }
@Test
void wasteProductFromFridge(){
// Arrange
long ean = 12345L;
Product product = Product.builder()
.ean(ean)
.name("Test Product")
.build();
Fridge fridge = Fridge.builder()
.fridgeId(1234L)
.build();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
group.setPoints(100);
fridge.setGroup(group);
group.setFridge(fridge);
FridgeProductAsso fridgepr = FridgeProductAsso.builder()
.fridgeId(fridge)
.ean(product)
.id(123456L)
.amount(2)
.build();
fridge.addProduct(fridgepr);
product.addFridge(fridgepr);
when(fridgeProductAssoRepo.findById(123456L)).thenReturn(Optional.of(fridgepr));
when(fridgeProductAssoRepo.findAllById(123456L)).thenReturn(Optional.of(fridgepr));
when(productService.getProductById(ean)).thenReturn(Optional.of(product));
when(wasteRepository.save(any(Waste.class))).thenReturn(Waste.builder()
.amount(2)
.ean(product)
.groupId(group)
.build());
// Act
Optional<Waste> result = fridgeService.wasteProductFromFridge(123456L);
// Assert
assertTrue(result.isPresent());
assertEquals(2, result.get().getAmount());
assertEquals(product.getEan(), result.get().getEan().getEan());
assertEquals(group.getGroupId(), result.get().getGroupId().getGroupId());
assertEquals(group.getPoints(), 99);
verify(fridgeProductAssoRepo).delete(any(FridgeProductAsso.class));
verify(groupRepository).save(any(Group.class));
}
@Test
void updateProductInFridge(){
// Arrange
long ean = 12345L;
Product product = Product.builder()
.ean(ean)
.name("Test Product")
.build();
Fridge fridge = Fridge.builder()
.fridgeId(1234L)
.build();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
fridge.setGroup(group);
group.setFridge(fridge);
FridgeProductAsso fridgepr = FridgeProductAsso.builder()
.fridgeId(fridge)
.ean(product)
.id(123456L)
.amount(2)
.build();
fridge.addProduct(fridgepr);
product.addFridge(fridgepr);
when(fridgeProductAssoRepo.findById(123456L)).thenReturn(Optional.of(fridgepr));
when(productService.getProductById(ean)).thenReturn(Optional.of(product));
when(fridgeProductAssoRepo.save(any(FridgeProductAsso.class))).thenReturn(FridgeProductAsso.builder()
.fridgeId(fridge)
.ean(product)
.id(123456L)
.amount(1)
.daysToExpiration(100)
.buyPrice(100.0)
.build());
// Act
FridgeProductRequest fridgeProductRequest = new FridgeProductRequest(123456L, group.getGroupId(),
product.getEan(), 1, 100, 100);
Optional<FridgeProductAsso> result = fridgeService.updateProductInFridge(fridgeProductRequest);
// Assert
assertTrue(result.isPresent());
assertEquals(1, result.get().getAmount());
assertEquals(100, result.get().getDaysToExpiration());
assertEquals(100, result.get().getBuyPrice());
verify(fridgeProductAssoRepo).save(any(FridgeProductAsso.class));
}
@Test
void isUserAssosiatedWithFridge(){
Fridge fridge = new Fridge();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
fridge.setGroup(group);
group.setFridge(fridge);
User user = User.builder()
.username("test")
.password("test")
.build();
UserGroupAsso userGroupAsso = UserGroupAsso.builder()
.id(new UserGroupId(user.getUsername(), group.getGroupId()))
.user(user)
.group(group)
.build();
user.addGroup(userGroupAsso);
group.addUser(userGroupAsso);
when(fridgeRepository.findById(fridge.getFridgeId())).thenReturn(Optional.of(fridge));
// Act
boolean result = fridgeService.isUserInFridge(user.getUsername(), fridge.getFridgeId());
// Assert
assertTrue(result);
verify(fridgeRepository).findById(fridge.getFridgeId());
}
@Test
void isUserNotAssosiatedWithFridge(){
Fridge fridge = new Fridge();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
fridge.setGroup(group);
group.setFridge(fridge);
User user = User.builder()
.username("test")
.password("test")
.build();
when(fridgeRepository.findById(fridge.getFridgeId())).thenReturn(Optional.of(fridge));
// Act
boolean result = fridgeService.isUserInFridge(user.getUsername(), fridge.getFridgeId());
// Assert
assertFalse(result);
verify(fridgeRepository).findById(fridge.getFridgeId());
}
@Test
void getFridgeByFridgeId(){
// Arrange
Fridge fridge = Fridge.builder()
.fridgeId(1234L)
.build();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
fridge.setGroup(group);
group.setFridge(fridge);
when(fridgeRepository.findById(1234L)).thenReturn(Optional.of(fridge));
// Act
Optional<Fridge> result = fridgeService.getFridgeByFridgeId(1234L);
// Assert
assertTrue(result.isPresent());
assertEquals(1234L, result.get().getFridgeId());
verify(fridgeRepository).findById(1234L);
}
@Test
void isUserInGroupWithFridgeProduct(){
// Arrange
long ean = 12345L;
Product product = Product.builder()
.ean(ean)
.name("Test Product")
.build();
Fridge fridge = Fridge.builder()
.fridgeId(1234L)
.build();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
fridge.setGroup(group);
group.setFridge(fridge);
FridgeProductAsso fridgepr = FridgeProductAsso.builder()
.fridgeId(fridge)
.ean(product)
.id(123456L)
.amount(2)
.build();
fridge.addProduct(fridgepr);
product.addFridge(fridgepr);
User user = User.builder()
.username("test")
.password("test")
.build();
UserGroupAsso userGroupAsso = UserGroupAsso.builder()
.id(new UserGroupId(user.getUsername(), group.getGroupId()))
.user(user)
.group(group)
.build();
user.addGroup(userGroupAsso);
group.addUser(userGroupAsso);
when(fridgeProductAssoRepo.findById(123456L)).thenReturn(Optional.of(fridgepr));
// Act
boolean result = fridgeService.isUserInGroupWithFridgeProduct(user.getUsername(), 123456L);
// Assert
assertTrue(result);
verify(fridgeProductAssoRepo).findById(123456L);
}
@Test
void isUserInGroupWithFridgeProduct_not(){
// Arrange
long ean = 12345L;
Product product = Product.builder()
.ean(ean)
.name("Test Product")
.build();
Fridge fridge = Fridge.builder()
.fridgeId(1234L)
.build();
fridge.setProducts(new ArrayList<>());
Group group = new Group();
fridge.setGroup(group);
group.setFridge(fridge);
FridgeProductAsso fridgepr = FridgeProductAsso.builder()
.fridgeId(fridge)
.ean(product)
.id(123456L)
.amount(2)
.build();
fridge.addProduct(fridgepr);
product.addFridge(fridgepr);
User user = User.builder()
.username("test")
.password("test")
.build();
when(fridgeProductAssoRepo.findById(123456L)).thenReturn(Optional.of(fridgepr));
// Act
boolean result = fridgeService.isUserInGroupWithFridgeProduct(user.getUsername(), 123456L);
// Assert
assertFalse(result);
verify(fridgeProductAssoRepo).findById(123456L);
}
} }
...@@ -9,6 +9,7 @@ import ntnu.idatt2016.v233.SmartMat.repository.ShoppingListRepository; ...@@ -9,6 +9,7 @@ import ntnu.idatt2016.v233.SmartMat.repository.ShoppingListRepository;
import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository; import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository;
import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository; import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
import ntnu.idatt2016.v233.SmartMat.repository.group.UserGroupAssoRepository; import ntnu.idatt2016.v233.SmartMat.repository.group.UserGroupAssoRepository;
import ntnu.idatt2016.v233.SmartMat.util.GroupUtil;
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;
...@@ -18,8 +19,7 @@ import org.mockito.MockitoAnnotations; ...@@ -18,8 +19,7 @@ import org.mockito.MockitoAnnotations;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.Mockito.*; import static org.mockito.Mockito.*;
public class GroupServiceTest { public class GroupServiceTest {
...@@ -60,7 +60,7 @@ public class GroupServiceTest { ...@@ -60,7 +60,7 @@ public class GroupServiceTest {
verify(groupRepository).findByGroupName(groupName); verify(groupRepository).findByGroupName(groupName);
} }
/**
@Test @Test
void testCreateGroup() { void testCreateGroup() {
// Arrange // Arrange
...@@ -76,11 +76,13 @@ public class GroupServiceTest { ...@@ -76,11 +76,13 @@ public class GroupServiceTest {
// Assert // Assert
assertEquals(group, result); assertEquals(group, result);
assertNotNull(result.getLinkCode());
verify(groupRepository).findByGroupName(groupName); verify(groupRepository).findByGroupName(groupName);
verify(groupRepository).findAllLinkCode(); verify(groupRepository).findAllLinkCode();
verify(groupRepository).save(group); verify(groupRepository).save(group);
} }
*/
@Test @Test
void testAddFridgeToGroup() { void testAddFridgeToGroup() {
...@@ -138,4 +140,256 @@ public class GroupServiceTest { ...@@ -138,4 +140,256 @@ public class GroupServiceTest {
assertTrue(result); assertTrue(result);
verify(userGroupAssoRepository).findById(userGroupAsso.getId()); verify(userGroupAssoRepository).findById(userGroupAsso.getId());
} }
@Test
void openOrCloseGroup(){
// Arrange
long groupId = 1L;
Group group = new Group();
group.setGroupId(groupId);
group.setOpen(false);
when(groupRepository.findByGroupId(groupId)).thenReturn(Optional.of(group));
when(groupRepository.save(group)).thenReturn(group);
// Act
groupService.OpenOrCloseGroup(groupId);
// Assert
assertTrue(group.getOpen());
groupService.OpenOrCloseGroup(groupId);
// Assert
assertFalse(group.getOpen());
verify(groupRepository, times(2)).findByGroupId(groupId);
verify(groupRepository, times(2)).save(group);
}
@Test
void removeUserFromGroup(){
Group group = new Group();
group.setGroupId(1L);
group.setOpen(false);
User user = User.builder()
.username("test")
.build();
UserGroupAsso userGroupAsso = UserGroupAsso.builder()
.user(user)
.group(group)
.id(UserGroupId.builder()
.groupId(group.getGroupId())
.username(user.getUsername())
.build())
.build();
user.addGroup(userGroupAsso);
group.addUser(userGroupAsso);
when(userGroupAssoRepository.findById(userGroupAsso.getId())).thenReturn(Optional.of(userGroupAsso));
when(groupRepository.findByGroupId(group.getGroupId())).thenReturn(Optional.of(group));
assertTrue(groupService.removeUserFromGroup(userGroupAsso));
verify(userGroupAssoRepository).delete(userGroupAsso);
}
@Test
void setLevelByGroupId(){
// Arrange
long groupId = 1L;
Group group = new Group();
group.setGroupId(groupId);
group.setLevel(1);
group.setPoints(10);
when(groupRepository.findByGroupId(groupId)).thenReturn(Optional.of(group));
when(groupRepository.save(group)).thenReturn(group);
// Act
groupService.setLevelByGroupId(groupId, group.getPoints());
// Assert
assertEquals(0, group.getLevel());
verify(groupRepository).findByGroupId(groupId);
verify(groupRepository).save(group);
}
@Test
void getProgressOfLevel(){
// Arrange
long groupId = 1L;
Group group = new Group();
group.setGroupId(groupId);
group.setLevel(1);
group.setPoints(100);
when(groupRepository.findByGroupId(groupId)).thenReturn(Optional.of(group));
// Act
Optional<Integer> result = groupService.getProgressOfLevel(groupId);
// Assert
assertTrue(result.isPresent());
assertEquals(GroupUtil.getProgressOfLevel(group.getPoints()), result.get());
verify(groupRepository).findByGroupId(groupId);
}
@Test
void getUserGroupAsso(){
Group group = new Group();
group.setGroupId(1L);
group.setOpen(false);
User user = User.builder()
.username("test")
.build();
UserGroupAsso userGroupAsso = UserGroupAsso.builder()
.user(user)
.group(group)
.id(UserGroupId.builder()
.groupId(group.getGroupId())
.username(user.getUsername())
.build())
.build();
user.addGroup(userGroupAsso);
group.addUser(userGroupAsso);
when(userGroupAssoRepository.findById(userGroupAsso.getId())).thenReturn(Optional.of(userGroupAsso));
Optional<UserGroupAsso> result = groupService.getUserGroupAsso(userGroupAsso.getId().getUsername(),
userGroupAsso.getId().getGroupId());
assertTrue(result.isPresent());
assertEquals(userGroupAsso, result.get());
verify(userGroupAssoRepository).findById(userGroupAsso.getId());
}
@Test
void getUserGroupAssoAuthority(){
Group group = new Group();
group.setGroupId(1L);
group.setOpen(false);
User user = User.builder()
.username("test")
.build();
UserGroupAsso userGroupAsso = UserGroupAsso.builder()
.user(user)
.group(group)
.groupAuthority("USER")
.id(UserGroupId.builder()
.groupId(group.getGroupId())
.username(user.getUsername())
.build())
.build();
user.addGroup(userGroupAsso);
group.addUser(userGroupAsso);
when(userGroupAssoRepository.findById(userGroupAsso.getId())).thenReturn(Optional.of(userGroupAsso));
String result = groupService.getUserGroupAssoAuthority(userGroupAsso.getId().getUsername(),
userGroupAsso.getId().getGroupId());
assertEquals("USER", result);
verify(userGroupAssoRepository).findById(userGroupAsso.getId());
}
@Test
void getGroupById(){
// Arrange
long groupId = 1L;
Group group = new Group();
group.setGroupId(groupId);
when(groupRepository.findById(groupId)).thenReturn(Optional.of(group));
// Act
Optional<Group> result = groupService.getGroupById(groupId);
// Assert
assertTrue(result.isPresent());
assertEquals(group, result.get());
verify(groupRepository).findById(groupId);
}
@Test
void getGroupById_notFound(){
// Arrange
long groupId = 1L;
Group group = new Group();
group.setGroupId(groupId);
when(groupRepository.findById(groupId)).thenReturn(Optional.of(group));
// Act
Optional<Group> result = groupService.getGroupById(5L);
// Assert
assertTrue(result.isEmpty());
verify(groupRepository).findById(5L);
}
@Test
void updateUserGroupAsso(){
Group group = new Group();
group.setGroupId(1L);
group.setOpen(false);
User user = User.builder()
.username("test")
.build();
UserGroupAsso userGroupAsso = UserGroupAsso.builder()
.user(user)
.group(group)
.groupAuthority("USER")
.id(UserGroupId.builder()
.groupId(group.getGroupId())
.username(user.getUsername())
.build())
.build();
user.addGroup(userGroupAsso);
group.addUser(userGroupAsso);
when(userGroupAssoRepository.findById(userGroupAsso.getId())).thenReturn(Optional.of(userGroupAsso));
when(userGroupAssoRepository.save(any(UserGroupAsso.class))).thenReturn(UserGroupAsso.builder()
.id(UserGroupId.builder()
.groupId(group.getGroupId())
.username(user.getUsername())
.build())
.groupAuthority("ADMIN")
.group(group)
.user(user)
.build());
UserGroupAsso result = groupService.updateUserGroupAsso(UserGroupAsso.builder()
.id(UserGroupId.builder()
.groupId(group.getGroupId())
.username(user.getUsername())
.build())
.groupAuthority("ADMIN")
.group(group)
.user(user)
.build());
assertEquals("ADMIN", result.getGroupAuthority());
verify(userGroupAssoRepository).save(any(UserGroupAsso.class));
}
} }
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