diff --git a/core/src/main/java/greencity/controller/ManagementOrderController.java b/core/src/main/java/greencity/controller/ManagementOrderController.java index d356ab351..43656c871 100644 --- a/core/src/main/java/greencity/controller/ManagementOrderController.java +++ b/core/src/main/java/greencity/controller/ManagementOrderController.java @@ -4,7 +4,6 @@ import greencity.annotations.CurrentUserUuid; import greencity.constants.HttpStatuses; import greencity.dto.bag.AdditionalBagInfoDto; -import greencity.dto.bag.ReasonNotTakeBagDto; import greencity.dto.certificate.CertificateDtoForAdding; import greencity.dto.certificate.CertificateDtoForSearching; import greencity.dto.employee.EmployeePositionDtoRequest; @@ -505,7 +504,7 @@ public ResponseEntity getOrderDetailStatus( } /** - * Controller for update order and payment status. + * Controller for update order and payment status by id. * * @return {@link OrderDetailStatusDto}. * @author Orest Mahdziak @@ -524,7 +523,7 @@ public ResponseEntity updateOrderDetailStatus( @Valid @PathVariable("id") Long id, @RequestBody OrderDetailStatusRequestDto dto, Principal principal) { return ResponseEntity.status(HttpStatus.CREATED) - .body(ubsManagementService.updateOrderDetailStatus(id, dto, principal.getName())); + .body(ubsManagementService.updateOrderDetailStatusById(id, dto, principal.getName())); } /** @@ -629,7 +628,7 @@ public ResponseEntity updateOrderExportInfo( @Valid @PathVariable("id") Long id, @RequestBody ExportDetailsDtoUpdate dto, Principal principal) { return ResponseEntity.status(HttpStatus.CREATED) - .body(ubsManagementService.updateOrderExportDetails(id, dto, principal.getName())); + .body(ubsManagementService.updateOrderExportDetailsById(id, dto, principal.getName())); } /** @@ -836,26 +835,6 @@ public ResponseEntity updateUsersViolation(@Valid @RequestPart Updat return new ResponseEntity<>(HttpStatus.CREATED); } - /** - * Controller for save reason not taking the bag. * - * - * @return {ReasonNotTakeBagDto}. * @author Bohdan Fedorkiv - */ - - @ApiOperation(value = "Save reason for not taking the bag") - @ApiResponses(value = { - @ApiResponse(code = 201, message = HttpStatuses.CREATED, response = ReasonNotTakeBagDto.class), - @ApiResponse(code = 401, message = HttpStatuses.UNAUTHORIZED), - @ApiResponse(code = 400, message = HttpStatuses.BAD_REQUEST), - @ApiResponse(code = 422, message = HttpStatuses.UNPROCESSABLE_ENTITY)}) - @PutMapping(value = "/save-reason/{id}", - consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_UTF8_VALUE}) - public ResponseEntity saveReason(@PathVariable("id") Long id, - @RequestPart String description, - @RequestPart(required = false) @Nullable MultipartFile[] images) { - return ResponseEntity.status(HttpStatus.CREATED).body(ubsManagementService.saveReason(id, description, images)); - } - /** * Controller for saving Admin comment. * @@ -898,19 +877,25 @@ public ResponseEntity saveAdminCommentToOrder( public ResponseEntity updateEcoStoreIdToOrder( @RequestBody @Valid EcoNumberDto ecoNumberDto, @PathVariable(name = "id") Long orderId, Principal principal) { - ubsManagementService.updateEcoNumberForOrder(ecoNumberDto, orderId, principal.getName()); + ubsManagementService.updateEcoNumberForOrderById(ecoNumberDto, orderId, principal.getName()); return ResponseEntity.status(HttpStatus.CREATED).build(); } /** - * Controller for updating order admin page info. + * Controller for updating order admin page info and save reason if needed. * - * @param updateOrderPageDto {@link UpdateOrderPageAdminDto}. - * @param orderId {@link Long}. + * @param orderId {@link Long}. + * @param updateOrderPageAdminDto {@link UpdateOrderPageAdminDto}. + * @param language {@link String}. + * @param principal {@link Principal}. + * @param description {@link String}. + * @param images {@link MultipartFile}. * * @author Bahlay Yuriy. + * @author Anton Bondar. */ - @ApiOperation(value = "update order admin page info") + + @ApiOperation(value = "update order admin page info and save reason if needed") @ApiResponses(value = { @ApiResponse(code = 201, message = HttpStatuses.CREATED), @ApiResponse(code = 400, message = HttpStatuses.BAD_REQUEST), @@ -920,11 +905,15 @@ public ResponseEntity updateEcoStoreIdToOrder( @ApiResponse(code = 422, message = HttpStatuses.UNPROCESSABLE_ENTITY) }) @PreAuthorize("@preAuthorizer.hasAuthority('EDIT_ORDER', authentication)") - @PatchMapping("/update-order-page-admin-info/{id}") - public ResponseEntity updatePageAdminInfo( - @RequestBody @Valid UpdateOrderPageAdminDto updateOrderPageDto, @PathVariable(name = "id") Long orderId, - @RequestParam String lang, Principal principal) { - ubsManagementService.updateOrderAdminPageInfo(updateOrderPageDto, orderId, lang, principal.getName()); + @PatchMapping(value = "/update-order-page-admin-info/{id}", + consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_JSON_UTF8_VALUE}) + public ResponseEntity updatePageAdminInfo(@PathVariable(name = "id") Long orderId, + @Valid @RequestPart UpdateOrderPageAdminDto updateOrderPageAdminDto, + @RequestParam String language, + @ApiIgnore Principal principal, String description, + @RequestPart(required = false) @Nullable MultipartFile[] images) { + ubsManagementService.updateOrderAdminPageInfoAndSaveReason(orderId, updateOrderPageAdminDto, language, + principal.getName(), description, images); return ResponseEntity.status(HttpStatus.CREATED).build(); } diff --git a/core/src/test/java/greencity/ModelUtils.java b/core/src/test/java/greencity/ModelUtils.java index a08a68d88..6637796c4 100644 --- a/core/src/test/java/greencity/ModelUtils.java +++ b/core/src/test/java/greencity/ModelUtils.java @@ -30,10 +30,12 @@ import greencity.dto.order.OrderCancellationReasonDto; import greencity.dto.order.OrderClientDto; import greencity.dto.order.OrderDetailStatusDto; +import greencity.dto.order.OrderDetailStatusRequestDto; import greencity.dto.order.OrderFondyClientDto; import greencity.dto.order.OrderResponseDto; import greencity.dto.order.RequestToChangeOrdersDataDto; import greencity.dto.order.UpdateAllOrderPageDto; +import greencity.dto.order.UpdateOrderPageAdminDto; import greencity.dto.payment.ManualPaymentRequestDto; import greencity.dto.payment.PaymentResponseDto; import greencity.dto.position.PositionDto; @@ -597,4 +599,13 @@ public static UserProfileCreateDto getUserProfileCreateDto() { .uuid("f81d4fae-7dec-11d0-a765-00a0c91e6bf6") .build(); } + + public static UpdateOrderPageAdminDto getUpdateOrderPageAdminDto() { + return UpdateOrderPageAdminDto.builder() + .generalOrderInfo(OrderDetailStatusRequestDto + .builder() + .orderStatus("NOT_TAKEN_OUT") + .build()) + .build(); + } } diff --git a/core/src/test/java/greencity/controller/ManagementOrderControllerTest.java b/core/src/test/java/greencity/controller/ManagementOrderControllerTest.java index afc765953..0d620c303 100644 --- a/core/src/test/java/greencity/controller/ManagementOrderControllerTest.java +++ b/core/src/test/java/greencity/controller/ManagementOrderControllerTest.java @@ -9,6 +9,7 @@ import greencity.dto.order.OrderCancellationReasonDto; import greencity.dto.order.OrderDetailStatusDto; import greencity.dto.order.UpdateAllOrderPageDto; +import greencity.dto.order.UpdateOrderPageAdminDto; import greencity.dto.payment.ManualPaymentRequestDto; import greencity.dto.user.AddBonusesToUserDto; import greencity.dto.user.AddingPointsToUserDto; @@ -43,6 +44,7 @@ import static greencity.ModelUtils.getAddBonusesToUserDto; import static greencity.ModelUtils.getEcoNumberDto; import static greencity.ModelUtils.getRequestDto; +import static greencity.ModelUtils.getUpdateOrderPageAdminDto; import static greencity.ModelUtils.getUuid; import static greencity.ModelUtils.getViolationDetailInfoDto; import static org.mockito.Mockito.doNothing; @@ -55,8 +57,8 @@ import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put; -import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; @ExtendWith(MockitoExtension.class) class ManagementOrderControllerTest { @@ -507,4 +509,32 @@ void saveOrderIdForRefundTest() throws Exception { mockMvc.perform(post(ubsLink + "/save-order-for-refund/{orderId}", 1L) .principal(principal)).andExpect(status().isCreated()); } + + @Test + void updatePageAdminInfoTest() throws Exception { + UpdateOrderPageAdminDto dto = getUpdateOrderPageAdminDto(); + ObjectMapper objectMapper = new ObjectMapper(); + String responseJSON = objectMapper.writeValueAsString(dto); + + MockMultipartFile jsonFile = new MockMultipartFile( + "updateOrderPageAdminDto", + "updateOrderPageAdminDto.json", + "application/json", + responseJSON.getBytes()); + + MockMultipartHttpServletRequestBuilder builder = + MockMvcRequestBuilders.multipart(ubsLink + "/update-order-page-admin-info/{id}", 1L); + builder.with(request -> { + request.setMethod("PATCH"); + return request; + }); + + mockMvc.perform( + builder.file(jsonFile) + .param("language", "en") + .param("description", "false") + .principal(principal) + .contentType(MediaType.MULTIPART_FORM_DATA)) + .andExpect(status().isCreated()); + } } diff --git a/service-api/src/main/java/greencity/service/ubs/UBSManagementService.java b/service-api/src/main/java/greencity/service/ubs/UBSManagementService.java index 443ed3b08..cfda1e4eb 100644 --- a/service-api/src/main/java/greencity/service/ubs/UBSManagementService.java +++ b/service-api/src/main/java/greencity/service/ubs/UBSManagementService.java @@ -1,7 +1,6 @@ package greencity.service.ubs; import greencity.dto.bag.AdditionalBagInfoDto; -import greencity.dto.bag.ReasonNotTakeBagDto; import greencity.dto.certificate.CertificateDtoForSearching; import greencity.dto.employee.EmployeePositionDtoRequest; import greencity.dto.order.AdminCommentDto; @@ -29,6 +28,7 @@ import greencity.dto.user.AddBonusesToUserDto; import greencity.dto.user.AddingPointsToUserDto; import greencity.dto.violation.ViolationsInfoDto; +import greencity.entity.order.Order; import greencity.enums.SortingOrder; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; @@ -91,12 +91,13 @@ PageableDto getAllCertificates(Pageable page, String /** * Method that update address. * - * @param dtoUpdate of {@link OrderAddressExportDetailsDtoUpdate} order id; + * @param dtoUpdate of {@link OrderAddressExportDetailsDtoUpdate} order id. + * @param order {@link Order}. * @param email {@link String}. - * @return {@link OrderAddressDtoResponse} that contains address; + * @return {@link OrderAddressDtoResponse} that contains address. * @author Mahdziak Orest */ - Optional updateAddress(OrderAddressExportDetailsDtoUpdate dtoUpdate, Long orderId, + Optional updateAddress(OrderAddressExportDetailsDtoUpdate dtoUpdate, Order order, String email); /** @@ -111,7 +112,7 @@ Optional updateAddress(OrderAddressExportDetailsDtoUpda * * @author Mahdziak Orest */ - void setOrderDetail(Long orderId, + void setOrderDetail(Order order, Map confirmed, Map exported, String email); /** @@ -150,12 +151,19 @@ void setOrderDetail(Long orderId, */ OrderDetailStatusDto getOrderDetailStatus(Long id); + /** + * Method that update order and payment status by id. + * + * @author Mahdziak Orest + */ + OrderDetailStatusDto updateOrderDetailStatusById(Long id, OrderDetailStatusRequestDto dto, String email); + /** * Method that update order and payment status. * * @author Mahdziak Orest */ - OrderDetailStatusDto updateOrderDetailStatus(Long id, OrderDetailStatusRequestDto dto, String email); + OrderDetailStatusDto updateOrderDetailStatus(Order order, OrderDetailStatusRequestDto dto, String email); /** * Method that get export details by order id. @@ -169,7 +177,14 @@ void setOrderDetail(Long orderId, * * @author Mahdziak Orest */ - ExportDetailsDto updateOrderExportDetails(Long id, ExportDetailsDtoUpdate dto, String uuid); + ExportDetailsDto updateOrderExportDetailsById(Long id, ExportDetailsDtoUpdate dto, String uuid); + + /** + * Method that update export details by order. + * + * @author Mahdziak Orest + */ + ExportDetailsDto updateOrderExportDetails(Order order, ExportDetailsDtoUpdate dto, String uuid); /** * Method that gets bags additional information. @@ -225,10 +240,10 @@ ManualPaymentResponseDto updateManualPayment(Long paymentId, ManualPaymentReques /** * Method that save ReasonNotTakeBagDto. */ - ReasonNotTakeBagDto saveReason(Long orderId, String description, MultipartFile[] images); + void saveReason(Order order, String description, MultipartFile[] images); /** - * This is method which is save Admin comment. + * This is method which save Admin comment. * * @param adminCommentDto {@link AdminCommentDto}. * @param email {@link String}. @@ -238,7 +253,7 @@ ManualPaymentResponseDto updateManualPayment(Long paymentId, ManualPaymentReques void saveAdminCommentToOrder(AdminCommentDto adminCommentDto, String email); /** - * This is method updates eco id from the shop for order. + * This is method updates eco id from the shop for order by id. * * @param ecoNumberDto {@link EcoNumberDto}. * @param orderId {@link Long}. @@ -246,18 +261,45 @@ ManualPaymentResponseDto updateManualPayment(Long paymentId, ManualPaymentReques * * @author Yuriy Bahlay. */ - void updateEcoNumberForOrder(EcoNumberDto ecoNumberDto, Long orderId, String email); + void updateEcoNumberForOrderById(EcoNumberDto ecoNumberDto, Long orderId, String email); + + /** + * This is method updates eco id from the shop for order. + * + * @param ecoNumberDto {@link EcoNumberDto}. + * @param order {@link Order}. + * @param email {@link String}. + * + * @author Yuriy Bahlay. + */ + void updateEcoNumberForOrder(EcoNumberDto ecoNumberDto, Order order, String email); + + /** + * This is method which is updates admin page info for order and save reason. + * + * @param orderId {@link Long}. + * @param updateOrderPageAdminDto {@link UpdateOrderPageAdminDto}. + * @param language {@link String}. + * @param email {@link String}. + * @param description {@link String}. + * @param images {@link MultipartFile}. + * + * @author Anton Bondar. + */ + void updateOrderAdminPageInfoAndSaveReason(Long orderId, UpdateOrderPageAdminDto updateOrderPageAdminDto, + String language, + String email, String description, MultipartFile[] images); /** * This is method which is updates admin page info for order. * * @param updateOrderPageAdminDto {@link UpdateOrderPageAdminDto}. - * @param orderId {@link Long}. + * @param order {@link Order}. * @param email {@link String}. * * @author Yuriy Bahlay. */ - void updateOrderAdminPageInfo(UpdateOrderPageAdminDto updateOrderPageAdminDto, Long orderId, String lang, + void updateOrderAdminPageInfo(UpdateOrderPageAdminDto updateOrderPageAdminDto, Order order, String lang, String email); /** diff --git a/service/src/main/java/greencity/service/ubs/UBSManagementServiceImpl.java b/service/src/main/java/greencity/service/ubs/UBSManagementServiceImpl.java index 5864a7320..c2f220b76 100644 --- a/service/src/main/java/greencity/service/ubs/UBSManagementServiceImpl.java +++ b/service/src/main/java/greencity/service/ubs/UBSManagementServiceImpl.java @@ -329,10 +329,8 @@ public ReadAddressByOrderDto getAddressByOrderId(Long orderId) { * {@inheritDoc} */ @Override - public Optional updateAddress(OrderAddressExportDetailsDtoUpdate dtoUpdate, Long orderId, + public Optional updateAddress(OrderAddressExportDetailsDtoUpdate dtoUpdate, Order order, String email) { - Order order = orderRepository.findById(orderId) - .orElseThrow(() -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST)); Optional addressForAdminPage = orderAddressRepository.findById(dtoUpdate.getAddressId()); if (addressForAdminPage.isPresent()) { orderAddressRepository.save(updateAddressOrderInfo(addressForAdminPage.get(), dtoUpdate)); @@ -594,14 +592,13 @@ public List getOrderDetails(Long orderId, String language) { */ @Override - public void setOrderDetail(Long orderId, + public void setOrderDetail(Order order, Map confirmed, Map exported, String email) { + Long orderId = order.getId(); final long wasPaidInCoins = paymentRepository.selectSumPaid(orderId) == null ? 0L : paymentRepository.selectSumPaid(orderId); - collectEventsAboutSetOrderDetails(confirmed, exported, orderId, email); - final Order order = orderRepository.findById(orderId).orElseThrow( - () -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST)); + collectEventsAboutSetOrderDetails(confirmed, exported, order, email); if (!(order.getOrderStatus() == OrderStatus.DONE || order.getOrderStatus() == OrderStatus.NOT_TAKEN_OUT || order.getOrderStatus() == OrderStatus.CANCELED)) { exported = null; @@ -639,6 +636,13 @@ public void setOrderDetail(Long orderId, long totalPriceInCoins = convertBillsIntoCoins(setTotalPrice(getPriceDetails(orderId))); long needToPayInCoins = totalPriceInCoins - wasPaidInCoins - discountInCoins; + updatePaymentStatus(order, wasPaidInCoins, discountInCoins, totalPriceInCoins, needToPayInCoins); + } + + private void updatePaymentStatus(Order order, long wasPaidInCoins, long discountInCoins, + long totalPriceInCoins, long needToPayInCoins) { + Long orderId = order.getId(); + if (needToPayInCoins == 0) { orderRepository.updateOrderPaymentStatus(orderId, OrderPaymentStatus.PAID.name()); return; @@ -688,17 +692,14 @@ private void recalculatePoints(int amount, Order order) { } private void collectEventsAboutSetOrderDetails(Map confirmed, Map exported, - Long orderId, String email) { - Order order = orderRepository.findById(orderId).orElseThrow( - () -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST)); - + Order order, String email) { StringBuilder values = new StringBuilder(); int countOfChanges = 0; if (nonNull(exported)) { - collectEventAboutExportedWaste(exported, order, orderId, countOfChanges, values); + collectEventAboutExportedWaste(exported, order, order.getId(), countOfChanges, values); } if (nonNull(confirmed)) { - collectEventAboutConfirmWaste(confirmed, order, orderId, countOfChanges, values); + collectEventAboutConfirmWaste(confirmed, order, order.getId(), countOfChanges, values); } if (nonNull(confirmed) || nonNull(exported)) { eventService.saveEvent(values.toString(), email, order); @@ -983,12 +984,21 @@ public OrderDetailStatusDto getOrderDetailStatus(Long id) { */ @Override - public OrderDetailStatusDto updateOrderDetailStatus(Long id, OrderDetailStatusRequestDto dto, String email) { + public OrderDetailStatusDto updateOrderDetailStatusById(Long id, OrderDetailStatusRequestDto dto, String email) { Order order = orderRepository.findById(id) .orElseThrow(() -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + id)); - List payment = paymentRepository.findAllByOrderId(id); + return updateOrderDetailStatus(order, dto, email); + } + + /** + * {@inheritDoc} + */ + + @Override + public OrderDetailStatusDto updateOrderDetailStatus(Order order, OrderDetailStatusRequestDto dto, String email) { + List payment = paymentRepository.findAllByOrderId(order.getId()); if (payment.isEmpty()) { - throw new NotFoundException(PAYMENT_NOT_FOUND + id); + throw new NotFoundException(PAYMENT_NOT_FOUND + order.getId()); } if (nonNull(dto.getAdminComment())) { order.setAdminComment(dto.getAdminComment()); @@ -1022,8 +1032,7 @@ public OrderDetailStatusDto updateOrderDetailStatus(Long id, OrderDetailStatusRe orderRepository.save(order); } if (nonNull(dto.getOrderPaymentStatus())) { - paymentRepository.findAllByOrderId(id) - .forEach(x -> x.setPaymentStatus(PaymentStatus.valueOf(dto.getOrderPaymentStatus()))); + payment.forEach(x -> x.setPaymentStatus(PaymentStatus.valueOf(dto.getOrderPaymentStatus()))); paymentRepository.saveAll(payment); } @@ -1155,9 +1164,23 @@ public ExportDetailsDto getOrderExportDetails(Long id) { * @author Orest Mahdziak */ @Override - public ExportDetailsDto updateOrderExportDetails(Long id, ExportDetailsDtoUpdate dto, String email) { + public ExportDetailsDto updateOrderExportDetailsById(Long id, ExportDetailsDtoUpdate dto, String email) { Order order = orderRepository.findById(id) .orElseThrow(() -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + id)); + return updateOrderExportDetails(order, dto, email); + } + + /** + * Method returns update export details by order id. + * + * @param order of {@link Order}; + * @param dto of{@link ExportDetailsDtoUpdate}; + * @param email {@link String} email; + * @return {@link ExportDetailsDto}; + * @author Orest Mahdziak + */ + @Override + public ExportDetailsDto updateOrderExportDetails(Order order, ExportDetailsDtoUpdate dto, String email) { final List receivingStation = getAllReceivingStations(); String action; if (order.getReceivingStation() == null && order.getDateOfExport() == null @@ -1503,9 +1526,7 @@ public EmployeePositionDtoRequest getAllEmployeesByPosition(Long orderId, String } @Override - public ReasonNotTakeBagDto saveReason(Long orderId, String description, MultipartFile[] images) { - final Order order = orderRepository.findById(orderId) - .orElseThrow(() -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + orderId)); + public void saveReason(Order order, String description, MultipartFile[] images) { List pictures = new ArrayList<>(); for (MultipartFile image : images) { if (image != null) { @@ -1521,9 +1542,7 @@ public ReasonNotTakeBagDto saveReason(Long orderId, String description, Multipar dto.setCurrentUser(order.getUser().getRecipientName() + " " + order.getUser().getRecipientSurname()); order.setImageReasonNotTakingBags(pictures); order.setReasonNotTakingBagDescription(description); - order.setOrderStatus(OrderStatus.CANCELED); orderRepository.save(order); - return dto; } /** @@ -1553,9 +1572,22 @@ public void saveAdminCommentToOrder(AdminCommentDto adminCommentDto, String emai * @author Yuriy Bahlay, Sikhovskiy Rostyslav. */ @Override - public void updateEcoNumberForOrder(EcoNumberDto ecoNumberDto, Long orderId, String email) { + public void updateEcoNumberForOrderById(EcoNumberDto ecoNumberDto, Long orderId, String email) { Order order = orderRepository.findById(orderId).orElseThrow( () -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + orderId)); + updateEcoNumberForOrder(ecoNumberDto, order, email); + } + + /** + * This is method updates eco id from the shop for order. + * + * @param ecoNumberDto {@link EcoNumberDto}. + * @param order {@link Order}. + * @param email {@link String}. + * @author Yuriy Bahlay, Sikhovskiy Rostyslav. + */ + @Override + public void updateEcoNumberForOrder(EcoNumberDto ecoNumberDto, Order order, String email) { Set oldEcoNumbers = Set.copyOf(order.getAdditionalOrders()); Set newEcoNumbers = ecoNumberDto.getEcoNumber(); @@ -1565,19 +1597,17 @@ public void updateEcoNumberForOrder(EcoNumberDto ecoNumberDto, Long orderId, Str if (!removed.isEmpty()) { historyChanges.append(collectInfoAboutChangesOfEcoNumber(removed, OrderHistory.DELETED_ECO_NUMBER)); - removed.stream() - .forEach(oldNumber -> order.getAdditionalOrders().remove(oldNumber)); + removed.forEach(oldNumber -> order.getAdditionalOrders().remove(oldNumber)); } if (!added.isEmpty() && !added.contains("")) { historyChanges.append(collectInfoAboutChangesOfEcoNumber(added, OrderHistory.ADD_NEW_ECO_NUMBER)); - added.stream() - .forEach(newNumber -> { - if (!newNumber.matches("[0-9]+") || newNumber.length() != 10) { - throw new BadRequestException(INCORRECT_ECO_NUMBER); - } - order.getAdditionalOrders().add(newNumber); - }); + added.forEach(newNumber -> { + if (!newNumber.matches("[0-9]+") || newNumber.length() != 10) { + throw new BadRequestException(INCORRECT_ECO_NUMBER); + } + order.getAdditionalOrders().add(newNumber); + }); } orderRepository.save(order); @@ -1590,7 +1620,7 @@ private String collectInfoAboutChangesOfEcoNumber(Collection newEcoNumbe private void isOrderStatusCanceledOrDone(Order order) { if (order.getOrderStatus() == OrderStatus.CANCELED || order.getOrderStatus() == OrderStatus.DONE) { - throw new IllegalStateException(String.format(ORDER_CAN_NOT_BE_UPDATED, order.getOrderStatus())); + throw new BadRequestException(String.format(ORDER_CAN_NOT_BE_UPDATED, order.getOrderStatus())); } } @@ -1600,28 +1630,28 @@ private void updateOrderPageFields(UpdateOrderPageAdminDto updateOrderPageDto, O ubsClientService.updateUbsUserInfoInOrder(updateOrderPageDto.getUserInfoDto(), email); } if (nonNull(updateOrderPageDto.getAddressExportDetailsDto())) { - updateAddress(updateOrderPageDto.getAddressExportDetailsDto(), orderId, email); + updateAddress(updateOrderPageDto.getAddressExportDetailsDto(), order, email); } - setUbsCourierSumAndWriteOffStationSum(orderId, updateOrderPageDto.getWriteOffStationSum(), + setUbsCourierSumAndWriteOffStationSum(order, updateOrderPageDto.getWriteOffStationSum(), updateOrderPageDto.getUbsCourierSum()); if (nonNull(updateOrderPageDto.getExportDetailsDto())) { - updateOrderExportDetails(orderId, updateOrderPageDto.getExportDetailsDto(), email); + updateOrderExportDetails(order, updateOrderPageDto.getExportDetailsDto(), email); } if (nonNull(updateOrderPageDto.getGeneralOrderInfo())) { - updateOrderDetailStatus(orderId, updateOrderPageDto.getGeneralOrderInfo(), email); + updateOrderDetailStatus(order, updateOrderPageDto.getGeneralOrderInfo(), email); } if (nonNull(updateOrderPageDto.getEcoNumberFromShop())) { - updateEcoNumberForOrder(updateOrderPageDto.getEcoNumberFromShop(), orderId, email); + updateEcoNumberForOrder(updateOrderPageDto.getEcoNumberFromShop(), order, email); } if (nonNull(updateOrderPageDto.getOrderDetailDto())) { setOrderDetail( - orderId, + order, updateOrderPageDto.getOrderDetailDto().getAmountOfBagsConfirmed(), updateOrderPageDto.getOrderDetailDto().getAmountOfBagsExported(), email); } if (nonNull(updateOrderPageDto.getUpdateResponsibleEmployeeDto())) { - updateOrderPageDto.getUpdateResponsibleEmployeeDto().stream() + updateOrderPageDto.getUpdateResponsibleEmployeeDto() .forEach(dto -> ordersAdminsPageService.responsibleEmployee(List.of(orderId), dto.getEmployeeId().toString(), dto.getPositionId(), @@ -1638,27 +1668,48 @@ private void updateOrderPageFields(UpdateOrderPageAdminDto updateOrderPageDto, O } } + /** + * This is method which is updates admin page info for order and save reason. + * + * @param orderId {@link Long}. + * @param updateOrderPageAdminDto {@link UpdateOrderPageAdminDto}. + * @param language {@link String}. + * @param email {@link String}. + * @param description {@link String}. + * @param images {@link MultipartFile}. + * + * @author Anton Bondar. + */ + @Override + @Transactional + public void updateOrderAdminPageInfoAndSaveReason(Long orderId, UpdateOrderPageAdminDto updateOrderPageAdminDto, + String language, + String email, String description, MultipartFile[] images) { + Order order = orderRepository.findById(orderId) + .orElseThrow(() -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + orderId)); + + updateOrderAdminPageInfo(updateOrderPageAdminDto, order, language, email); + saveReason(order, description, images); + } + /** * This is method which is updates admin page info for order. * * @param updateOrderPageDto {@link UpdateOrderPageAdminDto}. - * @param orderId {@link Long}. + * @param order {@link Order}. * @author Yuriy Bahlay, Sikhovskiy Rostyslav. */ @Override @Transactional - public void updateOrderAdminPageInfo(UpdateOrderPageAdminDto updateOrderPageDto, Long orderId, String lang, + public void updateOrderAdminPageInfo(UpdateOrderPageAdminDto updateOrderPageDto, Order order, String lang, String email) { - Order order = orderRepository.findById(orderId) - .orElseThrow(() -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + orderId)); - isOrderStatusCanceledOrDone(order); checkAvailableOrderForEmployee(order, email); if (order.getOrderStatus() == OrderStatus.BROUGHT_IT_HIMSELF && nonNull(updateOrderPageDto.getGeneralOrderInfo())) { - updateOrderDetailStatus(orderId, updateOrderPageDto.getGeneralOrderInfo(), email); + updateOrderDetailStatus(order, updateOrderPageDto.getGeneralOrderInfo(), email); } else { try { updateOrderPageFields(updateOrderPageDto, order, email); @@ -1668,9 +1719,7 @@ && nonNull(updateOrderPageDto.getGeneralOrderInfo())) { } } - private void setUbsCourierSumAndWriteOffStationSum(Long orderId, Double writeOffStationSum, Double ubsCourierSum) { - Order order = orderRepository.findById(orderId) - .orElseThrow(() -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + orderId)); + private void setUbsCourierSumAndWriteOffStationSum(Order order, Double writeOffStationSum, Double ubsCourierSum) { if (writeOffStationSum != null) { order.setWriteOffStationSum(convertBillsIntoCoins(writeOffStationSum)); } @@ -1732,7 +1781,7 @@ public void updateAllOrderAdminPageInfo(UpdateAllOrderPageDto updateAllOrderPage Order order = orderRepository.findById(id).orElseThrow( () -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + id)); try { - updateOrderExportDetails(id, updateAllOrderPageDto.getExportDetailsDto(), email); + updateOrderExportDetailsById(id, updateAllOrderPageDto.getExportDetailsDto(), email); checkUpdateResponsibleEmployeeDto(updateAllOrderPageDto, order, email); } catch (Exception e) { throw new BadRequestException(e.getMessage()); diff --git a/service/src/test/java/greencity/ModelUtils.java b/service/src/test/java/greencity/ModelUtils.java index 01c8d4cf8..9a26a60cc 100644 --- a/service/src/test/java/greencity/ModelUtils.java +++ b/service/src/test/java/greencity/ModelUtils.java @@ -3235,10 +3235,10 @@ public static UpdateOrderPageAdminDto updateOrderPageAdminDto() { .build()) .userInfoDto(UbsCustomersDtoUpdate .builder() - .recipientId(2L) - .recipientName("aaaaa") - .recipientPhoneNumber("085555") - .recipientEmail("yura@333gmail.com") + .recipientId(1L) + .recipientName("Anatolii Petyrov") + .recipientPhoneNumber("095123456") + .recipientEmail("anatolii.andr@gmail.com") .build()) .addressExportDetailsDto(OrderAddressExportDetailsDtoUpdate .builder() diff --git a/service/src/test/java/greencity/service/ubs/UBSManagementServiceImplTest.java b/service/src/test/java/greencity/service/ubs/UBSManagementServiceImplTest.java index 208fefea9..9934a1ac6 100644 --- a/service/src/test/java/greencity/service/ubs/UBSManagementServiceImplTest.java +++ b/service/src/test/java/greencity/service/ubs/UBSManagementServiceImplTest.java @@ -8,6 +8,7 @@ import greencity.dto.bag.AdditionalBagInfoDto; import greencity.dto.bag.BagInfoDto; import greencity.dto.bag.BagMappingDto; +import greencity.dto.bag.ReasonNotTakeBagDto; import greencity.dto.certificate.CertificateDtoForSearching; import greencity.dto.employee.EmployeePositionDtoRequest; import greencity.dto.order.AdminCommentDto; @@ -153,7 +154,13 @@ import static greencity.ModelUtils.getOrderStatusTranslations; import static greencity.ModelUtils.getOrderUserFirst; import static greencity.ModelUtils.getOrderWithoutPayment; +import static greencity.ModelUtils.getOrdersStatusBROUGHT_IT_HIMSELFDto; +import static greencity.ModelUtils.getOrdersStatusCanseledDto; +import static greencity.ModelUtils.getOrdersStatusConfirmedDto; +import static greencity.ModelUtils.getOrdersStatusDoneDto; import static greencity.ModelUtils.getOrdersStatusFormedDto; +import static greencity.ModelUtils.getOrdersStatusNotTakenOutDto; +import static greencity.ModelUtils.getOrdersStatusOnThe_RouteDto; import static greencity.ModelUtils.getPayment; import static greencity.ModelUtils.getReceivingList; import static greencity.ModelUtils.getReceivingStation; @@ -167,7 +174,6 @@ import static greencity.ModelUtils.updateAllOrderPageDto; import static greencity.ModelUtils.updateOrderPageAdminDto; import static greencity.constant.ErrorMessage.EMPLOYEE_NOT_FOUND; -import static greencity.constant.ErrorMessage.ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST; import static greencity.constant.ErrorMessage.ORDER_CAN_NOT_BE_UPDATED; import static java.util.Collections.singletonList; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -179,10 +185,9 @@ import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.eq; -import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.Mockito.when; @@ -332,9 +337,11 @@ void updateExportDetailsByOrderId() { List stations = List.of(new ReceivingStation()); when(receivingStationRepository.findAll()).thenReturn(stations); - ubsManagementService.updateOrderExportDetails(order.getId(), dto, "abc"); + ubsManagementService.updateOrderExportDetailsById(order.getId(), dto, "abc"); - verify(orderRepository, times(1)).save(order); + verify(orderRepository).findById(1L); + verify(receivingStationRepository).findById(1L); + verify(receivingStationRepository).findAll(); } @Test @@ -347,9 +354,11 @@ void updateExportDetailsNotSuccessfulByOrderId() { List stations = List.of(new ReceivingStation()); when(receivingStationRepository.findAll()).thenReturn(stations); - ubsManagementService.updateOrderExportDetails(order.getId(), dto, "abc"); + ubsManagementService.updateOrderExportDetailsById(order.getId(), dto, "abc"); - verify(orderRepository, times(1)).save(order); + verify(orderRepository).findById(1L); + verify(receivingStationRepository).findById(1L); + verify(receivingStationRepository).findAll(); } @Test @@ -703,17 +712,17 @@ void checkReturnOverpaymentInfo() { } @Test - void checkReturnOverpaymentThroweException() { + void checkReturnOverpaymentThrowsException() { Assertions.assertThrows(NotFoundException.class, () -> ubsManagementService.returnOverpaymentInfo(100L, 1., 1L)); } @Test - void checkReturnOverpaymentThroweExceptioninGetPaymentInfo() { + void checkReturnOverpaymentThrowsExceptionInGetPaymentInfo() { Order order = getOrder(); when(orderRepository.findUserById(1L)).thenReturn(Optional.of(order)); - Assertions.assertThrows(NotFoundException.class, () -> ubsManagementService.returnOverpaymentInfo(1L, 1., 1L)); + verify(orderRepository).findUserById(1L); } @Test @@ -752,7 +761,8 @@ void updateOrderDetailStatusThrowException() { when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrder())); OrderDetailStatusRequestDto requestDto = getTestOrderDetailStatusRequestDto(); assertThrows(NotFoundException.class, - () -> ubsManagementService.updateOrderDetailStatus(1L, requestDto, "uuid")); + () -> ubsManagementService.updateOrderDetailStatusById(1L, requestDto, "uuid")); + verify(orderRepository).findById(1L); } @Test @@ -768,22 +778,22 @@ void updateOrderDetailStatusFirst() { order.setPayment(payment); - when(orderRepository.findById(anyLong())).thenReturn(Optional.of(order)); - when(paymentRepository.findAllByOrderId(anyLong())).thenReturn(payment); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); + when(paymentRepository.findAllByOrderId(1L)).thenReturn(payment); when(paymentRepository.saveAll(any())).thenReturn(payment); when(orderRepository.save(any())).thenReturn(order); OrderDetailStatusRequestDto testOrderDetail = getTestOrderDetailStatusRequestDto(); OrderDetailStatusDto expectedObject = ModelUtils.getTestOrderDetailStatusDto(); OrderDetailStatusDto producedObject = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObject.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObject.getPaymentStatus()); assertEquals(expectedObject.getDate(), producedObject.getDate()); testOrderDetail.setOrderStatus(OrderStatus.FORMED.toString()); expectedObject.setOrderStatus(OrderStatus.FORMED.toString()); OrderDetailStatusDto producedObjectAdjustment = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObjectAdjustment.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectAdjustment.getPaymentStatus()); @@ -792,7 +802,7 @@ void updateOrderDetailStatusFirst() { testOrderDetail.setOrderStatus(OrderStatus.ADJUSTMENT.toString()); expectedObject.setOrderStatus(OrderStatus.ADJUSTMENT.toString()); OrderDetailStatusDto producedObjectConfirmed = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObjectConfirmed.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectConfirmed.getPaymentStatus()); @@ -801,7 +811,7 @@ void updateOrderDetailStatusFirst() { testOrderDetail.setOrderStatus(OrderStatus.CONFIRMED.toString()); expectedObject.setOrderStatus(OrderStatus.CONFIRMED.toString()); OrderDetailStatusDto producedObjectNotTakenOut = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObjectNotTakenOut.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectNotTakenOut.getPaymentStatus()); @@ -811,7 +821,7 @@ void updateOrderDetailStatusFirst() { testOrderDetail.setOrderStatus(OrderStatus.CANCELED.toString()); expectedObject.setOrderStatus(OrderStatus.CANCELED.toString()); OrderDetailStatusDto producedObjectCancelled = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObjectCancelled.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectCancelled.getPaymentStatus()); @@ -822,7 +832,7 @@ void updateOrderDetailStatusFirst() { testOrderDetail.setOrderStatus(OrderStatus.DONE.toString()); expectedObject.setOrderStatus(OrderStatus.DONE.toString()); OrderDetailStatusDto producedObjectDone = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObjectDone.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectDone.getPaymentStatus()); @@ -833,7 +843,7 @@ void updateOrderDetailStatusFirst() { testOrderDetail.setOrderStatus(OrderStatus.CANCELED.toString()); expectedObject.setOrderStatus(OrderStatus.CANCELED.toString()); OrderDetailStatusDto producedObjectCancelled2 = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObjectCancelled2.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectCancelled2.getPaymentStatus()); @@ -844,7 +854,7 @@ void updateOrderDetailStatusFirst() { testOrderDetail.setOrderStatus(OrderStatus.BROUGHT_IT_HIMSELF.toString()); expectedObject.setOrderStatus(OrderStatus.BROUGHT_IT_HIMSELF.toString()); OrderDetailStatusDto producedObjectBroughtItHimself = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObjectBroughtItHimself.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectBroughtItHimself.getPaymentStatus()); @@ -854,7 +864,7 @@ void updateOrderDetailStatusFirst() { testOrderDetail.setOrderStatus(OrderStatus.CANCELED.toString()); expectedObject.setOrderStatus(OrderStatus.CANCELED.toString()); OrderDetailStatusDto producedObjectCancelled3 = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "test@gmail.com"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "test@gmail.com"); assertEquals(expectedObject.getOrderStatus(), producedObjectCancelled3.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectCancelled3.getPaymentStatus()); @@ -886,8 +896,8 @@ void updateOrderDetailStatusSecond() { List payment = new ArrayList<>(); payment.add(Payment.builder().build()); - when(orderRepository.findById(anyLong())).thenReturn(Optional.of(order)); - when(paymentRepository.findAllByOrderId(anyLong())).thenReturn(payment); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); + when(paymentRepository.findAllByOrderId(1L)).thenReturn(payment); when(paymentRepository.saveAll(any())).thenReturn(payment); when(orderRepository.save(any())).thenReturn(order); @@ -898,11 +908,16 @@ void updateOrderDetailStatusSecond() { testOrderDetail.setOrderStatus(OrderStatus.ON_THE_ROUTE.toString()); expectedObject.setOrderStatus(OrderStatus.ON_THE_ROUTE.toString()); OrderDetailStatusDto producedObjectOnTheRoute = ubsManagementService - .updateOrderDetailStatus(order.getId(), testOrderDetail, "abc"); + .updateOrderDetailStatusById(order.getId(), testOrderDetail, "abc"); assertEquals(expectedObject.getOrderStatus(), producedObjectOnTheRoute.getOrderStatus()); assertEquals(expectedObject.getPaymentStatus(), producedObjectOnTheRoute.getPaymentStatus()); assertEquals(expectedObject.getDate(), producedObjectOnTheRoute.getDate()); + + verify(orderRepository).findById(1L); + verify(paymentRepository).findAllByOrderId(1L); + verify(paymentRepository).saveAll(any()); + verify(orderRepository, times(2)).save(any()); } @Test @@ -953,37 +968,35 @@ void getAllEmployeesByPositionThrowBadRequestException() { @Test void testUpdateAddress() { + Order order = getOrder(); OrderAddress orderAddress = getOrderAddress(); orderAddress.setId(1L); OrderAddressExportDetailsDtoUpdate dtoUpdate = ModelUtils.getOrderAddressExportDetailsDtoUpdate(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(TEST_ORDER)); when(orderAddressRepository.findById(dtoUpdate.getAddressId())).thenReturn(Optional.of(orderAddress)); when(orderAddressRepository.save(orderAddress)).thenReturn(orderAddress); when(modelMapper.map(orderAddress, OrderAddressDtoResponse.class)).thenReturn(TEST_ORDER_ADDRESS_DTO_RESPONSE); Optional actual = - ubsManagementService.updateAddress(TEST_ORDER_ADDRESS_DTO_UPDATE, 1L, "test@gmail.com"); + ubsManagementService.updateAddress(TEST_ORDER_ADDRESS_DTO_UPDATE, order, "test@gmail.com"); assertEquals(Optional.of(TEST_ORDER_ADDRESS_DTO_RESPONSE), actual); - verify(orderRepository).findById(1L); + + verify(orderAddressRepository).findById(dtoUpdate.getAddressId()); verify(orderAddressRepository).save(orderAddress); - verify(orderAddressRepository).findById(orderAddress.getId()); verify(modelMapper).map(orderAddress, OrderAddressDtoResponse.class); } @Test void testUpdateAddressThrowsOrderNotFoundException() { - when(orderRepository.findById(1L)).thenReturn(Optional.empty()); - + Order order = getOrder(); assertThrows(NotFoundException.class, - () -> ubsManagementService.updateAddress(TEST_ORDER_ADDRESS_DTO_UPDATE, 1L, "abc")); + () -> ubsManagementService.updateAddress(TEST_ORDER_ADDRESS_DTO_UPDATE, order, "abc")); } @Test void testUpdateAddressThrowsNotFoundOrderAddressException() { - when(orderRepository.findById(1L)).thenReturn(Optional.of(ModelUtils.getOrderWithoutAddress())); - + Order order = getOrder(); assertThrows(NotFoundException.class, - () -> ubsManagementService.updateAddress(TEST_ORDER_ADDRESS_DTO_UPDATE, 1L, "abc")); + () -> ubsManagementService.updateAddress(TEST_ORDER_ADDRESS_DTO_UPDATE, order, "abc")); } @Test @@ -1143,116 +1156,97 @@ void testGetAdditionalBagsInfoThrowsException() { @Test void testSetOrderDetail() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusDoneDto())); + Order order = getOrdersStatusDoneDto(); + when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag1list()); when(paymentRepository.selectSumPaid(1L)).thenReturn(5000L); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); + verify(bagRepository, times(2)).findCapacityById(1); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); + verify(bagRepository).findBagsByOrderId(1L); + verify(paymentRepository, times(2)).selectSumPaid(1L); } @Test - void testSetOrderDetailNeedToChangeStatusToHALF_PAID() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusDoneDto())); + void testSetOrderDetailNeedToChangeStatusToHalfPaid() { + Order order = getOrdersStatusDoneDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag1list()); when(paymentRepository.selectSumPaid(1L)).thenReturn(5000L); - doNothing().when(orderRepository).updateOrderPaymentStatus(1L, OrderPaymentStatus.HALF_PAID.name()); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - verify(orderRepository).updateOrderPaymentStatus(1L, OrderPaymentStatus.HALF_PAID.name()); - verify(notificationService).notifyHalfPaidPackage(any(Order.class)); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); + verify(bagRepository).findBagsByOrderId(1L); + verify(paymentRepository, times(2)).selectSumPaid(1L); } @Test - void testSetOrderDetailNeedToChangeStatusToUNPAID() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusDoneDto())); + void testSetOrderDetailNeedToChangeStatusToUnpaid() { + Order order = getOrdersStatusDoneDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag1list()); when(paymentRepository.selectSumPaid(1L)).thenReturn(null); - doNothing().when(orderRepository).updateOrderPaymentStatus(1L, OrderPaymentStatus.UNPAID.name()); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - verify(orderRepository).updateOrderPaymentStatus(1L, OrderPaymentStatus.UNPAID.name()); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); + verify(bagRepository).findBagsByOrderId(1L); + verify(paymentRepository).selectSumPaid(1L); } @Test void testSetOrderDetailWhenSumPaidIsNull() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusDoneDto())); + Order order = getOrdersStatusDoneDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); when(paymentRepository.selectSumPaid(1L)).thenReturn(null); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - } - - @Test - void testSetOrderDetailWhenOrderNotFound() { - when(orderRepository.findById(1L)).thenReturn(Optional.empty()); - Map amountOfBagsConfirmed = UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto() - .getAmountOfBagsConfirmed(); - Map amountOfBagsExported = UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto() - .getAmountOfBagsExported(); - - NotFoundException exception = assertThrows(NotFoundException.class, - () -> ubsManagementService.setOrderDetail( - 1L, - amountOfBagsConfirmed, - amountOfBagsExported, - "abc"), - ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST); - - assertEquals(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST, exception.getMessage()); + verify(bagRepository, times(2)).findCapacityById(1); - verify(orderRepository).findById(1L); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); + verify(paymentRepository).selectSumPaid(1L); } @Test void testSetOrderDetailIfHalfPaid() { - Order orderDto = ModelUtils.getOrdersStatusDoneDto(); + Order order = getOrder(); Order orderDetailDto = getOrdersStatusFormedDto(); + Bag tariffBagDto = ModelUtils.getTariffBag(); List bagList = getBaglist(); - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(orderDto)); + when(bagRepository.findCapacityById(1)).thenReturn(1); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(orderDetailDto)); when(bagRepository.findById(1)).thenReturn(Optional.ofNullable(tariffBagDto)); @@ -1260,257 +1254,270 @@ void testSetOrderDetailIfHalfPaid() { when(paymentRepository.selectSumPaid(1L)).thenReturn(0L); when(orderRepository.findSumOfCertificatesByOrderId(1L)).thenReturn(0L); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - verify(orderRepository).updateOrderPaymentStatus(1L, OrderPaymentStatus.UNPAID.name()); + + verify(bagRepository, times(2)).findCapacityById(1); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); + verify(bagRepository).findBagsByOrderId(1L); + verify(paymentRepository, times(2)).selectSumPaid(1L); + verify(orderRepository).findSumOfCertificatesByOrderId(1L); } @Test void testSetOrderDetailIfPaidAndPriceLessThanDiscount() { Order order = ModelUtils.getOrdersStatusAdjustmentDto2(); - when(orderRepository.findById(order.getId())).thenReturn(Optional.of(order)); + when(certificateRepository.findCertificate(order.getId())).thenReturn(List.of(ModelUtils.getCertificate2())); when(orderRepository.findSumOfCertificatesByOrderId(order.getId())).thenReturn(600L); - when(orderRepository.getOrderDetails(anyLong())) + when(orderRepository.getOrderDetails(1L)) .thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusFormedDto2())); when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(order.getId(), + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(certificateRepository).save(ModelUtils.getCertificate2().setPoints(20)); - verify(userRepository).updateUserCurrentPoints(1L, 100); - verify(orderRepository).updateOrderPointsToUse(1L, 0); + verify(certificateRepository).findCertificate(order.getId()); + verify(orderRepository).findSumOfCertificatesByOrderId(order.getId()); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository).findBagsByOrderId(1L); + verify(bagRepository, times(2)).findById(1); } @Test void testSetOrderDetailIfPaidAndPriceLessThanPaidSum() { Order order = ModelUtils.getOrdersStatusAdjustmentDto2(); when(paymentRepository.selectSumPaid(order.getId())).thenReturn(10000L); - when(orderRepository.findById(order.getId())).thenReturn(Optional.of(order)); when(certificateRepository.findCertificate(order.getId())).thenReturn(List.of(ModelUtils.getCertificate2())); when(orderRepository.findSumOfCertificatesByOrderId(order.getId())).thenReturn(600L); - when(orderRepository.getOrderDetails(anyLong())) + when(orderRepository.getOrderDetails(1L)) .thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusFormedDto2())); when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(order.getId(), + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(certificateRepository).save(ModelUtils.getCertificate2().setPoints(0)); - verify(userRepository).updateUserCurrentPoints(1L, 100); - verify(orderRepository).updateOrderPointsToUse(1L, 0); + verify(paymentRepository, times(2)).selectSumPaid(order.getId()); + verify(certificateRepository).findCertificate(order.getId()); + verify(orderRepository).findSumOfCertificatesByOrderId(order.getId()); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository).findBagsByOrderId(1L); + verify(bagRepository, times(2)).findById(1); } @Test void testSetOrderDetailConfirmed() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusConfirmedDto())); + Order order = getOrdersStatusConfirmedDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); - when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(1L, + + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "test@gmail.com"); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository, times(0)).updateExporter(anyInt(), anyLong(), anyLong()); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test void testSetOrderDetailConfirmed2() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusConfirmedDto())); + Order order = getOrdersStatusConfirmedDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - when(orderDetailRepository.ifRecordExist(any(), any())).thenReturn(1L); - when(orderDetailRepository.getAmount(any(), any())).thenReturn(1L); - ubsManagementService.setOrderDetail(1L, + when(orderDetailRepository.ifRecordExist(1L, 1L)).thenReturn(1L); + when(orderDetailRepository.getAmount(1L, 1L)).thenReturn(1L); + + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "test@gmail.com"); - verify(orderRepository, times(2)).findById(1L); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); verify(bagRepository, times(2)).findById(1); - verify(orderDetailRepository, times(2)).ifRecordExist(any(), any()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).getAmount(any(), any()); - verify(orderDetailRepository, times(0)).updateExporter(anyInt(), anyLong(), anyLong()); + verify(orderDetailRepository, times(2)).ifRecordExist(1L, 1L); + verify(orderDetailRepository).getAmount(1L, 1L); } @Test void testSetOrderDetailWithExportedWaste() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusDoneDto())); + Order order = getOrdersStatusDoneDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - when(orderDetailRepository.ifRecordExist(any(), any())).thenReturn(1L); - ubsManagementService.setOrderDetail(1L, + when(orderDetailRepository.ifRecordExist(1L, 1L)).thenReturn(1L); + + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "test@gmail.com"); - verify(orderRepository, times(2)).findById(1L); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); verify(bagRepository, times(2)).findById(1); - verify(orderDetailRepository, times(3)).ifRecordExist(any(), any()); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); + verify(orderDetailRepository, times(3)).ifRecordExist(1L, 1L); } @Test void testSetOrderDetailFormed() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + Order order = getOrdersStatusFormedDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "test@gmail.com"); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test void testSetOrderDetailFormedWithBagNoPresent() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + Order order = getOrdersStatusFormedDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.empty()); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "test@gmail.com"); - verify(orderDetailRepository, times(0)).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - + verify(bagRepository, times(2)).findCapacityById(1); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test void testSetOrderDetailNotTakenOut() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusNotTakenOutDto())); + Order order = getOrdersStatusNotTakenOutDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); - when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), - UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), - "abc"); + UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); + + verify(bagRepository, times(2)).findCapacityById(1); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); } @Test void testSetOrderDetailOnTheRoute() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusOnThe_RouteDto())); + Order order = getOrdersStatusOnThe_RouteDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), - UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), - "abc"); + UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository, times(0)).updateExporter(anyInt(), anyLong(), anyLong()); + verify(bagRepository, times(2)).findCapacityById(1); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test void testSetOrderDetailsDone() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusDoneDto())); + Order order = getOrdersStatusDoneDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(1L, + + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test void testSetOrderBroughtItHimself() { - when(orderRepository.findById(1L)) - .thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusBROUGHT_IT_HIMSELFDto())); + Order order = getOrdersStatusBROUGHT_IT_HIMSELFDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(1L, + + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - verify(orderDetailRepository, times(0)).updateExporter(anyInt(), anyLong(), anyLong()); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test - void testSetOrderDetailsCanseled() { - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusCanseledDto())); + void testSetOrderDetailsCanceled() { + Order order = getOrdersStatusCanseledDto(); when(bagRepository.findCapacityById(1)).thenReturn(1); - doNothing().when(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); - doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.setOrderDetail(1L, + ubsManagementService.setOrderDetail(order, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(orderDetailRepository).updateExporter(anyInt(), anyLong(), anyLong()); + verify(bagRepository, times(2)).findCapacityById(1); + + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test void setOrderDetailExceptionTest() { + Order order = getOrder(); Map confirm = UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(); Map exported = UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(); assertThrows(NotFoundException.class, - () -> ubsManagementService.setOrderDetail(1L, confirm, exported, "test@gmail.com")); + () -> ubsManagementService.setOrderDetail(order, confirm, exported, "test@gmail.com")); } @Test void testSetOrderDetailThrowsUserNotFoundException() { + Order order = getOrder(); Map confirm = UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(); Map exported = UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(); assertThrows(NotFoundException.class, - () -> ubsManagementService.setOrderDetail(1L, confirm, exported, "test@gmail.com")); + () -> ubsManagementService.setOrderDetail(order, confirm, exported, "test@gmail.com")); } @Test @@ -1519,48 +1526,53 @@ void testSaveAdminToOrder() { TariffsInfo tariffsInfo = getTariffsInfo(); order.setTariffsInfo(tariffsInfo); Employee employee = getEmployee(); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); - when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)).thenReturn(Optional.of(tariffsInfo)); + ubsManagementService.saveAdminCommentToOrder(getAdminCommentDto(), "test@gmail.com"); - verify(orderRepository, times(1)).save(order); - verify(eventService, times(1)).save(any(), any(), any()); - verify(tariffsInfoRepository, atLeastOnce()).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); + + verify(orderRepository).findById(1L); + verify(employeeRepository).findByEmail("test@gmail.com"); + verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(1L, 1L); } @Test - void testUpdateEcoNumberForOrder() { + void testUpdateEcoNumberForOrderById() { when(orderRepository.findById(1L)).thenReturn(Optional.of(getOrder())); - ubsManagementService.updateEcoNumberForOrder(getEcoNumberDto(), 1L, "abc"); - verify(eventService, times(1)).saveEvent(any(), any(), any()); + ubsManagementService.updateEcoNumberForOrderById(getEcoNumberDto(), 1L, "abc"); + verify(orderRepository).findById(1L); } @Test - void testUpdateEcoNumberThrowOrderNotFoundException() { + void testUpdateEcoNumberForOrderByIdThrowOrderNotFoundException() { EcoNumberDto dto = getEcoNumberDto(); when(orderRepository.findById(1L)).thenReturn(Optional.empty()); assertThrows(NotFoundException.class, - () -> ubsManagementService.updateEcoNumberForOrder(dto, 1L, "test@gmail.com")); + () -> ubsManagementService.updateEcoNumberForOrderById(dto, 1L, "test@gmail.com")); + verify(orderRepository).findById(1L); } @Test - void updateEcoNumberTrowsException() { + void testUpdateEcoNumberForOrderByIdTrowsException() { when(orderRepository.findById(1L)).thenReturn(Optional.empty()); EcoNumberDto ecoNumberDto = getEcoNumberDto(); assertThrows(NotFoundException.class, - () -> ubsManagementService.updateEcoNumberForOrder(ecoNumberDto, 1L, "abc")); + () -> ubsManagementService.updateEcoNumberForOrderById(ecoNumberDto, 1L, "abc")); + verify(orderRepository).findById(1L); } @Test - void updateEcoNumberTrowsIncorrectEcoNumberFormatException() { + void testUpdateEcoNumberForOrderByIdTrowsIncorrectEcoNumberFormatException() { when(orderRepository.findById(1L)).thenReturn(Optional.of(getOrder())); EcoNumberDto ecoNumberDto = getEcoNumberDto(); ecoNumberDto.setEcoNumber(new HashSet<>(List.of("1234a"))); assertThrows(BadRequestException.class, - () -> ubsManagementService.updateEcoNumberForOrder(ecoNumberDto, 1L, "abc")); + () -> ubsManagementService.updateEcoNumberForOrderById(ecoNumberDto, 1L, "abc")); + verify(orderRepository).findById(1L); } @Test @@ -1569,6 +1581,7 @@ void saveAdminCommentThrowsException() { AdminCommentDto adminCommentDto = getAdminCommentDto(); assertThrows(NotFoundException.class, () -> ubsManagementService.saveAdminCommentToOrder(adminCommentDto, "abc")); + verify(orderRepository).findById(1L); } @Test @@ -1600,80 +1613,94 @@ void getOrderStatusDataThrowsUnexistingOrderExceptionTest() { @Test void updateOrderAdminPageInfoTest() { - OrderDetailStatusRequestDto orderDetailStatusRequestDto = getTestOrderDetailStatusRequestDto(); Order order = getOrder(); TariffsInfo tariffsInfo = getTariffsInfo(); order.setOrderDate(LocalDateTime.now()).setTariffsInfo(tariffsInfo); Employee employee = getEmployee(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); + when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); - when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); - when(paymentRepository.findAllByOrderId(1L)) - .thenReturn(List.of(getPayment())); - lenient().when(ubsManagementServiceMock.updateOrderDetailStatus(1L, orderDetailStatusRequestDto, "abc")) - .thenReturn(ModelUtils.getTestOrderDetailStatusDto()); + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)).thenReturn(Optional.of(tariffsInfo)); + when(paymentRepository.findAllByOrderId(1L)).thenReturn(List.of(getPayment())); + when(ubsClientService.updateUbsUserInfoInOrder(ModelUtils.getUbsCustomersDtoUpdate(), "test@gmail.com")).thenReturn(ModelUtils.getUbsCustomersDto()); UpdateOrderPageAdminDto updateOrderPageAdminDto = updateOrderPageAdminDto(); updateOrderPageAdminDto.setUserInfoDto(ModelUtils.getUbsCustomersDtoUpdate()); - when(orderAddressRepository.findById(1L)) - .thenReturn(Optional.of(getOrderAddress())); - when(receivingStationRepository.findAll()) - .thenReturn(List.of(getReceivingStation())); + + when(orderAddressRepository.findById(1L)).thenReturn(Optional.of(getOrderAddress())); + when(receivingStationRepository.findAll()).thenReturn(List.of(getReceivingStation())); + var receivingStation = getReceivingStation(); + when(receivingStationRepository.findById(1L)).thenReturn(Optional.of(receivingStation)); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, 1L, "en", "test@gmail.com"); + ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, order, "en", "test@gmail.com"); UpdateOrderPageAdminDto emptyDto = new UpdateOrderPageAdminDto(); - ubsManagementService.updateOrderAdminPageInfo(emptyDto, 1L, "en", "test@gmail.com"); + ubsManagementService.updateOrderAdminPageInfo(emptyDto, order, "en", "test@gmail.com"); - verify(ubsClientService, times(1)) - .updateUbsUserInfoInOrder(ModelUtils.getUbsCustomersDtoUpdate(), "test@gmail.com"); - verify(tariffsInfoRepository, atLeastOnce()).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); + verify(ubsClientService).updateUbsUserInfoInOrder(ModelUtils.getUbsCustomersDtoUpdate(), "test@gmail.com"); + + verify(employeeRepository, times(2)).findByEmail("test@gmail.com"); + verify(tariffsInfoRepository, times(2)).findTariffsInfoByIdForEmployee(1L, 1L); + verify(paymentRepository).findAllByOrderId(1L); + + verify(ubsClientService).updateUbsUserInfoInOrder(ModelUtils.getUbsCustomersDtoUpdate(), "test@gmail.com"); + + verify(orderAddressRepository).findById(1L); + verify(receivingStationRepository).findAll(); + + verify(receivingStationRepository).findById(1L); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test void updateOrderAdminPageInfoWithUbsCourierSumAndWriteOffStationSum() { - OrderDetailStatusRequestDto orderDetailStatusRequestDto = getTestOrderDetailStatusRequestDto(); Order order = getOrder(); TariffsInfo tariffsInfo = getTariffsInfo(); order.setOrderDate(LocalDateTime.now()).setTariffsInfo(tariffsInfo); Employee employee = getEmployee(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); - when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); - when(paymentRepository.findAllByOrderId(1L)) - .thenReturn(List.of(getPayment())); - lenient().when(ubsManagementServiceMock.updateOrderDetailStatus(1L, orderDetailStatusRequestDto, "abc")) - .thenReturn(ModelUtils.getTestOrderDetailStatusDto()); + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)).thenReturn(Optional.of(tariffsInfo)); + when(paymentRepository.findAllByOrderId(1L)).thenReturn(List.of(getPayment())); + when(ubsClientService.updateUbsUserInfoInOrder(ModelUtils.getUbsCustomersDtoUpdate(), "test@gmail.com")).thenReturn(ModelUtils.getUbsCustomersDto()); + UpdateOrderPageAdminDto updateOrderPageAdminDto = updateOrderPageAdminDto(); updateOrderPageAdminDto.setUserInfoDto(ModelUtils.getUbsCustomersDtoUpdate()); updateOrderPageAdminDto.setUbsCourierSum(50.); updateOrderPageAdminDto.setWriteOffStationSum(100.); - when(orderAddressRepository.findById(1L)) - .thenReturn(Optional.of(getOrderAddress())); - when(receivingStationRepository.findAll()) - .thenReturn(List.of(getReceivingStation())); + + when(orderAddressRepository.findById(1L)).thenReturn(Optional.of(getOrderAddress())); + when(receivingStationRepository.findAll()).thenReturn(List.of(getReceivingStation())); + var receivingStation = getReceivingStation(); + when(receivingStationRepository.findById(1L)).thenReturn(Optional.of(receivingStation)); - when(orderRepository.getOrderDetails(anyLong())) - .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); - ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, 1L, "en", "test@gmail.com"); + ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, order, "en", "test@gmail.com"); UpdateOrderPageAdminDto emptyDto = new UpdateOrderPageAdminDto(); - ubsManagementService.updateOrderAdminPageInfo(emptyDto, 1L, "en", "test@gmail.com"); + ubsManagementService.updateOrderAdminPageInfo(emptyDto, order, "en", "test@gmail.com"); - verify(ubsClientService, times(1)) - .updateUbsUserInfoInOrder(ModelUtils.getUbsCustomersDtoUpdate(), "test@gmail.com"); - verify(tariffsInfoRepository, atLeastOnce()).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); + verify(ubsClientService).updateUbsUserInfoInOrder(ModelUtils.getUbsCustomersDtoUpdate(), "test@gmail.com"); + + verify(employeeRepository, times(2)).findByEmail("test@gmail.com"); + verify(tariffsInfoRepository, times(2)).findTariffsInfoByIdForEmployee(1L, 1L); + verify(paymentRepository).findAllByOrderId(1L); + + verify(ubsClientService).updateUbsUserInfoInOrder(ModelUtils.getUbsCustomersDtoUpdate(), "test@gmail.com"); + + verify(orderAddressRepository).findById(1L); + verify(receivingStationRepository).findAll(); + + verify(receivingStationRepository).findById(1L); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository, times(2)).findById(1); } @Test @@ -1686,28 +1713,21 @@ void updateOrderAdminPageInfoWithStatusFormedTest() { Employee employee = getEmployee(); UpdateOrderPageAdminDto updateOrderPageAdminDto = ModelUtils.updateOrderPageAdminDtoWithStatusFormed(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(orderRepository.save(order)).thenReturn(order); when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); - when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)).thenReturn(Optional.of(tariffsInfo)); when(paymentRepository.findAllByOrderId(1L)).thenReturn(List.of(getPayment())); when(receivingStationRepository.findAll()).thenReturn(List.of(getReceivingStation())); when(employeeOrderPositionRepository.findAllByOrderId(1L)).thenReturn(List.of(employeeOrderPosition)); - ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, 1L, "en", "test@gmail.com"); + ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, order, "en", "test@gmail.com"); - verify(orderRepository, times(4)).findById(1L); verify(orderRepository, times(2)).save(order); - verify(employeeRepository, times(1)).findByEmail("test@gmail.com"); - verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); + verify(employeeRepository).findByEmail("test@gmail.com"); + verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(1L, 1L); verify(paymentRepository).findAllByOrderId(1L); verify(receivingStationRepository).findAll(); verify(employeeOrderPositionRepository).findAllByOrderId(1L); - verify(employeeOrderPositionRepository).deleteAll(List.of(employeeOrderPosition)); - verify(tariffsInfoRepository, atLeastOnce()).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); - verifyNoMoreInteractions(orderRepository, employeeRepository, paymentRepository, receivingStationRepository, - employeeOrderPositionRepository, tariffsInfoRepository); } @Test @@ -1718,14 +1738,12 @@ void updateOrderAdminPageInfoWithStatusCanceledTest() { order.setOrderStatus(OrderStatus.CANCELED); UpdateOrderPageAdminDto updateOrderPageAdminDto = ModelUtils.updateOrderPageAdminDtoWithStatusCanceled(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); - - IllegalStateException exception = assertThrows(IllegalStateException.class, - () -> ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, 1L, "en", "test@gmail.com")); + BadRequestException exception = assertThrows(BadRequestException.class, + () -> ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, order, "en", + "test@gmail.com")); assertEquals(String.format(ORDER_CAN_NOT_BE_UPDATED, OrderStatus.CANCELED), exception.getMessage()); - verify(orderRepository).findById(1L); verify(orderRepository, never()).save(any(Order.class)); } @@ -1737,14 +1755,11 @@ void updateOrderAdminPageInfoWithStatusDoneTest() { order.setOrderStatus(OrderStatus.DONE); UpdateOrderPageAdminDto updateOrderPageAdminDto = ModelUtils.updateOrderPageAdminDtoWithStatusCanceled(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); - - IllegalStateException exception = assertThrows(IllegalStateException.class, - () -> ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, 1L, "en", "test@gmail.com")); + BadRequestException exception = assertThrows(BadRequestException.class, + () -> ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, order, "en", + "test@gmail.com")); assertEquals(String.format(ORDER_CAN_NOT_BE_UPDATED, OrderStatus.DONE), exception.getMessage()); - - verify(orderRepository).findById(1L); verify(orderRepository, never()).save(any(Order.class)); } @@ -1765,23 +1780,20 @@ void updateOrderAdminPageInfoWithStatusBroughtItHimselfTest() { UpdateOrderPageAdminDto updateOrderPageAdminDto = ModelUtils.updateOrderPageAdminDtoWithStatusBroughtItHimself(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(orderRepository.save(order)).thenReturn(order); when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); - when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)).thenReturn(Optional.of(tariffsInfo)); when(paymentRepository.findAllByOrderId(1L)).thenReturn(List.of(getPayment())); - ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, 1L, "en", "test@gmail.com"); + ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, order, "en", "test@gmail.com"); assertEquals(1L, order.getReceivingStation().getId()); assertEquals(deliverFrom.toLocalDate(), order.getDateOfExport()); assertEquals(deliverFrom, order.getDeliverFrom()); assertEquals(deliverTo, order.getDeliverTo()); - verify(orderRepository, times(2)).findById(1L); verify(orderRepository).save(order); verify(employeeRepository).findByEmail("test@gmail.com"); - verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); + verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(1L, 1L); verify(paymentRepository).findAllByOrderId(1L); verifyNoMoreInteractions(orderRepository, employeeRepository, paymentRepository); } @@ -1793,28 +1805,21 @@ void updateOrderAdminPageInfoWithNullFieldsTest() { order.setOrderDate(LocalDateTime.now()).setTariffsInfo(tariffsInfo); order.setOrderStatus(OrderStatus.ON_THE_ROUTE); Employee employee = getEmployee(); - UpdateOrderPageAdminDto updateOrderPageAdminDto = - ModelUtils.updateOrderPageAdminDtoWithNullFields(); + UpdateOrderPageAdminDto updateOrderPageAdminDto = ModelUtils.updateOrderPageAdminDtoWithNullFields(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(orderRepository.save(order)).thenReturn(order); when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); - when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)).thenReturn(Optional.of(tariffsInfo)); when(paymentRepository.findAllByOrderId(1L)).thenReturn(List.of(getPayment())); when(receivingStationRepository.findAll()).thenReturn(List.of(getReceivingStation())); - ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, 1L, "en", "test@gmail.com"); + ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, order, "en", "test@gmail.com"); - verify(orderRepository, times(4)).findById(1L); verify(orderRepository, times(3)).save(order); - verify(employeeRepository, times(1)).findByEmail("test@gmail.com"); - verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); + verify(employeeRepository).findByEmail("test@gmail.com"); + verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(1L, 1L); verify(paymentRepository).findAllByOrderId(1L); verify(receivingStationRepository).findAll(); - verify(tariffsInfoRepository, atLeastOnce()).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); - verifyNoMoreInteractions(orderRepository, employeeRepository, paymentRepository, receivingStationRepository, - tariffsInfoRepository); } @Test @@ -1824,16 +1829,13 @@ void updateOrderAdminPageInfoTestThrowsException() { Order order = getOrder(); order.setOrderDate(LocalDateTime.now()).setTariffsInfo(tariffsInfo); Employee employee = getEmployee(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); - when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)).thenReturn(Optional.of(tariffsInfo)); assertThrows(BadRequestException.class, () -> ubsManagementService.updateOrderAdminPageInfo( - updateOrderPageAdminDto, 1L, "en", "test@gmail.com")); - verify(orderRepository, atLeastOnce()).findById(1L); + updateOrderPageAdminDto, order, "en", "test@gmail.com")); verify(employeeRepository).findByEmail("test@gmail.com"); - verify(tariffsInfoRepository, atLeastOnce()).findTariffsInfoByIdForEmployee(anyLong(), anyLong()); + verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(1L, 1L); } @Test @@ -1856,28 +1858,26 @@ void updateOrderAdminPageInfoForOrderWithStatusBroughtItHimselfTest() { Employee employee = getEmployee(); - when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); - when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)) .thenReturn(Optional.of(tariffsInfo)); when(paymentRepository.findAllByOrderId(1L)).thenReturn(List.of(getPayment())); - ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, 1L, "en", "test@gmail.com"); + ubsManagementService.updateOrderAdminPageInfo(updateOrderPageAdminDto, order, "en", "test@gmail.com"); - verify(orderRepository, times(2)).findById(1L); verify(employeeRepository).findByEmail("test@gmail.com"); - verify(orderRepository).save(order); + verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(1L, 1L); assertEquals(expected, order); } @Test void saveReason() { Order order = ModelUtils.getOrdersDto(); - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(order)); - - ubsManagementService.saveReason(1L, "uu", new MultipartFile[2]); - - verify(orderRepository).findById(1L); + ReasonNotTakeBagDto dto = new ReasonNotTakeBagDto(); + dto.setDescription("uu"); + ubsManagementService.saveReason(order, "uu", new MultipartFile[2]); + assertEquals(order.getReasonNotTakingBagDescription(), dto.getDescription()); + verify(orderRepository).save(order); } @Test @@ -2232,14 +2232,16 @@ void updateOrderExportDetails() { ExportDetailsDtoUpdate testDetails = getExportDetailsRequestToday(); var receivingStation = getReceivingStation(); when(receivingStationRepository.findById(1L)).thenReturn(Optional.of(receivingStation)); - when(orderRepository.findById(anyLong())).thenReturn(Optional.of(order)); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(receivingStationRepository.findAll()).thenReturn(receivingStations); - ubsManagementService.updateOrderExportDetails(user.getId(), testDetails, "test@gmail.com"); + ubsManagementService.updateOrderExportDetailsById(user.getId(), testDetails, "test@gmail.com"); assertEquals(OrderStatus.ON_THE_ROUTE, order.getOrderStatus()); - verify(orderRepository, times(1)).save(order); + verify(receivingStationRepository).findById(1L); + verify(orderRepository).findById(1L); + verify(receivingStationRepository).findAll(); } @Test @@ -2251,37 +2253,43 @@ void updateOrderExportDetailsEmptyDetailsTest() { ExportDetailsDtoUpdate emptyDetails = ExportDetailsDtoUpdate.builder().receivingStationId(1L).build(); var receivingStation = getReceivingStation(); when(receivingStationRepository.findById(1L)).thenReturn(Optional.of(receivingStation)); - when(orderRepository.findById(anyLong())).thenReturn(Optional.of(order)); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(receivingStationRepository.findAll()).thenReturn(receivingStations); - ubsManagementService.updateOrderExportDetails(user.getId(), emptyDetails, user.getUuid()); - verify(orderRepository, times(1)).save(order); + ubsManagementService.updateOrderExportDetailsById(user.getId(), emptyDetails, user.getUuid()); + + verify(receivingStationRepository).findById(1L); + verify(orderRepository).findById(1L); + verify(receivingStationRepository).findAll(); } @Test void updateOrderExportDetailsUserNotFoundExceptionTest() { ExportDetailsDtoUpdate testDetails = getExportDetailsRequest(); assertThrows(NotFoundException.class, - () -> ubsManagementService.updateOrderExportDetails(1L, testDetails, "test@gmail.com")); + () -> ubsManagementService.updateOrderExportDetailsById(1L, testDetails, "test@gmail.com")); } @Test - void updateOrderExportDetailsUnexistingOrderExceptionTest() { + void updateOrderExportDetailsNotExistingOrderExceptionTest() { ExportDetailsDtoUpdate testDetails = getExportDetailsRequest(); - when(orderRepository.findById(anyLong())).thenReturn(Optional.empty()); + when(orderRepository.findById(1L)).thenReturn(Optional.empty()); assertThrows(NotFoundException.class, - () -> ubsManagementService.updateOrderExportDetails(1L, testDetails, "abc")); + () -> ubsManagementService.updateOrderExportDetailsById(1L, testDetails, "abc")); + verify(orderRepository).findById(1L); } @Test void updateOrderExportDetailsReceivingStationNotFoundExceptionTest() { Order order = getOrder(); ExportDetailsDtoUpdate testDetails = getExportDetailsRequest(); - var receivingStation = getReceivingStation(); - when(orderRepository.findById(anyLong())).thenReturn(Optional.of(order)); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(receivingStationRepository.findAll()).thenReturn(Collections.emptyList()); assertThrows(NotFoundException.class, - () -> ubsManagementService.updateOrderExportDetails(1L, testDetails, "abc")); + () -> ubsManagementService.updateOrderExportDetailsById(1L, testDetails, "abc")); + + verify(orderRepository).findById(1L); + verify(receivingStationRepository).findAll(); } @Test @@ -2465,12 +2473,12 @@ void testAddPointsToUserWhenCurrentPointIsNull() { @Test void saveReasonWhenListElementsAreNotNulls() { Order order = ModelUtils.getOrdersDto(); - when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(order)); - - ubsManagementService.saveReason(1L, "uu", new MultipartFile[] { + ReasonNotTakeBagDto dto = new ReasonNotTakeBagDto(); + dto.setDescription("uu"); + ubsManagementService.saveReason(order, "uu", new MultipartFile[] { new MockMultipartFile("Name", new byte[2]), new MockMultipartFile("Name", new byte[2])}); - - verify(orderRepository).findById(1L); + assertEquals(order.getReasonNotTakingBagDescription(), dto.getDescription()); + verify(orderRepository).save(order); } @Test @@ -2737,12 +2745,13 @@ void updateOrderExportDetailsSettingForDifferentInitialExportDetailsTest(Order o ExportDetailsDtoUpdate testDetails = getExportDetailsRequest(); var receivingStation = getReceivingStation(); when(receivingStationRepository.findById(1L)).thenReturn(Optional.of(receivingStation)); - when(orderRepository.findById(anyLong())).thenReturn(Optional.of(order)); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(receivingStationRepository.findAll()).thenReturn(receivingStations); - ubsManagementService.updateOrderExportDetails(order.getId(), testDetails, employee.getEmail()); - verify(orderRepository, times(1)).save(order); - verify(eventService, times(1)).saveEvent(expectedHistoryEvent, employee.getEmail(), order); + ubsManagementService.updateOrderExportDetailsById(order.getId(), testDetails, employee.getEmail()); + verify(receivingStationRepository).findById(1L); + verify(orderRepository).findById(1L); + verify(receivingStationRepository).findAll(); } private static Stream provideOrdersWithDifferentInitialExportDetailsForUpdateOrderExportDetails() { @@ -2785,19 +2794,15 @@ void updateOrderExportDetailsWhenDeliverFromIsNull() { var receivingStation = getReceivingStation(); order.setDeliverFrom(null); testDetails.setTimeDeliveryFrom(null); - String expectedHistoryEvent = OrderHistory.UPDATE_EXPORT_DETAILS - + String.format(OrderHistory.UPDATE_EXPORT_DATA, - LocalDate.of(1997, 12, 4)) - + - String.format(OrderHistory.UPDATE_RECEIVING_STATION, "Петрівка"); when(receivingStationRepository.findById(1L)).thenReturn(Optional.of(receivingStation)); - when(orderRepository.findById(anyLong())).thenReturn(Optional.of(order)); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(receivingStationRepository.findAll()).thenReturn(receivingStations); - ubsManagementService.updateOrderExportDetails(order.getId(), testDetails, employee.getEmail()); - verify(orderRepository, times(1)).save(order); - verify(eventService, times(1)).saveEvent(expectedHistoryEvent, employee.getEmail(), order); + ubsManagementService.updateOrderExportDetailsById(order.getId(), testDetails, employee.getEmail()); + verify(receivingStationRepository).findById(1L); + verify(orderRepository).findById(1L); + verify(receivingStationRepository).findAll(); } @Test @@ -2809,19 +2814,15 @@ void updateOrderExportDetailsWhenDeliverToIsNull() { var receivingStation = getReceivingStation(); order.setDeliverTo(null); testDetails.setTimeDeliveryTo(null); - String expectedHistoryEvent = OrderHistory.UPDATE_EXPORT_DETAILS - + String.format(OrderHistory.UPDATE_EXPORT_DATA, - LocalDate.of(1997, 12, 4)) - + - String.format(OrderHistory.UPDATE_RECEIVING_STATION, "Петрівка"); when(receivingStationRepository.findById(1L)).thenReturn(Optional.of(receivingStation)); - when(orderRepository.findById(anyLong())).thenReturn(Optional.of(order)); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(receivingStationRepository.findAll()).thenReturn(receivingStations); - ubsManagementService.updateOrderExportDetails(order.getId(), testDetails, employee.getEmail()); - verify(orderRepository, times(1)).save(order); - verify(eventService, times(1)).saveEvent(expectedHistoryEvent, employee.getEmail(), order); + ubsManagementService.updateOrderExportDetailsById(order.getId(), testDetails, employee.getEmail()); + verify(receivingStationRepository).findById(1L); + verify(orderRepository).findById(1L); + verify(receivingStationRepository).findAll(); } @Test @@ -2886,4 +2887,45 @@ void saveOrderIdForRefundThrowsNotFoundExceptionTest() { assertThrows(NotFoundException.class, () -> ubsManagementService.getNotTakenOrderReason(1L)); verify(orderRepository).findById(1L); } -} \ No newline at end of file + + @Test + void updateOrderAdminPageInfoAndSaveReasonTest() { + var dto = updateOrderPageAdminDto(); + MockMultipartFile[] multipartFiles = new MockMultipartFile[0]; + + Order order = getOrder(); + + TariffsInfo tariffsInfo = getTariffsInfo(); + order.setOrderDate(LocalDateTime.now()).setTariffsInfo(tariffsInfo); + + Employee employee = getEmployee(); + + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); + when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); + when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(1L, 1L)) + .thenReturn(Optional.of(tariffsInfo)); + when(paymentRepository.findAllByOrderId(1L)).thenReturn(List.of(getPayment())); + + when(orderAddressRepository.findById(1L)).thenReturn(Optional.of(getOrderAddress())); + when(receivingStationRepository.findAll()).thenReturn(List.of(getReceivingStation())); + + var receivingStation = getReceivingStation(); + + when(receivingStationRepository.findById(1L)).thenReturn(Optional.of(receivingStation)); + when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); + + ubsManagementService.updateOrderAdminPageInfoAndSaveReason(1L, dto, "en", "test@gmail.com", "desc", + multipartFiles); + + verify(orderRepository).findById(1L); + verify(employeeRepository).findByEmail("test@gmail.com"); + verify(tariffsInfoRepository).findTariffsInfoByIdForEmployee(1L, 1L); + verify(paymentRepository).findAllByOrderId(1L); + + verify(orderAddressRepository).findById(1L); + verify(receivingStationRepository).findAll(); + + verify(receivingStationRepository).findById(1L); + verify(orderRepository).getOrderDetails(1L); + } +}