use of com.ncedu.fooddelivery.api.v1.entities.productPosition.ProductPosition in project 2021-msk-food-delivery by netcracker-edu.
the class OrderServiceTest method createOrderTest.
@Test
public void createOrderTest() {
CreateOrderDTO fakeDTO = new CreateOrderDTO();
User fakeUser = getFakeUserClient();
HashMap<Long, Integer> fakeHashMap = new HashMap<>();
fakeHashMap.put(1L, 2);
fakeHashMap.put(2L, 3);
fakeHashMap.put(3L, 5);
fakeDTO.setProductAmountPairs(fakeHashMap);
fakeDTO.setOverallCost(380.0);
fakeDTO.setHighDemandCoeff(1.0);
fakeDTO.setDiscount(20.0);
fakeDTO.setAddress("address");
fakeDTO.setGeo(getFakeCoordsDTO());
fakeDTO.setWarehouseId(1L);
WarehouseInfoDTO fakeWarehouseInfoDTO = getFakeWarehouseInfoDTO();
List<Product> fakeProducts = getFakeProducts();
List<ProductPosition> fakePositions = getFakeProductPositions();
Mockito.when(courierRepo.countWorkingCouriersByWarehouse(Mockito.any(Long.class))).thenReturn((short) 100);
Mockito.when(courierRepo.countDeliveringCouriersByWarehouse(Mockito.any(Long.class))).thenReturn((short) 50);
Mockito.when(warehouseService.getNearestWarehouse(Mockito.any(BigDecimal.class), Mockito.any(BigDecimal.class))).thenReturn(fakeWarehouseInfoDTO);
Mockito.when(warehouseService.findById(1L)).thenReturn(getFakeWarehouse1());
Mockito.when(productPositionRepo.findByProductIdAndWarehouseIdWithLock(1L, 1L)).thenReturn(Arrays.asList(fakePositions.get(0), fakePositions.get(1)));
Mockito.when(productPositionRepo.findByProductIdAndWarehouseIdWithLock(2L, 1L)).thenReturn(Arrays.asList(fakePositions.get(2), fakePositions.get(3)));
Mockito.when(productPositionRepo.findByProductIdAndWarehouseIdWithLock(3L, 1L)).thenReturn(Arrays.asList(fakePositions.get(4), fakePositions.get(5)));
Mockito.when(productPositionRepo.findById(1L)).thenReturn(Optional.of(fakePositions.get(0)));
Mockito.when(productPositionRepo.findById(2L)).thenReturn(Optional.of(fakePositions.get(1)));
Mockito.when(productPositionRepo.findById(3L)).thenReturn(Optional.of(fakePositions.get(2)));
Mockito.when(productPositionRepo.findById(4L)).thenReturn(Optional.of(fakePositions.get(3)));
Mockito.when(productPositionRepo.findById(5L)).thenReturn(Optional.of(fakePositions.get(4)));
Mockito.when(productPositionRepo.findById(6L)).thenReturn(Optional.of(fakePositions.get(5)));
Mockito.when(productRepo.findById(1l)).thenReturn(Optional.of(fakeProducts.get(0)));
Mockito.when(productRepo.findById(2l)).thenReturn(Optional.of(fakeProducts.get(1)));
Mockito.when(productRepo.findById(3l)).thenReturn(Optional.of(fakeProducts.get(2)));
Mockito.when(orderRepo.save(Mockito.any(Order.class))).thenReturn(getFakeOrder());
Mockito.when(courierRepo.getWaitingCourierByWarehouse(1L)).thenReturn(Mockito.mock(Courier.class));
Mockito.when(orderProductPositionRepo.save(Mockito.any(OrderProductPosition.class))).thenReturn(Mockito.mock(OrderProductPosition.class));
orderService.createOrder(fakeDTO, fakeUser);
Mockito.verify(courierRepo, Mockito.times(1)).countWorkingCouriersByWarehouse(1L);
Mockito.verify(courierRepo, Mockito.times(1)).countDeliveringCouriersByWarehouse(1L);
Mockito.verify(productPositionRepo, Mockito.times(6)).findByProductIdAndWarehouseIdWithLock(Mockito.any(Long.class), Mockito.eq(1L));
Mockito.verify(warehouseService, Mockito.times(1)).getNearestWarehouse(Mockito.any(BigDecimal.class), Mockito.any(BigDecimal.class));
Mockito.verify(orderProductPositionRepo, Mockito.times(3)).save(Mockito.any(OrderProductPosition.class));
}
use of com.ncedu.fooddelivery.api.v1.entities.productPosition.ProductPosition in project 2021-msk-food-delivery by netcracker-edu.
the class ProductPositionServiceTest method deleteProductPosition.
@Test
public void deleteProductPosition() {
ProductPosition mockProductPosition = new ProductPosition();
when(productPositionRepo.findById(any(Long.class))).thenReturn(Optional.of(mockProductPosition));
boolean res = productPositionService.deleteProductPosition(100L);
Mockito.verify(productPositionRepo, times(1)).findById(any(Long.class));
Mockito.verify(productPositionRepo, times(1)).delete(mockProductPosition);
assertTrue(res);
}
use of com.ncedu.fooddelivery.api.v1.entities.productPosition.ProductPosition in project 2021-msk-food-delivery by netcracker-edu.
the class ProductPositionServiceTest method updatePaymentStatusNotNullTest.
@Test
public void updatePaymentStatusNotNullTest() {
List<Long> mockIds = new ArrayList<>(Arrays.asList(1L, 2L, 3L));
ProductPosition mockProductPosition = Mockito.mock(ProductPosition.class);
when(productPositionRepo.findById(any(Long.class))).thenReturn(Optional.of(mockProductPosition));
boolean res = productPositionService.updatePaymentStatus(mockIds);
verify(productPositionRepo, times(3)).findById(any(Long.class));
verify(mockProductPosition, times(3)).setIsInvoicePaid(true);
verify(productPositionRepo, times(3)).save(mockProductPosition);
assertTrue(res);
}
use of com.ncedu.fooddelivery.api.v1.entities.productPosition.ProductPosition in project 2021-msk-food-delivery by netcracker-edu.
the class ProductPositionServiceTest method shipProductPositionsNotEnoughTest.
@Test
public void shipProductPositionsNotEnoughTest() {
Long mockOrderId = 110L;
Order mockOrder = Mockito.mock(Order.class);
ProductPositionsShipmentDTO mockDTO = Mockito.mock(ProductPositionsShipmentDTO.class);
ProductPositionsShipmentDTO.ProductPositionAmountPair mockPair = new ProductPositionsShipmentDTO.ProductPositionAmountPair();
mockPair.setId(10L);
mockPair.setAmount(1000);
ProductPosition mockPosition = Mockito.mock(ProductPosition.class);
mockPosition.setCurrentAmount(1);
Warehouse mockWarehouse = Mockito.mock(Warehouse.class);
Mockito.when(mockWarehouse.getId()).thenReturn(1L);
Mockito.when(mockOrder.getWarehouse()).thenReturn(mockWarehouse);
Mockito.when(mockDTO.getPositionAmountPairs()).thenReturn(new ArrayList<>(Arrays.asList(mockPair)));
Mockito.when(orderRepo.findById(Mockito.any(Long.class))).thenReturn(Optional.of(mockOrder));
Mockito.when(productPositionRepo.findById(Mockito.any(Long.class))).thenReturn(Optional.of(mockPosition));
Mockito.when(mockPosition.getWarehouse()).thenReturn(mockWarehouse);
assertThrows(ProductPositionNotEnoughException.class, new Executable() {
@Override
public void execute() {
productPositionService.shipProductPositions(mockOrderId, mockDTO);
}
});
verify(mockDTO, times(1)).getPositionAmountPairs();
verify(orderRepo, times(1)).findById(110L);
verify(productPositionRepo, times(2)).findById(10L);
}
use of com.ncedu.fooddelivery.api.v1.entities.productPosition.ProductPosition in project 2021-msk-food-delivery by netcracker-edu.
the class ProductPositionController method nullifyProductPosition.
@PatchMapping("/api/v1/productPosition/{id}/currentAmount")
@PreAuthorize("hasAnyAuthority('ADMIN', 'MODERATOR')")
public ResponseEntity<?> nullifyProductPosition(@Min(value = 1) @Max(value = Long.MAX_VALUE) @PathVariable Long id, @AuthenticationPrincipal User user) {
ProductPosition productPositionToNullify = productPositionService.getProductPosition(id);
if (productPositionToNullify == null)
throw new NotFoundEx(String.valueOf(id));
if (Role.isMODERATOR(user.getRole().toString())) {
if (!user.getModerator().getWarehouseId().equals(productPositionToNullify.getWarehouse().getId())) {
throw new CustomAccessDeniedException();
}
}
productPositionService.nullifyProductPosition(id);
return new ResponseEntity<>(HttpStatus.OK);
}
Aggregations