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

Quick fix on group/progress endpoing, and test for some of the fridge services

parent b27c2463
No related branches found
No related tags found
No related merge requests found
......@@ -156,11 +156,15 @@ public class GroupController {
*/
@GetMapping("/{groupId}/progress")
public ResponseEntity<Integer> getProgressOfLevel(@PathVariable("groupId") long groupId, Authentication auth) {
if (!groupService.isUserAssociatedWithGroup(auth.getName(), groupId) ||
auth.getAuthorities().stream().noneMatch(role -> role.getAuthority().equals("ADMIN"))) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
if(auth.getAuthorities().stream().noneMatch(role -> role.getAuthority().equals("ADMIN"))){
if (!groupService.isUserAssociatedWithGroup(auth.getName(), groupId))
{
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
}
}
return groupService.getProgressOfLevel(groupId)
.map(ResponseEntity::ok)
.orElseGet(() -> ResponseEntity.notFound().build());
......
......@@ -127,8 +127,6 @@ public class FridgeService {
if (fridgeProductAsso.isEmpty()) return false;
Fridge fridge = fridgeRepository.findById(fridgeProductAsso.get().getFridgeId().getFridgeId())
.get();
fridgeProductAssoRepo.delete(fridgeProductAsso.get());
......@@ -146,21 +144,6 @@ public class FridgeService {
fridgeRepository.save(fridge);
}
/**
* Adds a group to a fridge
* @param fridgeId the id of the fridge
* @param groupId the id of the group
*/
public void addGroupToFridge(long fridgeId, long groupId) {
Optional<Fridge> fridge = fridgeRepository.findById(fridgeId);
Optional<Group> group = groupRepository.findByGroupId(groupId);
if (fridge.isPresent() && group.isPresent()) {
fridge.get().setGroup(group.get());
group.get().setFridge(fridge.get());
groupRepository.save(group.get());
fridgeRepository.save(fridge.get());
}
}
/**
* Delete an amount from a fridge product
......
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 ntnu.idatt2016.v233.SmartMat.dto.request.FridgeProductRequest;
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.entity.product.Product;
import ntnu.idatt2016.v233.SmartMat.repository.group.GroupRepository;
import ntnu.idatt2016.v233.SmartMat.repository.product.FridgeProductAssoRepo;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
......@@ -12,6 +21,10 @@ import org.mockito.MockitoAnnotations;
import ntnu.idatt2016.v233.SmartMat.repository.group.FridgeRepository;
import ntnu.idatt2016.v233.SmartMat.service.product.ProductService;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Optional;
public class FridgeServiceTest {
......@@ -25,6 +38,9 @@ public class FridgeServiceTest {
@Mock
private GroupRepository groupRepository;
@Mock
private FridgeProductAssoRepo fridgeProductAssoRepo;
@InjectMocks
private FridgeService fridgeService;
......@@ -33,11 +49,11 @@ public class FridgeServiceTest {
MockitoAnnotations.openMocks(this);
}
/*
@Test
public void testAddProductToFridge() {
// Arrange
long groupId = 1L;
long ean = 12345L;
Optional<Product> product = Optional.of(Product.builder()
.ean(ean)
......@@ -50,38 +66,158 @@ public class FridgeServiceTest {
group.setFridge(fridge);
when(productService.getProductById(ean)).thenReturn(product);
when(fridgeRepository.findByGroupGroupId(group.getGroupId())).thenReturn(Optional.of(fridge));
FridgeProductRequest fridgeProductRequest = new FridgeProductRequest(12093812L, group.getGroupId(),
product.get().getEan(), 1, 10, 100);
// Act
Optional<Product> result = fridgeService.addProductToFridge(fridgeProductRequest);
verify(fridgeRepository).save(any(Fridge.class));
// Assert
assertTrue(result.isPresent());
assertTrue(fridge.getProducts().stream().anyMatch(fp -> fp.getEan().getEan() == product.get().getEan()));
}
@Test
void testGetFridgeByGroupId() {
// Arrange
long groupId = 12345L;
Fridge fridge = new Fridge();
fridge.setGroup(Group.builder()
.groupId(groupId)
.build());
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);
Optional<Fridge> result = fridgeService.getFridgeByGroupId(groupId);
// Assert
assertTrue(result.isPresent());
assertEquals(groupId, result.get().getGroup().getGroupId());
verify(fridgeRepository).findByGroupGroupId(groupId);
}
verify(fridgeProductAssoService).createFridgeProductAsso(any(Fridge.class), any(Product.class), any(Date.class));
@Test
void testGetFridgeByGroupIdNotFound() {
// Arrange
long groupId = 12345L;
when(fridgeRepository.findByGroupGroupId(groupId)).thenReturn(Optional.empty());
// Act
Optional<Fridge> result = fridgeService.getFridgeByGroupId(groupId);
// Assert
assertTrue(result);
assertTrue(result.isEmpty());
verify(fridgeRepository).findByGroupGroupId(groupId);
}
@Test
void testRemoveItemFromFridge(){
// 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)
.build();
fridge.addProduct(fridgepr);
product.addFridge(fridgepr);
when(fridgeProductAssoRepo.findById(123456L)).thenReturn(Optional.of(fridgepr));
when(productService.getProductById(ean)).thenReturn(Optional.of(product));
// Act
boolean result = fridgeService.removeProductFromFridge(123456L);
// Assert
assertTrue(result);
verify(fridgeProductAssoRepo).delete(fridgepr);
}
@Test
public void testAddGroupToFridge() {
void testDeleteAmmountFromFridge(){
// Arrange
long fridgeId = 1L;
long groupId = 1L;
Optional<Fridge> fridge = Optional.of(new Fridge());
Optional<Group> group = Optional.of(new Group());
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);
when(fridgeRepository.findById(fridgeId)).thenReturn(fridge);
when(groupRepository.findByGroupId(groupId)).thenReturn(group);
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
fridgeService.addGroupToFridge(fridgeId, groupId);
Optional<FridgeProductAsso> result = fridgeService.deleteAmountFromFridge(123456L, 1);
// Assert
assertEquals(fridge.get().getGroup(), group.get());
assertEquals(group.get().getFridge(), fridge.get());
}*/
assertTrue(result.isPresent());
assertEquals(newAmount, result.get().getAmount());
assertNotEquals(2, result.get().getAmount());
verify(fridgeProductAssoRepo).save(any(FridgeProductAsso.class));
}
@Test
void deleteEntireAmountFromProduct(){
}
}
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