From d1dc1a490783afa4193557a93f41c0a20f72ceaf Mon Sep 17 00:00:00 2001 From: Oksana Spodaryk <82940222+ospodaryk@users.noreply.github.com> Date: Wed, 26 Jul 2023 16:54:21 +0300 Subject: [PATCH] Revert "[Orders] After changing tariff the price of paid order is not changing (#1196)" (#1199) This reverts commit c020a531619787e7fff284c8e116e53fdc731884. --- .../main/java/greencity/entity/order/Bag.java | 12 +- .../java/greencity/entity/order/Order.java | 42 +- .../java/greencity/entity/order/OrderBag.java | 69 ---- .../greencity/repository/BagRepository.java | 12 + .../repository/OrderBagRepository.java | 61 --- .../greencity/repository/OrderRepository.java | 18 - .../db/changelog/db.changelog-master.xml | 1 - ...pdate-order-bag-mapping-table-Spodaryk.xml | 60 --- ...pdate-order-bag-mapping-table-Spodaryk.sql | 6 - .../mapping/bag/BagForUserDtoMapper.java | 8 +- .../notification/NotificationServiceImpl.java | 5 +- .../service/ubs/OrderBagService.java | 108 ------ .../service/ubs/SuperAdminServiceImpl.java | 94 +---- .../service/ubs/UBSClientServiceImpl.java | 96 ++--- .../service/ubs/UBSManagementServiceImpl.java | 10 +- .../src/test/java/greencity/ModelUtils.java | 155 +------- .../mapping/bag/BagForUserDtoMapperTest.java | 6 +- .../NotificationServiceImplTest.java | 17 +- .../service/ubs/OrderBagServiceTest.java | 159 -------- .../ubs/SuperAdminServiceImplTest.java | 311 +++------------ .../service/ubs/UBSClientServiceImplTest.java | 363 +++++++++++------- .../ubs/UBSManagementServiceImplTest.java | 102 +++-- 22 files changed, 459 insertions(+), 1256 deletions(-) delete mode 100644 dao/src/main/java/greencity/entity/order/OrderBag.java delete mode 100644 dao/src/main/java/greencity/repository/OrderBagRepository.java delete mode 100644 dao/src/main/resources/db/changelog/logs/ch-update-order-bag-mapping-table-Spodaryk.xml delete mode 100644 dao/src/main/resources/db/changelog/logs/sql/ch-update-order-bag-mapping-table-Spodaryk.sql delete mode 100644 service/src/main/java/greencity/service/ubs/OrderBagService.java delete mode 100644 service/src/test/java/greencity/service/ubs/OrderBagServiceTest.java diff --git a/dao/src/main/java/greencity/entity/order/Bag.java b/dao/src/main/java/greencity/entity/order/Bag.java index 321739e54..dafb97462 100644 --- a/dao/src/main/java/greencity/entity/order/Bag.java +++ b/dao/src/main/java/greencity/entity/order/Bag.java @@ -9,15 +9,7 @@ import lombok.ToString; import lombok.Builder; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; +import javax.persistence.*; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import java.time.LocalDate; @@ -84,7 +76,7 @@ public class Bag { @JoinColumn private Employee editedBy; - @ManyToOne(fetch = FetchType.LAZY) + @ManyToOne @JoinColumn(nullable = false) private TariffsInfo tariffsInfo; } diff --git a/dao/src/main/java/greencity/entity/order/Order.java b/dao/src/main/java/greencity/entity/order/Order.java index af48dfe0b..8215634a9 100644 --- a/dao/src/main/java/greencity/entity/order/Order.java +++ b/dao/src/main/java/greencity/entity/order/Order.java @@ -1,43 +1,21 @@ package greencity.entity.order; +import greencity.enums.CancellationReason; +import greencity.enums.OrderPaymentStatus; +import greencity.enums.OrderStatus; import greencity.entity.notifications.UserNotification; import greencity.entity.user.User; import greencity.entity.user.employee.Employee; import greencity.entity.user.employee.EmployeeOrderPosition; import greencity.entity.user.employee.ReceivingStation; import greencity.entity.user.ubs.UBSuser; -import greencity.enums.CancellationReason; -import greencity.enums.OrderPaymentStatus; -import greencity.enums.OrderStatus; import greencity.filters.StringListConverter; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; +import lombok.*; import org.hibernate.annotations.Cascade; -import javax.persistence.CascadeType; -import javax.persistence.CollectionTable; -import javax.persistence.Column; -import javax.persistence.Convert; -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.EnumType; -import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.MapKeyColumn; -import javax.persistence.OneToMany; -import javax.persistence.Table; +import javax.persistence.*; import java.time.LocalDate; import java.time.LocalDateTime; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; @@ -50,10 +28,10 @@ @Builder @Table(name = "orders") @EqualsAndHashCode(exclude = {"employeeOrderPositions", "userNotifications", "ubsUser", - "changeOfPointsList", "blockedByEmployee", "certificates", "payment", "employeeOrderPositions", + "changeOfPointsList", "blockedByEmployee", "certificates", "attachedEmployees", "payment", "employeeOrderPositions", "events", "imageReasonNotTakingBags", "additionalOrders"}) @ToString(exclude = {"employeeOrderPositions", "userNotifications", "ubsUser", - "changeOfPointsList", "blockedByEmployee", "certificates", "payment", "employeeOrderPositions", + "changeOfPointsList", "blockedByEmployee", "certificates", "attachedEmployees", "payment", "employeeOrderPositions", "events", "imageReasonNotTakingBags", "additionalOrders"}) public class Order { @Id @@ -182,10 +160,4 @@ public class Order { @Column(name = "write_off_station_sum") private Long writeOffStationSum; - - @OneToMany( - mappedBy = "order", - cascade = CascadeType.ALL, - orphanRemoval = true) - private List orderBags = new ArrayList<>(); } diff --git a/dao/src/main/java/greencity/entity/order/OrderBag.java b/dao/src/main/java/greencity/entity/order/OrderBag.java deleted file mode 100644 index 4651fd944..000000000 --- a/dao/src/main/java/greencity/entity/order/OrderBag.java +++ /dev/null @@ -1,69 +0,0 @@ -package greencity.entity.order; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.EqualsAndHashCode; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; -import lombok.ToString; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.Table; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.Size; - -@Entity -@NoArgsConstructor -@AllArgsConstructor -@EqualsAndHashCode(exclude = {"order", "bag"}) -@ToString(exclude = {"order", "bag"}) -@Getter -@Setter -@Builder -@Table(name = "order_bag_mapping") -public class OrderBag { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "order_id") - private Order order; - - @ManyToOne(fetch = FetchType.LAZY) - @JoinColumn(name = "bag_id") - private Bag bag; - - @Column(nullable = false) - private Integer amount; - - @Column(name = "confirmed_quantity") - private Integer confirmedQuantity; - - @Column(name = "exported_quantity") - private Integer exportedQuantity; - - @Column(nullable = false) - private Integer capacity; - - @Column(nullable = false) - private Long price; - - @NotBlank - @Size(min = 1, max = 30) - @Column(nullable = false) - private String name; - - @NotBlank - @Size(min = 1, max = 30) - @Column(nullable = false) - private String nameEng; -} diff --git a/dao/src/main/java/greencity/repository/BagRepository.java b/dao/src/main/java/greencity/repository/BagRepository.java index 0796e00d6..18d35c029 100644 --- a/dao/src/main/java/greencity/repository/BagRepository.java +++ b/dao/src/main/java/greencity/repository/BagRepository.java @@ -11,6 +11,18 @@ @Repository public interface BagRepository extends JpaRepository { + /** + * method, that returns {@link List}of{@link Bag} that have bags by order id. + * + * @param id order id + * @return {@link List}of{@link Bag} by it's language and orderId. + * @author Mahdziak Orest + */ + @Query(value = "SELECT * FROM ORDER_BAG_MAPPING as OBM " + + "JOIN BAG AS B ON OBM.ORDER_ID = :orderId and OBM.BAG_ID = B.ID " + + "ORDER BY B.ID", nativeQuery = true) + List findBagsByOrderId(@Param("orderId") Long id); + /** * This is method which find capacity by id. * diff --git a/dao/src/main/java/greencity/repository/OrderBagRepository.java b/dao/src/main/java/greencity/repository/OrderBagRepository.java deleted file mode 100644 index 578aba332..000000000 --- a/dao/src/main/java/greencity/repository/OrderBagRepository.java +++ /dev/null @@ -1,61 +0,0 @@ -package greencity.repository; - -import greencity.entity.order.OrderBag; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.query.Param; -import org.springframework.stereotype.Repository; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -@Repository -public interface OrderBagRepository extends JpaRepository { - /** - * Retrieves a list of order bags based on the given bag ID. - * - * @param id the ID of the order - * @return a list of order bags matching the bag ID - */ - @Query(value = "SELECT * FROM ORDER_BAG_MAPPING as OBM " - + "where OBM.BAG_ID = :bagId", nativeQuery = true) - List findOrderBagsByBagId(@Param("bagId") Integer id); - - /** - * Retrieves a list of order bags based on the given order ID. - * - * @param id the ID of the order - * @return a list of order bags matching the order ID - */ - @Query(value = "SELECT * FROM ORDER_BAG_MAPPING as OBM " - + "where OBM.ORDER_ID = :orderId", nativeQuery = true) - List findOrderBagsByOrderId(@Param("orderId") Long id); - - /** - * method updates the bag data of OrderBag for all unpaid orders. - * - * @param bagId {@link Integer} bag id - * @param capacity {@link Integer} bag capacity - * @param price {@link Long} bag full price in coins - * @param name {@link String} bag name - * @param nameEng {@link String} bag english name - * @author Julia Seti - */ - @Transactional - @Modifying - @Query(value = "update order_bag_mapping obm " - + "set capacity = :capacity, price = :price, name = :name, name_eng = :nameEng " - + "from orders o " - + "where o.id = obm.order_id and obm.bag_id = :bagId and o.order_payment_status = 'UNPAID'", nativeQuery = true) - void updateAllByBagIdForUnpaidOrders(Integer bagId, Integer capacity, Long price, String name, String nameEng); - - /** - * method returns all OrderBags by bag id. - * - * @param bagId {@link Integer} bag id - * @return {@link List} of {@link OrderBag} - * @author Julia Seti - */ - List findAllByBagId(Integer bagId); -} diff --git a/dao/src/main/java/greencity/repository/OrderRepository.java b/dao/src/main/java/greencity/repository/OrderRepository.java index a4616a199..3011eb235 100644 --- a/dao/src/main/java/greencity/repository/OrderRepository.java +++ b/dao/src/main/java/greencity/repository/OrderRepository.java @@ -251,22 +251,4 @@ void changeReceivingStationForAllOrders(@Param("receiving_station") Long station void updateOrderStatusToExpected(@Param("actual_status") String actualStatus, @Param("expected_status") String expectedStatus, @Param("currentDate") LocalDate currentDate); - - /** - * method returns all unpaid orders that contain a bag with id. - */ - @Query(nativeQuery = true, - value = "select * from orders o " - + "left join order_bag_mapping obm on o.id = obm.order_id " - + "where obm.bag_id = :bagId and o.order_payment_status = 'UNPAID'") - List findAllUnpaidOrdersByBagId(Integer bagId); - - /** - * method returns all orders that contain a bag with id. - */ - @Query(nativeQuery = true, - value = "select * from orders o " - + "left join order_bag_mapping obm on o.id = obm.order_id " - + "where obm.bag_id = :bagId") - List findAllByBagId(Integer bagId); } diff --git a/dao/src/main/resources/db/changelog/db.changelog-master.xml b/dao/src/main/resources/db/changelog/db.changelog-master.xml index 1632d90bd..db07e44e8 100644 --- a/dao/src/main/resources/db/changelog/db.changelog-master.xml +++ b/dao/src/main/resources/db/changelog/db.changelog-master.xml @@ -207,7 +207,6 @@ - diff --git a/dao/src/main/resources/db/changelog/logs/ch-update-order-bag-mapping-table-Spodaryk.xml b/dao/src/main/resources/db/changelog/logs/ch-update-order-bag-mapping-table-Spodaryk.xml deleted file mode 100644 index 18f8b49d5..000000000 --- a/dao/src/main/resources/db/changelog/logs/ch-update-order-bag-mapping-table-Spodaryk.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dao/src/main/resources/db/changelog/logs/sql/ch-update-order-bag-mapping-table-Spodaryk.sql b/dao/src/main/resources/db/changelog/logs/sql/ch-update-order-bag-mapping-table-Spodaryk.sql deleted file mode 100644 index b71d14c9a..000000000 --- a/dao/src/main/resources/db/changelog/logs/sql/ch-update-order-bag-mapping-table-Spodaryk.sql +++ /dev/null @@ -1,6 +0,0 @@ -update order_bag_mapping -set capacity=bag.capacity, - price=bag.full_price, - name=bag.name, - name_eng=bag.name_eng from bag -where bag_id=bag.id \ No newline at end of file diff --git a/service/src/main/java/greencity/mapping/bag/BagForUserDtoMapper.java b/service/src/main/java/greencity/mapping/bag/BagForUserDtoMapper.java index 68f4bb7b4..fe66bbe7b 100644 --- a/service/src/main/java/greencity/mapping/bag/BagForUserDtoMapper.java +++ b/service/src/main/java/greencity/mapping/bag/BagForUserDtoMapper.java @@ -2,21 +2,21 @@ import greencity.constant.AppConstant; import greencity.dto.bag.BagForUserDto; -import greencity.entity.order.OrderBag; +import greencity.entity.order.Bag; import org.modelmapper.AbstractConverter; import org.springframework.stereotype.Component; import java.math.BigDecimal; @Component -public class BagForUserDtoMapper extends AbstractConverter { +public class BagForUserDtoMapper extends AbstractConverter { @Override - protected BagForUserDto convert(OrderBag source) { + protected BagForUserDto convert(Bag source) { return BagForUserDto.builder() .service(source.getName()) .serviceEng(source.getNameEng()) .capacity(source.getCapacity()) - .fullPrice(BigDecimal.valueOf(source.getPrice()) + .fullPrice(BigDecimal.valueOf(source.getFullPrice()) .movePointLeft(AppConstant.TWO_DECIMALS_AFTER_POINT_IN_CURRENCY) .doubleValue()) .build(); diff --git a/service/src/main/java/greencity/service/notification/NotificationServiceImpl.java b/service/src/main/java/greencity/service/notification/NotificationServiceImpl.java index e123ce2d3..56d7aec6a 100644 --- a/service/src/main/java/greencity/service/notification/NotificationServiceImpl.java +++ b/service/src/main/java/greencity/service/notification/NotificationServiceImpl.java @@ -20,7 +20,6 @@ import greencity.exceptions.http.AccessDeniedException; import greencity.repository.*; import greencity.service.ubs.NotificationService; -import greencity.service.ubs.OrderBagService; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.MapUtils; @@ -76,8 +75,6 @@ public class NotificationServiceImpl implements NotificationService { private static final String ORDER_NUMBER_KEY = "orderNumber"; private static final String AMOUNT_TO_PAY_KEY = "amountToPay"; private static final String PAY_BUTTON = "payButton"; - @Autowired - private final OrderBagService orderBagService; /** * {@inheritDoc} @@ -242,7 +239,7 @@ private Double getAmountToPay(Order order) { long ubsCourierSumInCoins = order.getUbsCourierSum() == null ? 0L : order.getUbsCourierSum(); long writeStationSumInCoins = order.getWriteOffStationSum() == null ? 0L : order.getWriteOffStationSum(); - List bagsType = orderBagService.findBagsByOrderId(order.getId()); + List bagsType = bagRepository.findBagsByOrderId(order.getId()); Map bagsAmount; if (MapUtils.isNotEmpty(order.getExportedQuantity())) { bagsAmount = order.getExportedQuantity(); diff --git a/service/src/main/java/greencity/service/ubs/OrderBagService.java b/service/src/main/java/greencity/service/ubs/OrderBagService.java deleted file mode 100644 index 6e10f71b3..000000000 --- a/service/src/main/java/greencity/service/ubs/OrderBagService.java +++ /dev/null @@ -1,108 +0,0 @@ -package greencity.service.ubs; - -import greencity.entity.order.Bag; -import greencity.entity.order.Order; -import greencity.entity.order.OrderBag; -import greencity.exceptions.NotFoundException; -import greencity.repository.OrderBagRepository; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import static greencity.constant.ErrorMessage.BAG_NOT_FOUND; - -@Service -@AllArgsConstructor -@Slf4j -@Data -public class OrderBagService { - private OrderBagRepository orderBagRepository; - - private Long getActualPrice(List orderBags, Integer id) { - return orderBags.stream() - .filter(ob -> ob.getBag().getId().equals(id)) - .map(OrderBag::getPrice) - .findFirst() - .orElseThrow(() -> new NotFoundException(BAG_NOT_FOUND + id)); - } - - /** - * Finds all bags belonging to a specific list of OrderBag instances. - * - * @param orderBags A list of OrderBag instances to search within. - * @return A list of Bag instances associated with the provided OrderBag - * instances. - */ - public List findAllBagsInOrderBagsList(List orderBags) { - return orderBags.stream() - .map(OrderBag::getBag) - .peek(b -> b.setFullPrice(getActualPrice(orderBags, b.getId()))) - .collect(Collectors.toList()); - } - - /** - * Finds all bags belonging to a specific OrderBag based on the provided ID. - * - * @param id The ID of the OrderBag to search for. - * @return A list of Bag instances associated with the provided OrderBag ID. - */ - public List findBagsByOrderId(Long id) { - List orderBags = orderBagRepository.findOrderBagsByOrderId(id); - return findAllBagsInOrderBagsList(orderBags); - } - - /** - * Calculates the actual bags' amounts for the given list of OrderBags and - * returns the result as a Map. This method checks the OrderBags in the input - * list and calculates the actual amount for each bag based on the availability - * of different quantity attributes in the OrderBag objects. It prioritizes the - * following quantities in descending order: 1. Exported Quantity: If all - * OrderBags have the 'exportedQuantity' attribute set, the method will use it. - * 2. Confirmed Quantity: If 'exportedQuantity' is not available for all - * OrderBags but 'confirmedQuantity' is, the method will use it. 3. Regular - * Amount: If neither 'exportedQuantity' nor 'confirmedQuantity' are available - * for all OrderBags, the method will use the 'amount' attribute. - * - * @param bagsForOrder The list of OrderBag objects for which the actual amounts - * need to be calculated. - * @return A Map containing the bag ID as the key and the corresponding actual - * amount as the value. If any OrderBag in the input list lacks all - * three attributes (exportedQuantity, confirmedQuantity, and amount), - * the corresponding entry will not be included in the result map. - * @throws NullPointerException if 'bagsForOrder' is null. - */ - public Map getActualBagsAmountForOrder(List bagsForOrder) { - if (bagsForOrder.stream().allMatch(it -> it.getExportedQuantity() != null)) { - return bagsForOrder.stream() - .collect(Collectors.toMap(it -> it.getBag().getId(), OrderBag::getExportedQuantity)); - } - if (bagsForOrder.stream().allMatch(it -> it.getConfirmedQuantity() != null)) { - return bagsForOrder.stream() - .collect(Collectors.toMap(it -> it.getBag().getId(), OrderBag::getConfirmedQuantity)); - } - if (bagsForOrder.stream().allMatch(it -> it.getAmount() != null)) { - return bagsForOrder.stream() - .collect(Collectors.toMap(it -> it.getBag().getId(), OrderBag::getAmount)); - } - return new HashMap<>(); - } - - /** - * method helps to delete bag from order. - * - * @param orderBag {@link OrderBag} - * @author Oksana Spodaryk - */ - public void removeBagFromOrder(Order order, OrderBag orderBag) { - List modifiableList = new ArrayList<>(order.getOrderBags()); - modifiableList.remove(orderBag); - order.setOrderBags(modifiableList); - } -} diff --git a/service/src/main/java/greencity/service/ubs/SuperAdminServiceImpl.java b/service/src/main/java/greencity/service/ubs/SuperAdminServiceImpl.java index acf611a25..9d623c99d 100644 --- a/service/src/main/java/greencity/service/ubs/SuperAdminServiceImpl.java +++ b/service/src/main/java/greencity/service/ubs/SuperAdminServiceImpl.java @@ -24,8 +24,6 @@ import greencity.dto.tariff.GetTariffsInfoDto; import greencity.dto.tariff.SetTariffLimitsDto; import greencity.entity.coords.Coordinates; -import greencity.entity.order.Order; -import greencity.entity.order.OrderBag; import greencity.entity.order.Bag; import greencity.entity.order.Courier; import greencity.entity.order.Service; @@ -36,7 +34,6 @@ import greencity.entity.user.employee.Employee; import greencity.entity.user.employee.ReceivingStation; import greencity.enums.CourierLimit; -import greencity.enums.OrderPaymentStatus; import greencity.enums.CourierStatus; import greencity.enums.LocationStatus; import greencity.enums.StationStatus; @@ -51,8 +48,6 @@ import greencity.filters.TariffsInfoSpecification; import greencity.repository.BagRepository; import greencity.repository.CourierRepository; -import greencity.repository.OrderBagRepository; -import greencity.repository.OrderRepository; import greencity.repository.DeactivateChosenEntityRepository; import greencity.repository.EmployeeRepository; import greencity.repository.LocationRepository; @@ -76,7 +71,6 @@ import java.util.Comparator; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.Set; @@ -119,9 +113,6 @@ public class SuperAdminServiceImpl implements SuperAdminService { "Current region: %s or cities: %s or receiving stations: %s don't exist."; private static final String REGION_OR_CITIES_OR_RECEIVING_STATIONS_OR_COURIER_NOT_EXIST_MESSAGE = "Current region: %s or cities: %s or receiving stations: %s or courier: %s don't exist."; - private final OrderBagRepository orderBagRepository; - private final OrderRepository orderRepository; - private final OrderBagService orderBagService; @Override public GetTariffServiceDto addTariffService(long tariffId, TariffServiceDto dto, String employeeUuid) { @@ -151,34 +142,13 @@ public List getTariffService(long tariffId) { } @Override - @Transactional public void deleteTariffService(Integer bagId) { Bag bag = tryToFindBagById(bagId); - checkDeletedBagLimitAndDeleteTariffsInfo(bag); - orderRepository.findAllByBagId(bagId).forEach(it -> deleteBagFromOrder(it, bagId)); - } - - private void deleteBagFromOrder(Order order, Integer bagId) { - Map amount = orderBagService.getActualBagsAmountForOrder(order.getOrderBags()); - Integer totalBagsAmount = amount.values().stream().reduce(0, Integer::sum); - if (amount.get(bagId).equals(0) || order.getOrderPaymentStatus() == OrderPaymentStatus.UNPAID) { - if (totalBagsAmount.equals(amount.get(bagId))) { - order.setOrderBags(new ArrayList<>()); - orderRepository.delete(order); - return; - } - order.getOrderBags().stream().filter(orderBag -> orderBag.getBag().getId().equals(bagId)) - .findFirst() - .ifPresent(orderBag -> orderBagService.removeBagFromOrder(order, orderBag)); - orderRepository.save(order); - } - } - - private void checkDeletedBagLimitAndDeleteTariffsInfo(Bag bag) { TariffsInfo tariffsInfo = bag.getTariffsInfo(); + bagRepository.delete(bag); List bags = bagRepository.findBagsByTariffsInfoId(tariffsInfo.getId()); if (bags.isEmpty() || bags.stream().noneMatch(Bag::getLimitIncluded)) { - tariffsInfo.setTariffStatus(TariffStatus.DEACTIVATED); + tariffsInfo.setTariffStatus(TariffStatus.NEW); tariffsInfo.setBags(bags); tariffsInfo.setMax(null); tariffsInfo.setMin(null); @@ -189,39 +159,9 @@ private void checkDeletedBagLimitAndDeleteTariffsInfo(Bag bag) { } @Override - @Transactional - public GetTariffServiceDto editTariffService(TariffServiceDto dto, Integer bagId, String employeeUuid) { - Bag bag = tryToFindBagById(bagId); + public GetTariffServiceDto editTariffService(TariffServiceDto dto, Integer id, String employeeUuid) { + Bag bag = tryToFindBagById(id); Employee employee = tryToFindEmployeeByUuid(employeeUuid); - updateTariffService(dto, bag); - bag.setEditedBy(employee); - - orderBagRepository.updateAllByBagIdForUnpaidOrders( - bagId, bag.getCapacity(), bag.getFullPrice(), bag.getName(), bag.getNameEng()); - - List orders = orderRepository.findAllUnpaidOrdersByBagId(bagId); - if (CollectionUtils.isNotEmpty(orders)) { - orders.forEach(it -> updateOrderSumToPay(it, bag)); - orderRepository.saveAll(orders); - } - return modelMapper.map(bagRepository.save(bag), GetTariffServiceDto.class); - } - - private void updateOrderSumToPay(Order order, Bag bag) { - Map amount = orderBagService.getActualBagsAmountForOrder(order.getOrderBags()); - Long sumToPayInCoins = order.getOrderBags().stream() - .map(orderBag -> amount.get(orderBag.getBag().getId()) * getBagPrice(orderBag, bag)) - .reduce(0L, Long::sum); - order.setSumTotalAmountWithoutDiscounts(sumToPayInCoins); - } - - private Long getBagPrice(OrderBag orderBag, Bag bag) { - return bag.getId().equals(orderBag.getBag().getId()) - ? bag.getFullPrice() - : orderBag.getPrice(); - } - - private void updateTariffService(TariffServiceDto dto, Bag bag) { bag.setCapacity(dto.getCapacity()); bag.setPrice(convertBillsIntoCoins(dto.getPrice())); bag.setCommission(convertBillsIntoCoins(dto.getCommission())); @@ -231,6 +171,8 @@ private void updateTariffService(TariffServiceDto dto, Bag bag) { bag.setDescription(dto.getDescription()); bag.setDescriptionEng(dto.getDescriptionEng()); bag.setEditedAt(LocalDate.now()); + bag.setEditedBy(employee); + return modelMapper.map(bagRepository.save(bag), GetTariffServiceDto.class); } private Long convertBillsIntoCoins(Double bills) { @@ -243,8 +185,8 @@ private Long convertBillsIntoCoins(Double bills) { } private Bag tryToFindBagById(Integer id) { - return bagRepository.findById(id).orElseThrow( - () -> new NotFoundException(ErrorMessage.BAG_NOT_FOUND + id)); + return bagRepository.findById(id) + .orElseThrow(() -> new NotFoundException(ErrorMessage.BAG_NOT_FOUND + id)); } private Long getFullPrice(Double price, Double commission) { @@ -258,9 +200,9 @@ public GetServiceDto addService(Long tariffId, ServiceDto dto, String employeeUu } private Service createService(Long tariffId, ServiceDto dto, String employeeUuid) { - TariffsInfo tariffsInfo = tryToFindTariffById(tariffId); - if (serviceRepository.findServiceByTariffsInfoId(tariffId).isEmpty()) { + if (tryToFindServiceByTariffsInfoId(tariffId).isEmpty()) { Employee employee = tryToFindEmployeeByUuid(employeeUuid); + TariffsInfo tariffsInfo = tryToFindTariffById(tariffId); Service service = modelMapper.map(dto, Service.class); service.setCreatedBy(employee); service.setCreatedAt(LocalDate.now()); @@ -273,16 +215,14 @@ private Service createService(Long tariffId, ServiceDto dto, String employeeUuid @Override public GetServiceDto getService(long tariffId) { - tryToFindTariffById(tariffId); - return serviceRepository.findServiceByTariffsInfoId(tariffId) + return tryToFindServiceByTariffsInfoId(tariffId) .map(it -> modelMapper.map(it, GetServiceDto.class)) - .orElseGet(() -> null); + .orElse(null); } @Override public void deleteService(long id) { - Service service = tryToFindServiceById(id); - serviceRepository.delete(service); + serviceRepository.delete(tryToFindServiceById(id)); } @Override @@ -304,6 +244,14 @@ private Employee tryToFindEmployeeByUuid(String employeeUuid) { .orElseThrow(() -> new NotFoundException(ErrorMessage.EMPLOYEE_WITH_UUID_NOT_FOUND + employeeUuid)); } + private Optional tryToFindServiceByTariffsInfoId(long tariffId) { + if (tariffsInfoRepository.existsById(tariffId)) { + return serviceRepository.findServiceByTariffsInfoId(tariffId); + } else { + throw new NotFoundException(ErrorMessage.TARIFF_NOT_FOUND + tariffId); + } + } + private Service tryToFindServiceById(long id) { return serviceRepository.findById(id) .orElseThrow(() -> new NotFoundException(ErrorMessage.SERVICE_IS_NOT_FOUND_BY_ID + id)); diff --git a/service/src/main/java/greencity/service/ubs/UBSClientServiceImpl.java b/service/src/main/java/greencity/service/ubs/UBSClientServiceImpl.java index 5c64e460f..496c9b8c3 100644 --- a/service/src/main/java/greencity/service/ubs/UBSClientServiceImpl.java +++ b/service/src/main/java/greencity/service/ubs/UBSClientServiceImpl.java @@ -59,7 +59,6 @@ import greencity.entity.order.ChangeOfPoints; import greencity.entity.order.Event; import greencity.entity.order.Order; -import greencity.entity.order.OrderBag; import greencity.entity.order.OrderPaymentStatusTranslation; import greencity.entity.order.OrderStatusTranslation; import greencity.entity.order.Payment; @@ -95,7 +94,6 @@ import greencity.repository.EventRepository; import greencity.repository.LocationRepository; import greencity.repository.OrderAddressRepository; -import greencity.repository.OrderBagRepository; import greencity.repository.OrderPaymentStatusTranslationRepository; import greencity.repository.OrderRepository; import greencity.repository.OrderStatusTranslationRepository; @@ -116,6 +114,7 @@ import greencity.util.OrderUtils; import lombok.Data; import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.collections4.MapUtils; import org.json.JSONObject; import org.modelmapper.ModelMapper; import org.springframework.beans.factory.annotation.Autowired; @@ -137,6 +136,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.EnumSet; +import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Locale; @@ -148,6 +148,7 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; import java.util.stream.LongStream; + import static greencity.constant.ErrorMessage.ACTUAL_ADDRESS_NOT_FOUND; import static greencity.constant.ErrorMessage.ADDRESS_ALREADY_EXISTS; import static greencity.constant.ErrorMessage.BAD_ORDER_STATUS_REQUEST; @@ -191,6 +192,7 @@ import static greencity.constant.ErrorMessage.USER_DONT_HAVE_ENOUGH_POINTS; import static greencity.constant.ErrorMessage.USER_WITH_CURRENT_ID_DOES_NOT_EXIST; import static greencity.constant.ErrorMessage.USER_WITH_CURRENT_UUID_DOES_NOT_EXIST; + import static java.util.Objects.nonNull; import static java.util.stream.Collectors.joining; import static java.util.stream.Collectors.toList; @@ -229,9 +231,6 @@ public class UBSClientServiceImpl implements UBSClientService { private final TelegramBotRepository telegramBotRepository; private final ViberBotRepository viberBotRepository; private final LocationApiService locationApiService; - private final OrderBagRepository orderBagRepository; - private final OrderBagService orderBagService; - @Lazy @Autowired private UBSManagementService ubsManagementService; @@ -420,14 +419,14 @@ private void checkSumIfCourierLimitBySumOfOrder(TariffsInfo tariffsInfo, Long su public FondyOrderResponse saveFullOrderToDB(OrderResponseDto dto, String uuid, Long orderId) { final User currentUser = userRepository.findByUuid(uuid); TariffsInfo tariffsInfo = tryToFindTariffsInfoByBagIds(getBagIds(dto.getBags()), dto.getLocationId()); - List bagsOrdered = new ArrayList<>(); + Map amountOfBagsOrderedMap = new HashMap<>(); if (!dto.isShouldBePaid()) { dto.setCertificates(Collections.emptySet()); dto.setPointsToUse(0); } - long sumToPayWithoutDiscountInCoins = formBagsToBeSavedAndCalculateOrderSum(bagsOrdered, + long sumToPayWithoutDiscountInCoins = formBagsToBeSavedAndCalculateOrderSum(amountOfBagsOrderedMap, dto.getBags(), tariffsInfo); checkIfUserHaveEnoughPoints(currentUser.getCurrentPoints(), dto.getPointsToUse()); long sumToPayInCoins = reduceOrderSumDueToUsedPoints(sumToPayWithoutDiscountInCoins, dto.getPointsToUse()); @@ -440,7 +439,7 @@ public FondyOrderResponse saveFullOrderToDB(OrderResponseDto dto, String uuid, L UBSuser userData = formUserDataToBeSaved(dto.getPersonalData(), dto.getAddressId(), dto.getLocationId(), currentUser); - getOrder(dto, currentUser, bagsOrdered, sumToPayInCoins, order, orderCertificates, userData); + getOrder(dto, currentUser, amountOfBagsOrderedMap, sumToPayInCoins, order, orderCertificates, userData); eventService.save(OrderHistory.ORDER_FORMED, OrderHistory.CLIENT, order); if (sumToPayInCoins <= 0 || !dto.isShouldBePaid()) { @@ -458,7 +457,7 @@ private List getBagIds(List dto) { .collect(Collectors.toList()); } - private Bag findBagById(Integer id) { + private Bag tryToGetBagById(Integer id) { return bagRepository.findById(id) .orElseThrow(() -> new NotFoundException(BAG_NOT_FOUND + id)); } @@ -886,17 +885,31 @@ private AddressInfoDto addressInfoDtoBuilder(Order order) { } private List bagForUserDtosBuilder(Order order) { - List bagsForOrder = order.getOrderBags(); - Map actualBagsAmount = orderBagService.getActualBagsAmountForOrder(bagsForOrder); + Map actualBagAmounts = getActualBagAmountsForOrder(order); + List bagsForOrder = bagRepository.findBagsByOrderId(order.getId()); return bagsForOrder.stream() - .map(orderBag -> buildBagForUserDto(orderBag, actualBagsAmount.get(orderBag.getBag().getId()))) + .filter(bag -> actualBagAmounts.containsKey(bag.getId())) + .map(bag -> buildBagForUserDto(bag, actualBagAmounts.get(bag.getId()))) .collect(toList()); } - private BagForUserDto buildBagForUserDto(OrderBag orderBag, int count) { - BagForUserDto bagDto = modelMapper.map(orderBag, BagForUserDto.class); + private Map getActualBagAmountsForOrder(Order order) { + if (MapUtils.isNotEmpty(order.getExportedQuantity())) { + return order.getExportedQuantity(); + } + if (MapUtils.isNotEmpty(order.getConfirmedQuantity())) { + return order.getConfirmedQuantity(); + } + if (MapUtils.isNotEmpty(order.getAmountOfBagsOrdered())) { + return order.getAmountOfBagsOrdered(); + } + return new HashMap<>(); + } + + private BagForUserDto buildBagForUserDto(Bag bag, int count) { + BagForUserDto bagDto = modelMapper.map(bag, BagForUserDto.class); bagDto.setCount(count); - bagDto.setTotalPrice(convertCoinsIntoBills(count * orderBag.getPrice())); + bagDto.setTotalPrice(convertCoinsIntoBills(count * bag.getFullPrice())); return bagDto; } @@ -1025,16 +1038,15 @@ private UBSuser updateRecipientDataInOrder(UBSuser ubsUser, UbsCustomersDtoUpdat } private Order formAndSaveOrder(Order order, Set orderCertificates, - List bagsOrdered, UBSuser userData, + Map amountOfBagsOrderedMap, UBSuser userData, User currentUser, long sumToPayInCoins) { order.setOrderStatus(OrderStatus.FORMED); order.setCertificates(orderCertificates); - bagsOrdered.forEach(orderBag -> orderBag.setOrder(order)); - order.setOrderBags(bagsOrdered); + order.setAmountOfBagsOrdered(amountOfBagsOrderedMap); order.setUbsUser(userData); order.setUser(currentUser); order.setSumTotalAmountWithoutDiscounts( - calculateOrderSumWithoutDiscounts(bagsOrdered)); + formBagsToBeSavedAndCalculateOrderSumClient(amountOfBagsOrderedMap)); setOrderPaymentStatus(order, sumToPayInCoins); Payment payment = Payment.builder() @@ -1190,46 +1202,35 @@ private void checkAmountOfBagsIfCourierLimitByAmountOfBag(TariffsInfo courierLoc } } - private long calculateOrderSumWithoutDiscounts(List getOrderBagsAndQuantity) { - return getOrderBagsAndQuantity.stream() - .map(orderBag -> orderBag.getPrice() * orderBag.getAmount()) - .reduce(0L, Long::sum); + private long formBagsToBeSavedAndCalculateOrderSumClient( + Map getOrderBagsAndQuantity) { + long sumToPayInCoins = 0L; + + for (Map.Entry temp : getOrderBagsAndQuantity.entrySet()) { + Integer amount = getOrderBagsAndQuantity.get(temp.getKey()); + Bag bag = bagRepository.findById(temp.getKey()) + .orElseThrow(() -> new NotFoundException(BAG_NOT_FOUND + temp.getKey())); + sumToPayInCoins += bag.getFullPrice() * amount; + } + return sumToPayInCoins; } private long formBagsToBeSavedAndCalculateOrderSum( - List orderBagList, List bags, TariffsInfo tariffsInfo) { + Map map, List bags, TariffsInfo tariffsInfo) { long sumToPayInCoins = 0L; for (BagDto temp : bags) { - Bag bag = findBagById(temp.getId()); + Bag bag = tryToGetBagById(temp.getId()); if (bag.getLimitIncluded().booleanValue()) { checkAmountOfBagsIfCourierLimitByAmountOfBag(tariffsInfo, temp.getAmount()); checkSumIfCourierLimitBySumOfOrder(tariffsInfo, bag.getFullPrice() * temp.getAmount()); } sumToPayInCoins += bag.getFullPrice() * temp.getAmount(); - OrderBag orderBag = createOrderBag(bag); - orderBag.setAmount(temp.getAmount()); - orderBagList.add(orderBag); - } - List orderedBagsIds = bags.stream().map(BagDto::getId).collect(toList()); - List notOrderedBags = tariffsInfo.getBags().stream() - .filter(orderBag -> !orderedBagsIds.contains(orderBag.getId())) - .map(this::createOrderBag).collect(toList()); - notOrderedBags.forEach(orderBag -> orderBag.setAmount(0)); - orderBagList.addAll(notOrderedBags); + map.put(temp.getId(), temp.getAmount()); + } return sumToPayInCoins; } - private OrderBag createOrderBag(Bag bag) { - return OrderBag.builder() - .bag(bag) - .capacity(bag.getCapacity()) - .price(bag.getFullPrice()) - .name(bag.getName()) - .nameEng(bag.getNameEng()) - .build(); - } - private void validateCertificate(Certificate certificate) { if (certificate.getCertificateStatus() == CertificateStatus.NEW) { throw new CertificateIsNotActivated(CERTIFICATE_IS_NOT_ACTIVATED + certificate.getCode()); @@ -1383,9 +1384,9 @@ private long reduceOrderSumDueToUsedPoints(long sumToPayInCoins, int pointsToUse return sumToPayInCoins; } - private void getOrder(OrderResponseDto dto, User currentUser, List amountOfBagsOrdered, + private void getOrder(OrderResponseDto dto, User currentUser, Map amountOfBagsOrderedMap, long sumToPayInCoins, Order order, Set orderCertificates, UBSuser userData) { - formAndSaveOrder(order, orderCertificates, amountOfBagsOrdered, userData, currentUser, sumToPayInCoins); + formAndSaveOrder(order, orderCertificates, amountOfBagsOrderedMap, userData, currentUser, sumToPayInCoins); formAndSaveUser(currentUser, dto.getPointsToUse(), order); } @@ -1430,7 +1431,6 @@ public void deleteOrder(String uuid, Long id) { if (order == null) { throw new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST); } - order.setOrderBags(new ArrayList<>()); orderRepository.delete(order); } diff --git a/service/src/main/java/greencity/service/ubs/UBSManagementServiceImpl.java b/service/src/main/java/greencity/service/ubs/UBSManagementServiceImpl.java index a57272131..5864a7320 100644 --- a/service/src/main/java/greencity/service/ubs/UBSManagementServiceImpl.java +++ b/service/src/main/java/greencity/service/ubs/UBSManagementServiceImpl.java @@ -73,7 +73,6 @@ import greencity.enums.SortingOrder; import greencity.exceptions.BadRequestException; import greencity.exceptions.NotFoundException; -import greencity.repository.OrderBagRepository; import greencity.repository.BagRepository; import greencity.repository.CertificateRepository; import greencity.repository.EmployeeOrderPositionRepository; @@ -110,6 +109,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.server.ResponseStatusException; + import javax.persistence.EntityNotFoundException; import java.math.BigDecimal; import java.math.RoundingMode; @@ -179,10 +179,6 @@ public class UBSManagementServiceImpl implements UBSManagementService { @Lazy @Autowired private UBSClientService ubsClientService; - @Autowired - private final OrderBagService orderBagService; - @Autowired - private OrderBagRepository orderBagRepository; /** * Method gets all order payments, count paid amount, amount which user should @@ -825,7 +821,7 @@ private CounterOrderDetailsDto getPriceDetails(Long id) { CounterOrderDetailsDto dto = new CounterOrderDetailsDto(); Order order = orderRepository.getOrderDetails(id) .orElseThrow(() -> new NotFoundException(ORDER_WITH_CURRENT_ID_DOES_NOT_EXIST + id)); - List bag = orderBagService.findAllBagsInOrderBagsList(orderBagRepository.findOrderBagsByOrderId(id)); + List bag = bagRepository.findBagsByOrderId(id); final List currentCertificate = certificateRepository.findCertificate(id); long sumAmountInCoins = 0; @@ -1064,7 +1060,7 @@ private void setOrderDetailDto(OrderDetailDto dto, Order order) { dto.setAmount(modelMapper.map(order, new TypeToken>() { }.getType())); - dto.setCapacityAndPrice(orderBagService.findBagsByOrderId(order.getId()) + dto.setCapacityAndPrice(bagRepository.findBagsByOrderId(order.getId()) .stream() .map(b -> modelMapper.map(b, BagInfoDto.class)) .collect(Collectors.toList())); diff --git a/service/src/test/java/greencity/ModelUtils.java b/service/src/test/java/greencity/ModelUtils.java index fe886952d..8e6d83ea7 100644 --- a/service/src/test/java/greencity/ModelUtils.java +++ b/service/src/test/java/greencity/ModelUtils.java @@ -101,7 +101,6 @@ import greencity.entity.order.Courier; import greencity.entity.order.Event; import greencity.entity.order.Order; -import greencity.entity.order.OrderBag; import greencity.entity.order.OrderPaymentStatusTranslation; import greencity.entity.order.OrderStatusTranslation; import greencity.entity.order.Payment; @@ -140,6 +139,7 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; + import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; @@ -155,6 +155,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; + import static greencity.enums.NotificationReceiverType.EMAIL; import static greencity.enums.NotificationReceiverType.MOBILE; import static greencity.enums.NotificationReceiverType.SITE; @@ -177,7 +178,6 @@ public class ModelUtils { public static final OrderDetailStatusDto ORDER_DETAIL_STATUS_DTO = createOrderDetailStatusDto(); public static final List TEST_BAG_MAPPING_DTO_LIST = createBagMappingDtoList(); public static final Bag TEST_BAG = createBag(); - public static final OrderBag TEST_ORDER_BAG = createOrderBag(); public static final BagForUserDto TEST_BAG_FOR_USER_DTO = createBagForUserDto(); public static final BagInfoDto TEST_BAG_INFO_DTO = createBagInfoDto(); public static final List TEST_BAG_LIST = singletonList(TEST_BAG); @@ -227,10 +227,6 @@ public class ModelUtils { public static final NotificationDto TEST_NOTIFICATION_DTO = createNotificationDto(); public static final UpdateOrderPageAdminDto UPDATE_ORDER_PAGE_ADMIN_DTO = updateOrderPageAdminDto(); public static final CourierUpdateDto UPDATE_COURIER_DTO = getUpdateCourierDto(); - public static final Bag TEST_BAG2 = createBag().setFullPrice(100000L); - public static final Bag TEST_BAG2_2 = createBag().setFullPrice(100000L).setId(2); - public static final Bag TEST_BAG2_3 = createBag().setFullPrice(100000L).setId(3); - public static final List TEST_BAG_LIST2 = Arrays.asList(TEST_BAG2, TEST_BAG2, TEST_BAG2_2, TEST_BAG2_3); public static EmployeeFilterView getEmployeeFilterView() { return getEmployeeFilterViewWithPassedIds(1L, 5L, 10L); @@ -2280,18 +2276,6 @@ private static Bag createBag() { .build(); } - private static OrderBag createOrderBag() { - return OrderBag.builder() - .id(1L) - .name("Name") - .nameEng("NameEng") - .capacity(20) - .price(100_00L) - .order(createOrder()) - .bag(createBag()) - .build(); - } - private static BagForUserDto createBagForUserDto() { return BagForUserDto.builder() .service("Name") @@ -2684,94 +2668,7 @@ public static Optional getOptionalBag() { .build()); } - public static OrderBag getOrderBag2() { - return OrderBag.builder() - .id(2L) - .capacity(2200) - .price(22000_00L) - .name("name") - .nameEng("name eng") - .amount(20) - .bag(getBag2()) - .order(getOrder()) - .build(); - } - public static Bag getBag() { - return Bag.builder() - .id(1) - .capacity(120) - .commission(50_00L) - .price(120_00L) - .fullPrice(170_00L) - .createdAt(LocalDate.now()) - .createdBy(getEmployee()) - .editedBy(getEmployee()) - .limitIncluded(true) - - .tariffsInfo(getTariffInfo()) - .build(); - } - - public static Bag getBag2() { - return Bag.builder() - .id(2) - .capacity(120) - .commission(50_00L) - .price(120_00L) - .fullPrice(170_00L) - .createdAt(LocalDate.now()) - .createdBy(getEmployee()) - .editedBy(getEmployee()) - .limitIncluded(true) - - .tariffsInfo(getTariffInfo()) - .build(); - } - - public static OrderBag getOrderBag() { - return OrderBag.builder() - .id(1L) - .capacity(120) - .price(120_00L) - .name("name") - .nameEng("name eng") - .amount(1) - .bag(getBag()) - .order(getOrder()) - .build(); - } - - public static OrderBag getOrderBagWithConfirmedAmount() { - return OrderBag.builder() - .id(1L) - .capacity(120) - .price(120_00L) - .name("name") - .nameEng("name eng") - .amount(1) - .confirmedQuantity(2) - .bag(getBag()) - .order(getOrder()) - .build(); - } - - public static OrderBag getOrderBagWithExportedAmount() { - return OrderBag.builder() - .id(1L) - .capacity(120) - .price(120_00L) - .name("name") - .nameEng("name eng") - .amount(1) - .confirmedQuantity(2) - .exportedQuantity(2) - .bag(getBag()) - .order(getOrder()) - .build(); - } - - public static Bag getBagDeleted() { return Bag.builder() .id(1) .capacity(120) @@ -2784,7 +2681,6 @@ public static Bag getBagDeleted() { .description("Description") .descriptionEng("DescriptionEng") .limitIncluded(true) - .tariffsInfo(getTariffInfo()) .build(); } @@ -2808,46 +2704,14 @@ public static Bag getBagForOrder() { public static TariffServiceDto getTariffServiceDto() { return TariffServiceDto.builder() .name("Бавовняна сумка") - .capacity(20) - .price(100.0) + .capacity(120) + .price(120.0) .commission(50.0) .description("Description") .build(); } - public static Bag getEditedBag() { - return Bag.builder() - .id(1) - .capacity(20) - .price(100_00L) - .fullPrice(150_00L) - .commission(50_00L) - .name("Бавовняна сумка") - .description("Description") - .createdAt(LocalDate.now()) - .createdBy(getEmployee()) - .editedBy(getEmployee()) - .editedAt(LocalDate.now()) - .limitIncluded(true) - - .tariffsInfo(getTariffInfo()) - .build(); - - } - - public static OrderBag getEditedOrderBag() { - return OrderBag.builder() - .id(1L) - .amount(1) - .price(150_00L) - .capacity(20) - .name("Бавовняна сумка") - .bag(getBag()) - .order(getOrder()) - .build(); - } - public static Location getLocation() { return Location.builder() .id(1L) @@ -2945,7 +2809,6 @@ public static Bag getNewBag() { .descriptionEng("DescriptionEng") .name("name") .nameEng("nameEng") - .build(); } @@ -3686,20 +3549,12 @@ public static BigOrderTableViews getBigOrderTableViewsByDateNullTest() { .setResponsibleNavigator(null); } - public static Map getAmount() { - Map hashMap = new HashMap<>(); - hashMap.put(1, 1); - hashMap.put(2, 1); - return hashMap; - } - public static Order getOrderForGetOrderStatusData2Test() { Map hashMap = new HashMap<>(); hashMap.put(1, 1); hashMap.put(2, 1); return Order.builder() - .orderBags(Arrays.asList(getOrderBag(), getOrderBag2())) .id(1L) .amountOfBagsOrdered(hashMap) .confirmedQuantity(hashMap) @@ -4906,4 +4761,4 @@ public static PositionWithTranslateDto getPositionWithTranslateDto(Long id) { public static Refund getRefund(Long id) { return Refund.builder().orderId(id).build(); } -} \ No newline at end of file +} diff --git a/service/src/test/java/greencity/mapping/bag/BagForUserDtoMapperTest.java b/service/src/test/java/greencity/mapping/bag/BagForUserDtoMapperTest.java index 033425d77..1f9fcbcdd 100644 --- a/service/src/test/java/greencity/mapping/bag/BagForUserDtoMapperTest.java +++ b/service/src/test/java/greencity/mapping/bag/BagForUserDtoMapperTest.java @@ -2,7 +2,7 @@ import greencity.ModelUtils; import greencity.dto.bag.BagForUserDto; -import greencity.entity.order.OrderBag; +import greencity.entity.order.Bag; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; @@ -18,8 +18,8 @@ class BagForUserDtoMapperTest { @Test void convert() { BagForUserDto expected = ModelUtils.TEST_BAG_FOR_USER_DTO; - OrderBag orderBag = ModelUtils.TEST_ORDER_BAG; - BagForUserDto actual = bagForUserDtoMapper.convert(orderBag); + Bag bag = ModelUtils.TEST_BAG; + BagForUserDto actual = bagForUserDtoMapper.convert(bag); assertEquals(expected.getService(), actual.getService()); assertEquals(expected.getServiceEng(), actual.getServiceEng()); diff --git a/service/src/test/java/greencity/service/notification/NotificationServiceImplTest.java b/service/src/test/java/greencity/service/notification/NotificationServiceImplTest.java index 440f8e824..bebf741f7 100644 --- a/service/src/test/java/greencity/service/notification/NotificationServiceImplTest.java +++ b/service/src/test/java/greencity/service/notification/NotificationServiceImplTest.java @@ -23,7 +23,6 @@ import greencity.exceptions.NotFoundException; import greencity.exceptions.http.AccessDeniedException; import greencity.repository.*; -import greencity.service.ubs.OrderBagService; import lombok.SneakyThrows; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Nested; @@ -85,8 +84,6 @@ class NotificationServiceImplTest { private Clock fixedClock; ExecutorService mockExecutor = MoreExecutors.newDirectExecutorService(); - @Mock - private OrderBagService orderBagService; @Nested class ClockNotification { @@ -304,7 +301,7 @@ void testNotifyInactiveAccounts() { List.of(abstractNotificationProvider), templateRepository, mockExecutor, - internalUrlConfigProp, orderBagService); + internalUrlConfigProp); User user = User.builder().id(42L).build(); User user1 = User.builder().id(43L).build(); UserNotification notification = new UserNotification(); @@ -412,7 +409,7 @@ void testNotifyAllHalfPaidPackages() { parameters.add(NotificationParameter.builder().key("orderNumber") .value(orders.get(0).getId().toString()).build()); - when(orderBagService.findBagsByOrderId(any())).thenReturn(getBag1list()); + when(bagRepository.findBagsByOrderId(any())).thenReturn(getBag1list()); when(userNotificationRepository.save(any())).thenReturn(notification); when(notificationParameterRepository.saveAll(any())).thenReturn(new ArrayList<>(parameters)); @@ -513,7 +510,7 @@ void testNotifyUnpaidOrderForBroughtByHimself() { when(userNotificationRepository.save(any())).thenReturn(notification); when(notificationParameterRepository.saveAll(any())).thenReturn(new ArrayList<>(parameters)); - when(orderBagService.findBagsByOrderId(any())).thenReturn(getBag4list()); + when(bagRepository.findBagsByOrderId(any())).thenReturn(getBag4list()); notificationService.notifyUnpaidOrder(order); @@ -544,7 +541,7 @@ void testNotifyUnpaidOrderForDone() { when(userNotificationRepository.save(any())).thenReturn(notification); when(notificationParameterRepository.saveAll(any())).thenReturn(new ArrayList<>(parameters)); - when(orderBagService.findBagsByOrderId(any())).thenReturn(getBag4list()); + when(bagRepository.findBagsByOrderId(any())).thenReturn(getBag4list()); notificationService.notifyUnpaidOrder(order); verify(userNotificationRepository).save(any()); @@ -575,7 +572,7 @@ void testNotifyUnpaidOrderForCancel() { when(userNotificationRepository.save(any())).thenReturn(notification); when(notificationParameterRepository.saveAll(any())).thenReturn(new ArrayList<>(parameters)); - when(orderBagService.findBagsByOrderId(any())).thenReturn(getBag4list()); + when(bagRepository.findBagsByOrderId(any())).thenReturn(getBag4list()); notificationService.notifyUnpaidOrder(order); @@ -606,7 +603,7 @@ void testNotifyHalfPaidOrderForDone() { when(userNotificationRepository.save(any())).thenReturn(notification); when(notificationParameterRepository.saveAll(any())).thenReturn(new ArrayList<>(parameters)); - when(orderBagService.findBagsByOrderId(any())).thenReturn(getBag4list()); + when(bagRepository.findBagsByOrderId(any())).thenReturn(getBag4list()); notificationService.notifyHalfPaidPackage(order); @@ -633,7 +630,7 @@ void testNotifyHalfPaidOrderForBroughtByHimself() { when(userNotificationRepository.save(any())).thenReturn(notification); when(notificationParameterRepository.saveAll(any())).thenReturn(new ArrayList<>(parameters)); - when(orderBagService.findBagsByOrderId(any())).thenReturn(getBag4list()); + when(bagRepository.findBagsByOrderId(any())).thenReturn(getBag4list()); notificationService.notifyHalfPaidPackage(order); diff --git a/service/src/test/java/greencity/service/ubs/OrderBagServiceTest.java b/service/src/test/java/greencity/service/ubs/OrderBagServiceTest.java deleted file mode 100644 index e6b56145d..000000000 --- a/service/src/test/java/greencity/service/ubs/OrderBagServiceTest.java +++ /dev/null @@ -1,159 +0,0 @@ -package greencity.service.ubs; - -import greencity.entity.order.Bag; -import greencity.entity.order.Order; -import greencity.entity.order.OrderBag; -import greencity.repository.OrderBagRepository; - -import java.util.*; - -import static greencity.ModelUtils.getOrderBag; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; - -import static greencity.ModelUtils.*; -import static org.junit.jupiter.api.Assertions.*; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.when; - -@ExtendWith({MockitoExtension.class}) -class OrderBagServiceTest { - - @InjectMocks - private OrderBagService orderBagService; - @Mock - private OrderBagRepository orderBagRepository; - - @Test - void testFindBagsByOrderId() { - when(orderBagRepository.findOrderBagsByOrderId(any())).thenReturn(Arrays.asList(getOrderBag(), getOrderBag2())); - List bags = orderBagService.findBagsByOrderId(1L); - assertNotNull(bags); - Bag bag1 = getBag().setFullPrice(getOrderBag().getPrice()); - Bag bag2 = getBag2().setFullPrice(getOrderBag2().getPrice()); - - assertEquals(bag1, bags.get(0)); - assertEquals(bag2, bags.get(1)); - - } - - @Test - void testFindBagsByOrdersList() { - List bags = orderBagService.findAllBagsInOrderBagsList(Arrays.asList(getOrderBag(), getOrderBag2())); - - Bag bag1 = getBag().setFullPrice(getOrderBag().getPrice()); - Bag bag2 = getBag2().setFullPrice(getOrderBag2().getPrice()); - assertNotNull(bags); - assertEquals(bag1, bags.get(0)); - assertEquals(bag2, bags.get(1)); - } - - @Test - void testRemoveBagFromOrder() { - Order order = getOrder(); - order.setOrderBags(Arrays.asList(getOrderBag(), getOrderBag2())); - int size = order.getOrderBags().size(); - orderBagService.removeBagFromOrder(order, getOrderBag()); - assertNotEquals(order.getOrderBags().size(), size); - } - - @Test - void testGetActualBagsAmountForOrder_WithExportedQuantity() { - List bagsForOrder = new ArrayList<>(); - OrderBag bag1 = createOrderBagWithExportedQuantity(1, 10); - OrderBag bag2 = createOrderBagWithExportedQuantity(2, 20); - bagsForOrder.add(bag1); - bagsForOrder.add(bag2); - - Map result = orderBagService.getActualBagsAmountForOrder(bagsForOrder); - - Map expected = new HashMap<>(); - expected.put(1, 10); - expected.put(2, 20); - assertEquals(expected, result); - } - - @Test - void testGetActualBagsAmountForOrder_WithConfirmedQuantity() { - List bagsForOrder = new ArrayList<>(); - OrderBag bag1 = createOrderBagWithConfirmedQuantity(1, 5); - OrderBag bag2 = createOrderBagWithConfirmedQuantity(2, 15); - bagsForOrder.add(bag1); - bagsForOrder.add(bag2); - - Map result = orderBagService.getActualBagsAmountForOrder(bagsForOrder); - - Map expected = new HashMap<>(); - expected.put(1, 5); - expected.put(2, 15); - assertEquals(expected, result); - } - - @Test - void testGetActualBagsAmountForOrder_WithAmount() { - List bagsForOrder = new ArrayList<>(); - OrderBag bag1 = createOrderBagWithAmount(1, 3); - OrderBag bag2 = createOrderBagWithAmount(2, 7); - bagsForOrder.add(bag1); - bagsForOrder.add(bag2); - - Map result = orderBagService.getActualBagsAmountForOrder(bagsForOrder); - - Map expected = new HashMap<>(); - expected.put(1, 3); - expected.put(2, 7); - assertEquals(expected, result); - } - - @Test - void testGetActualBagsAmountForOrder_WithNoMatch() { - List bagsForOrder = new ArrayList<>(); - OrderBag bag1 = createOrderBagWithAmount(1, 3); - bag1.setExportedQuantity(null); - bag1.setConfirmedQuantity(null); - bag1.setAmount(null); - - OrderBag bag2 = createOrderBagWithAmount(2, 7); - bag2.setExportedQuantity(null); - bag2.setConfirmedQuantity(null); - bag2.setAmount(null); - bagsForOrder.add(bag1); - bagsForOrder.add(bag2); - - Map result = orderBagService.getActualBagsAmountForOrder(bagsForOrder); - - Map expected = new HashMap<>(); - assertEquals(expected, result); - } - - private OrderBag createOrderBagWithExportedQuantity(int bagId, int exportedQuantity) { - OrderBag orderBag = new OrderBag(); - Bag bag = new Bag(); - bag.setId(bagId); - orderBag.setBag(bag); - orderBag.setExportedQuantity(exportedQuantity); - return orderBag; - } - - private OrderBag createOrderBagWithConfirmedQuantity(int bagId, int confirmedQuantity) { - OrderBag orderBag = new OrderBag(); - Bag bag = new Bag(); - bag.setId(bagId); - orderBag.setBag(bag); - orderBag.setConfirmedQuantity(confirmedQuantity); - return orderBag; - } - - private OrderBag createOrderBagWithAmount(int bagId, int amount) { - OrderBag orderBag = new OrderBag(); - Bag bag = new Bag(); - bag.setId(bagId); - orderBag.setBag(bag); - orderBag.setAmount(amount); - return orderBag; - } -} \ No newline at end of file diff --git a/service/src/test/java/greencity/service/ubs/SuperAdminServiceImplTest.java b/service/src/test/java/greencity/service/ubs/SuperAdminServiceImplTest.java index f3a3c2716..49327a86e 100644 --- a/service/src/test/java/greencity/service/ubs/SuperAdminServiceImplTest.java +++ b/service/src/test/java/greencity/service/ubs/SuperAdminServiceImplTest.java @@ -23,7 +23,6 @@ import greencity.dto.tariff.SetTariffLimitsDto; import greencity.entity.order.Bag; import greencity.entity.order.Courier; -import greencity.entity.order.Order; import greencity.entity.order.Service; import greencity.entity.order.TariffLocation; import greencity.entity.order.TariffsInfo; @@ -31,7 +30,10 @@ import greencity.entity.user.Region; import greencity.entity.user.employee.Employee; import greencity.entity.user.employee.ReceivingStation; -import greencity.enums.*; +import greencity.enums.CourierStatus; +import greencity.enums.LocationStatus; +import greencity.enums.StationStatus; +import greencity.enums.TariffStatus; import greencity.exceptions.BadRequestException; import greencity.exceptions.NotFoundException; import greencity.exceptions.UnprocessableEntityException; @@ -45,8 +47,6 @@ import greencity.repository.DeactivateChosenEntityRepository; import greencity.repository.EmployeeRepository; import greencity.repository.LocationRepository; -import greencity.repository.OrderBagRepository; -import greencity.repository.OrderRepository; import greencity.repository.ReceivingStationRepository; import greencity.repository.RegionRepository; import greencity.repository.ServiceRepository; @@ -68,10 +68,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Arrays; import java.util.Optional; -import java.util.Map; -import java.util.HashMap; import java.util.Set; import java.util.UUID; import java.util.stream.Stream; @@ -134,12 +131,6 @@ class SuperAdminServiceImplTest { private TariffLocationRepository tariffsLocationRepository; @Mock private DeactivateChosenEntityRepository deactivateTariffsForChosenParamRepository; - @Mock - private OrderBagRepository orderBagRepository; - @Mock - private OrderRepository orderRepository; - @Mock - private OrderBagService orderBagService; @AfterEach void afterEach() { @@ -155,8 +146,7 @@ void afterEach() { receivingStationRepository, tariffsInfoRepository, tariffsLocationRepository, - deactivateTariffsForChosenParamRepository, - orderBagRepository); + deactivateTariffsForChosenParamRepository); } @Test @@ -215,7 +205,7 @@ void addTariffServiceIfTariffNotFoundExceptionTest() { @Test void getTariffServiceTest() { - List bags = List.of(ModelUtils.getNewBag()); + List bags = List.of(ModelUtils.getOptionalBag().get()); GetTariffServiceDto dto = ModelUtils.getGetTariffServiceDto(); when(tariffsInfoRepository.existsById(1L)).thenReturn(true); @@ -229,20 +219,6 @@ void getTariffServiceTest() { verify(modelMapper).map(bags.get(0), GetTariffServiceDto.class); } - @Test - void getTariffServiceIfThereAreNoBags() { - List bags = Collections.emptyList(); - - when(tariffsInfoRepository.existsById(1L)).thenReturn(true); - when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(bags); - - List dtos = superAdminService.getTariffService(1); - - assertEquals(Collections.emptyList(), dtos); - verify(tariffsInfoRepository).existsById(1L); - verify(bagRepository).findBagsByTariffsInfoId(1L); - } - @Test void getTariffServiceIfTariffNotFoundException() { when(tariffsInfoRepository.existsById(1L)).thenReturn(false); @@ -257,112 +233,36 @@ void getTariffServiceIfTariffNotFoundException() { @Test void deleteTariffServiceWhenTariffBagsWithLimits() { Bag bag = ModelUtils.getBag(); - Bag bagDeleted = ModelUtils.getBagDeleted(); TariffsInfo tariffsInfo = ModelUtils.getTariffInfo(); + bag.setTariffsInfo(tariffsInfo); when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); + doNothing().when(bagRepository).delete(bag); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(List.of(bag)); - superAdminService.deleteTariffService(1); - + assertEquals(TariffStatus.ACTIVE, tariffsInfo.getTariffStatus()); verify(bagRepository).findById(1); + verify(bagRepository).delete(bag); verify(bagRepository).findBagsByTariffsInfoId(1L); verify(tariffsInfoRepository, never()).save(tariffsInfo); } - @Test - void deleteTariffService2() { - Bag bag = ModelUtils.getBag(); - TariffsInfo tariffsInfo = ModelUtils.getTariffsInfoWithStatusNew(); - tariffsInfo.setBags(Arrays.asList(bag)); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setTariffStatus(TariffStatus.DEACTIVATED); - Map amount = new HashMap<>(); - amount.put(1, 3); - amount.put(2, 7); - - Order order = ModelUtils.getOrder(); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); - when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); - when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(Collections.emptyList()); - when(tariffsInfoRepository.save(tariffsInfo)).thenReturn(tariffsInfo); - when(orderRepository.findAllByBagId(bag.getId())).thenReturn(Arrays.asList(order)); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))).thenReturn(amount); - superAdminService.deleteTariffService(1); - - verify(bagRepository).findById(1); - verify(bagRepository).findBagsByTariffsInfoId(1L); - verify(tariffsInfoRepository).save(tariffsInfo); - } - - @Test - void deleteTariffService3() { - Bag bag = ModelUtils.getBag(); - TariffsInfo tariffsInfo = ModelUtils.getTariffsInfoWithStatusNew(); - tariffsInfo.setBags(Arrays.asList(bag)); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setTariffStatus(TariffStatus.DEACTIVATED); - Map amount = new HashMap<>(); - amount.put(1, 3); - amount.put(2, 7); - Order order = ModelUtils.getOrder(); - order.setOrderPaymentStatus(OrderPaymentStatus.UNPAID); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); - when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); - when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(Collections.emptyList()); - when(tariffsInfoRepository.save(tariffsInfo)).thenReturn(tariffsInfo); - when(orderRepository.findAllByBagId(bag.getId())).thenReturn(Arrays.asList(order)); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))).thenReturn(amount); - superAdminService.deleteTariffService(1); - - verify(bagRepository).findById(1); - verify(bagRepository).findBagsByTariffsInfoId(1L); - verify(tariffsInfoRepository).save(tariffsInfo); - } - - @Test - void deleteTariffService4() { - Bag bag = ModelUtils.getBag(); - TariffsInfo tariffsInfo = ModelUtils.getTariffsInfoWithStatusNew(); - tariffsInfo.setBags(Arrays.asList(bag)); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setTariffStatus(TariffStatus.DEACTIVATED); - Map amount = new HashMap<>(); - amount.put(1, 0); - Order order = ModelUtils.getOrder(); - order.setOrderPaymentStatus(OrderPaymentStatus.UNPAID); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); - when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); - when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(Collections.emptyList()); - when(tariffsInfoRepository.save(tariffsInfo)).thenReturn(tariffsInfo); - when(orderRepository.findAllByBagId(bag.getId())).thenReturn(Arrays.asList(order)); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))).thenReturn(amount); - superAdminService.deleteTariffService(1); - - verify(bagRepository).findById(1); - verify(bagRepository).findBagsByTariffsInfoId(1L); - verify(tariffsInfoRepository).save(tariffsInfo); - } - @Test void deleteTariffServiceWhenTariffBagsListIsEmpty() { Bag bag = ModelUtils.getBag(); - TariffsInfo tariffsInfo = ModelUtils.getTariffsInfoWithStatusNew(); - tariffsInfo.setBags(Arrays.asList(bag)); + TariffsInfo tariffsInfo = ModelUtils.getTariffInfo(); bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setTariffStatus(TariffStatus.DEACTIVATED); - Map amount = new HashMap<>(); - amount.put(1, 0); - Order order = ModelUtils.getOrder(); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); + TariffsInfo tariffsInfoNew = ModelUtils.getTariffsInfoWithStatusNew(); + tariffsInfoNew.setBags(Collections.emptyList()); + when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); + doNothing().when(bagRepository).delete(bag); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(Collections.emptyList()); when(tariffsInfoRepository.save(tariffsInfo)).thenReturn(tariffsInfo); - when(orderRepository.findAllByBagId(bag.getId())).thenReturn(Arrays.asList(order)); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))).thenReturn(amount); superAdminService.deleteTariffService(1); - + assertEquals(TariffStatus.NEW, tariffsInfoNew.getTariffStatus()); verify(bagRepository).findById(1); + verify(bagRepository).delete(bag); verify(bagRepository).findBagsByTariffsInfoId(1L); verify(tariffsInfoRepository).save(tariffsInfo); } @@ -370,175 +270,74 @@ void deleteTariffServiceWhenTariffBagsListIsEmpty() { @Test void deleteTariffServiceWhenTariffBagsWithoutLimits() { Bag bag = ModelUtils.getBag(); + TariffsInfo tariffsInfo = ModelUtils.getTariffInfo(); bag.setLimitIncluded(false); - Bag bagDeleted = ModelUtils.getBagDeleted(); - bagDeleted.setLimitIncluded(false); + bag.setTariffsInfo(tariffsInfo); TariffsInfo tariffsInfoNew = ModelUtils.getTariffsInfoWithStatusNew(); - tariffsInfoNew.setBags(Arrays.asList(bag)); - bag.setTariffsInfo(tariffsInfoNew); - tariffsInfoNew.setTariffStatus(TariffStatus.DEACTIVATED); - tariffsInfoNew.setBags(Arrays.asList(bag)); - bag.setTariffsInfo(tariffsInfoNew); - tariffsInfoNew.setTariffStatus(TariffStatus.DEACTIVATED); + tariffsInfoNew.setBags(Collections.emptyList()); when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); + doNothing().when(bagRepository).delete(bag); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(List.of(bag)); - when(tariffsInfoRepository.save(tariffsInfoNew)).thenReturn(tariffsInfoNew); - + when(tariffsInfoRepository.save(tariffsInfo)).thenReturn(tariffsInfoNew); superAdminService.deleteTariffService(1); - + assertEquals(TariffStatus.NEW, tariffsInfoNew.getTariffStatus()); verify(bagRepository).findById(1); + verify(bagRepository).delete(bag); verify(bagRepository).findBagsByTariffsInfoId(1L); verify(tariffsInfoRepository).save(tariffsInfoNew); } @Test - void deleteTariffServiceThrowBagNotFoundException() { + void deleteTariffServiceThrowNotFoundException() { when(bagRepository.findById(1)).thenReturn(Optional.empty()); assertThrows(NotFoundException.class, () -> superAdminService.deleteTariffService(1)); verify(bagRepository).findById(1); - verify(bagRepository, never()).save(any(Bag.class)); - } - - @Test - void editTariffServiceWithUnpaidOrder() { - Bag bag = ModelUtils.getBag(); - Bag editedBag = ModelUtils.getEditedBag(); - Employee employee = ModelUtils.getEmployee(); - TariffServiceDto dto = ModelUtils.getTariffServiceDto(); - GetTariffServiceDto editedDto = ModelUtils.getGetTariffServiceDto(); - Order order = ModelUtils.getOrder(); - String uuid = UUID.randomUUID().toString(); - order.setOrderBags(List.of(ModelUtils.getOrderBag())); - - when(employeeRepository.findByUuid(uuid)).thenReturn(Optional.of(employee)); - when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); - - when(bagRepository.save(editedBag)).thenReturn(editedBag); - when(modelMapper.map(editedBag, GetTariffServiceDto.class)).thenReturn(editedDto); - doNothing().when(orderBagRepository) - .updateAllByBagIdForUnpaidOrders(1, 20, 150_00L, "Бавовняна сумка", null); - when(orderRepository.findAllUnpaidOrdersByBagId(1)).thenReturn(List.of(order)); - when(orderRepository.saveAll(List.of(order))).thenReturn(List.of(order)); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); - - GetTariffServiceDto actual = superAdminService.editTariffService(dto, 1, uuid); - - assertEquals(editedDto, actual); - verify(employeeRepository).findByUuid(uuid); - verify(bagRepository).findById(1); - verify(bagRepository).save(editedBag); - verify(modelMapper).map(editedBag, GetTariffServiceDto.class); - verify(orderBagRepository) - .updateAllByBagIdForUnpaidOrders(1, 20, 150_00L, "Бавовняна сумка", null); - verify(orderRepository).findAllUnpaidOrdersByBagId(1); - verify(orderRepository).saveAll(anyList()); + verify(bagRepository, never()).delete(any(Bag.class)); } @Test - void editTariffServiceWithUnpaidOrderAndBagConfirmedAmount() { + void editTariffService() { Bag bag = ModelUtils.getBag(); - Bag editedBag = ModelUtils.getEditedBag(); Employee employee = ModelUtils.getEmployee(); TariffServiceDto dto = ModelUtils.getTariffServiceDto(); GetTariffServiceDto editedDto = ModelUtils.getGetTariffServiceDto(); - Order order = ModelUtils.getOrder(); String uuid = UUID.randomUUID().toString(); - order.setOrderBags(List.of(ModelUtils.getOrderBagWithConfirmedAmount())); when(employeeRepository.findByUuid(uuid)).thenReturn(Optional.of(employee)); when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); - when(bagRepository.save(editedBag)).thenReturn(editedBag); - when(modelMapper.map(editedBag, GetTariffServiceDto.class)).thenReturn(editedDto); - doNothing().when(orderBagRepository) - .updateAllByBagIdForUnpaidOrders(1, 20, 150_00L, "Бавовняна сумка", null); - when(orderRepository.findAllUnpaidOrdersByBagId(1)).thenReturn(List.of(order)); - when(orderRepository.saveAll(List.of(order))).thenReturn(List.of(order)); - when(orderBagService - .getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag().setConfirmedQuantity(2)))) - .thenReturn(ModelUtils.getAmount()); - - GetTariffServiceDto actual = superAdminService.editTariffService(dto, 1, uuid); - - assertEquals(editedDto, actual); - verify(employeeRepository).findByUuid(uuid); - verify(bagRepository).findById(1); - verify(bagRepository).save(editedBag); - verify(modelMapper).map(editedBag, GetTariffServiceDto.class); - verify(orderBagRepository) - .updateAllByBagIdForUnpaidOrders(1, 20, 150_00L, "Бавовняна сумка", null); - verify(orderRepository).findAllUnpaidOrdersByBagId(1); - verify(orderRepository).saveAll(anyList()); - } + when(bagRepository.save(bag)).thenReturn(bag); + when(modelMapper.map(bag, GetTariffServiceDto.class)).thenReturn(editedDto); - @Test - void editTariffServiceWithUnpaidOrderAndBagExportedAmount() { - Bag bag = ModelUtils.getBag(); - Bag editedBag = ModelUtils.getEditedBag(); - Employee employee = ModelUtils.getEmployee(); - TariffServiceDto dto = ModelUtils.getTariffServiceDto(); - GetTariffServiceDto editedDto = ModelUtils.getGetTariffServiceDto(); - Order order = ModelUtils.getOrder(); - String uuid = UUID.randomUUID().toString(); - order.setOrderBags(List.of(ModelUtils.getOrderBagWithExportedAmount())); + superAdminService.editTariffService(dto, 1, uuid); - when(employeeRepository.findByUuid(uuid)).thenReturn(Optional.of(employee)); - when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); - when(bagRepository.save(editedBag)).thenReturn(editedBag); - when(modelMapper.map(editedBag, GetTariffServiceDto.class)).thenReturn(editedDto); - doNothing().when(orderBagRepository) - .updateAllByBagIdForUnpaidOrders(1, 20, 150_00L, "Бавовняна сумка", null); - when(orderRepository.findAllUnpaidOrdersByBagId(1)).thenReturn(List.of(order)); - when(orderRepository.saveAll(List.of(order))).thenReturn(List.of(order)); - when(orderBagService.getActualBagsAmountForOrder( - Arrays.asList(ModelUtils.getOrderBag().setExportedQuantity(2).setConfirmedQuantity(2)))) - .thenReturn(ModelUtils.getAmount()); - - GetTariffServiceDto actual = superAdminService.editTariffService(dto, 1, uuid); - - assertEquals(editedDto, actual); verify(employeeRepository).findByUuid(uuid); verify(bagRepository).findById(1); - verify(bagRepository).findById(1); - - verify(bagRepository).save(editedBag); - verify(modelMapper).map(editedBag, GetTariffServiceDto.class); - verify(orderBagRepository) - .updateAllByBagIdForUnpaidOrders(1, 20, 150_00L, "Бавовняна сумка", null); - verify(orderRepository).findAllUnpaidOrdersByBagId(1); - verify(orderRepository).saveAll(anyList()); + verify(bagRepository).save(bag); + verify(modelMapper).map(bag, GetTariffServiceDto.class); } @Test - void editTariffServiceWithoutUnpaidOrder() { + void editTariffServiceIfCommissionIsNull() { Bag bag = ModelUtils.getBag(); - Bag editedBag = ModelUtils.getEditedBag(); Employee employee = ModelUtils.getEmployee(); TariffServiceDto dto = ModelUtils.getTariffServiceDto(); + dto.setCommission(null); GetTariffServiceDto editedDto = ModelUtils.getGetTariffServiceDto(); String uuid = UUID.randomUUID().toString(); when(employeeRepository.findByUuid(uuid)).thenReturn(Optional.of(employee)); when(bagRepository.findById(1)).thenReturn(Optional.of(bag)); - when(bagRepository.save(editedBag)).thenReturn(editedBag); - when(modelMapper.map(editedBag, GetTariffServiceDto.class)).thenReturn(editedDto); - doNothing().when(orderBagRepository) - .updateAllByBagIdForUnpaidOrders(1, 20, 150_00L, "Бавовняна сумка", null); - when(orderRepository.findAllUnpaidOrdersByBagId(1)).thenReturn(Collections.emptyList()); + when(bagRepository.save(bag)).thenReturn(bag); + when(modelMapper.map(bag, GetTariffServiceDto.class)).thenReturn(editedDto); - GetTariffServiceDto actual = superAdminService.editTariffService(dto, 1, uuid); + superAdminService.editTariffService(dto, 1, uuid); - assertEquals(editedDto, actual); verify(employeeRepository).findByUuid(uuid); verify(bagRepository).findById(1); - verify(bagRepository).save(editedBag); - verify(modelMapper).map(editedBag, GetTariffServiceDto.class); - verify(orderBagRepository) - .updateAllByBagIdForUnpaidOrders(1, 20, 150_00L, "Бавовняна сумка", null); - verify(orderRepository).findAllUnpaidOrdersByBagId(1); - verify(orderRepository, never()).saveAll(anyList()); + verify(bagRepository).save(bag); + verify(modelMapper).map(bag, GetTariffServiceDto.class); } @Test @@ -610,40 +409,38 @@ void deleteServiceThrowNotFoundException() { void getService() { Service service = ModelUtils.getService(); GetServiceDto getServiceDto = ModelUtils.getGetServiceDto(); - TariffsInfo tariffsInfo = ModelUtils.getTariffsInfo(); - when(tariffsInfoRepository.findById(1L)).thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.existsById(1L)).thenReturn(true); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.of(service)); when(modelMapper.map(service, GetServiceDto.class)).thenReturn(getServiceDto); assertEquals(getServiceDto, superAdminService.getService(1L)); - verify(tariffsInfoRepository).findById(1L); + verify(tariffsInfoRepository).existsById(1L); verify(serviceRepository).findServiceByTariffsInfoId(1L); verify(modelMapper).map(service, GetServiceDto.class); } @Test void getServiceIfServiceNotExists() { - TariffsInfo tariffsInfo = ModelUtils.getTariffsInfo(); - - when(tariffsInfoRepository.findById(1L)).thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.existsById(1L)).thenReturn(true); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.empty()); assertNull(superAdminService.getService(1L)); - verify(tariffsInfoRepository).findById(1L); + verify(tariffsInfoRepository).existsById(1L); verify(serviceRepository).findServiceByTariffsInfoId(1L); + verify(modelMapper, never()).map(any(Service.class), any(GetServiceDto.class)); } @Test void getServiceThrowTariffNotFoundException() { - when(tariffsInfoRepository.findById(1L)).thenReturn(Optional.empty()); + when(tariffsInfoRepository.existsById(1L)).thenReturn(false); assertThrows(NotFoundException.class, () -> superAdminService.getService(1L)); - verify(tariffsInfoRepository).findById(1L); + verify(tariffsInfoRepository).existsById(1L); } @Test @@ -710,6 +507,7 @@ void addService() { TariffsInfo tariffsInfo = ModelUtils.getTariffsInfo(); String uuid = UUID.randomUUID().toString(); + when(tariffsInfoRepository.existsById(1L)).thenReturn(true); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.empty()); when(tariffsInfoRepository.findById(1L)).thenReturn(Optional.of(tariffsInfo)); when(employeeRepository.findByUuid(uuid)).thenReturn(Optional.of(employee)); @@ -720,6 +518,7 @@ void addService() { assertEquals(getServiceDto, superAdminService.addService(1L, serviceDto, uuid)); verify(employeeRepository).findByUuid(uuid); + verify(tariffsInfoRepository).existsById(1L); verify(tariffsInfoRepository).findById(1L); verify(serviceRepository).findServiceByTariffsInfoId(1L); verify(serviceRepository).save(service); @@ -731,33 +530,31 @@ void addService() { void addServiceThrowServiceAlreadyExistsException() { Service createdService = ModelUtils.getService(); ServiceDto serviceDto = ModelUtils.getServiceDto(); - TariffsInfo tariffsInfo = ModelUtils.getTariffsInfo(); String uuid = UUID.randomUUID().toString(); - when(tariffsInfoRepository.findById(1L)).thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.existsById(1L)).thenReturn(true); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.of(createdService)); assertThrows(ServiceAlreadyExistsException.class, () -> superAdminService.addService(1L, serviceDto, uuid)); - verify(tariffsInfoRepository).findById(1L); + verify(tariffsInfoRepository).existsById(1L); verify(serviceRepository).findServiceByTariffsInfoId(1L); } @Test void addServiceThrowEmployeeNotFoundException() { ServiceDto serviceDto = ModelUtils.getServiceDto(); - TariffsInfo tariffsInfo = ModelUtils.getTariffsInfo(); String uuid = UUID.randomUUID().toString(); - when(tariffsInfoRepository.findById(1L)).thenReturn(Optional.of(tariffsInfo)); + when(tariffsInfoRepository.existsById(1L)).thenReturn(true); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.empty()); when(employeeRepository.findByUuid(uuid)).thenReturn(Optional.empty()); assertThrows(NotFoundException.class, () -> superAdminService.addService(1L, serviceDto, uuid)); - verify(tariffsInfoRepository).findById(1L); + verify(tariffsInfoRepository).existsById(1L); verify(serviceRepository).findServiceByTariffsInfoId(1L); verify(employeeRepository).findByUuid(uuid); } @@ -767,12 +564,12 @@ void addServiceThrowTariffNotFoundException() { ServiceDto serviceDto = ModelUtils.getServiceDto(); String uuid = UUID.randomUUID().toString(); - when(tariffsInfoRepository.findById(1L)).thenReturn(Optional.empty()); + when(tariffsInfoRepository.existsById(1L)).thenReturn(false); assertThrows(NotFoundException.class, () -> superAdminService.addService(1L, serviceDto, uuid)); - verify(tariffsInfoRepository).findById(1L); + verify(tariffsInfoRepository).existsById(1L); } @Test diff --git a/service/src/test/java/greencity/service/ubs/UBSClientServiceImplTest.java b/service/src/test/java/greencity/service/ubs/UBSClientServiceImplTest.java index da6826fee..c36b12eed 100644 --- a/service/src/test/java/greencity/service/ubs/UBSClientServiceImplTest.java +++ b/service/src/test/java/greencity/service/ubs/UBSClientServiceImplTest.java @@ -42,7 +42,14 @@ import greencity.dto.user.UserProfileDto; import greencity.dto.user.UserProfileUpdateDto; import greencity.entity.coords.Coordinates; -import greencity.entity.order.*; +import greencity.entity.order.Bag; +import greencity.entity.order.Certificate; +import greencity.entity.order.Event; +import greencity.entity.order.Order; +import greencity.entity.order.OrderPaymentStatusTranslation; +import greencity.entity.order.OrderStatusTranslation; +import greencity.entity.order.Payment; +import greencity.entity.order.TariffsInfo; import greencity.entity.telegram.TelegramBot; import greencity.entity.user.User; import greencity.entity.user.employee.Employee; @@ -62,7 +69,25 @@ import greencity.exceptions.http.AccessDeniedException; import greencity.exceptions.user.UBSuserNotFoundException; import greencity.exceptions.user.UserNotFoundException; -import greencity.repository.*; +import greencity.repository.AddressRepository; +import greencity.repository.BagRepository; +import greencity.repository.CertificateRepository; +import greencity.repository.CourierRepository; +import greencity.repository.EmployeeRepository; +import greencity.repository.EventRepository; +import greencity.repository.LocationRepository; +import greencity.repository.OrderAddressRepository; +import greencity.repository.OrderPaymentStatusTranslationRepository; +import greencity.repository.OrderRepository; +import greencity.repository.OrderStatusTranslationRepository; +import greencity.repository.OrdersForUserRepository; +import greencity.repository.PaymentRepository; +import greencity.repository.TariffLocationRepository; +import greencity.repository.TariffsInfoRepository; +import greencity.repository.TelegramBotRepository; +import greencity.repository.UBSuserRepository; +import greencity.repository.UserRepository; +import greencity.repository.ViberBotRepository; import greencity.service.google.GoogleApiService; import greencity.service.locations.LocationApiService; import greencity.util.Bot; @@ -98,7 +123,80 @@ import java.util.UUID; import java.util.stream.Collectors; -import static greencity.ModelUtils.*; +import static greencity.ModelUtils.TEST_BAG_FOR_USER_DTO; +import static greencity.ModelUtils.TEST_BAG_LIST; +import static greencity.ModelUtils.TEST_EMAIL; +import static greencity.ModelUtils.TEST_ORDER_ADDRESS_DTO_REQUEST; +import static greencity.ModelUtils.TEST_PAYMENT_LIST; +import static greencity.ModelUtils.addressDto; +import static greencity.ModelUtils.addressDtoList; +import static greencity.ModelUtils.addressList; +import static greencity.ModelUtils.bagDto; +import static greencity.ModelUtils.botList; +import static greencity.ModelUtils.createCertificateDto; +import static greencity.ModelUtils.getAddress; +import static greencity.ModelUtils.getAddressDtoResponse; +import static greencity.ModelUtils.getAddressRequestDto; +import static greencity.ModelUtils.getBag; +import static greencity.ModelUtils.getBag1list; +import static greencity.ModelUtils.getBag4list; +import static greencity.ModelUtils.getBagForOrder; +import static greencity.ModelUtils.getBagTranslationDto; +import static greencity.ModelUtils.getCancellationDto; +import static greencity.ModelUtils.getCertificate; +import static greencity.ModelUtils.getCourier; +import static greencity.ModelUtils.getCourierDto; +import static greencity.ModelUtils.getCourierDtoList; +import static greencity.ModelUtils.getEmployee; +import static greencity.ModelUtils.getGeocodingResult; +import static greencity.ModelUtils.getListOfEvents; +import static greencity.ModelUtils.getLocation; +import static greencity.ModelUtils.getMaximumAmountOfAddresses; +import static greencity.ModelUtils.getOrder; +import static greencity.ModelUtils.getOrderClientDto; +import static greencity.ModelUtils.getOrderCount; +import static greencity.ModelUtils.getOrderCountWithPaymentStatusPaid; +import static greencity.ModelUtils.getOrderDetails; +import static greencity.ModelUtils.getOrderDetailsWithoutSender; +import static greencity.ModelUtils.getOrderDoneByUser; +import static greencity.ModelUtils.getOrderFondyClientDto; +import static greencity.ModelUtils.getOrderPaymentDetailDto; +import static greencity.ModelUtils.getOrderPaymentStatusTranslation; +import static greencity.ModelUtils.getOrderResponseDto; +import static greencity.ModelUtils.getOrderStatusDto; +import static greencity.ModelUtils.getOrderStatusTranslation; +import static greencity.ModelUtils.getOrderTest; +import static greencity.ModelUtils.getOrderWithEvents; +import static greencity.ModelUtils.getOrderWithTariffAndLocation; +import static greencity.ModelUtils.getOrderWithoutPayment; +import static greencity.ModelUtils.getOrdersDto; +import static greencity.ModelUtils.getPayment; +import static greencity.ModelUtils.getPaymentResponseDto; +import static greencity.ModelUtils.getSuccessfulFondyResponse; +import static greencity.ModelUtils.getTariffInfo; +import static greencity.ModelUtils.getTariffInfoWithLimitOfBags; +import static greencity.ModelUtils.getTariffInfoWithLimitOfBagsAndMaxLessThanCountOfBigBag; +import static greencity.ModelUtils.getTariffLocation; +import static greencity.ModelUtils.getTariffsForLocationDto; +import static greencity.ModelUtils.getTariffsInfo; +import static greencity.ModelUtils.getTelegramBotNotifyTrue; +import static greencity.ModelUtils.getTestOrderAddressDtoRequest; +import static greencity.ModelUtils.getTestOrderAddressLocationDto; +import static greencity.ModelUtils.getTestUser; +import static greencity.ModelUtils.getUBSuser; +import static greencity.ModelUtils.getUBSuserWithoutSender; +import static greencity.ModelUtils.getUbsCustomersDtoUpdate; +import static greencity.ModelUtils.getUbsUsers; +import static greencity.ModelUtils.getUser; +import static greencity.ModelUtils.getUserForCreate; +import static greencity.ModelUtils.getUserInfoDto; +import static greencity.ModelUtils.getUserPointsAndAllBagsDto; +import static greencity.ModelUtils.getUserProfileCreateDto; +import static greencity.ModelUtils.getUserProfileUpdateDto; +import static greencity.ModelUtils.getUserProfileUpdateDtoWithBotsIsNotifyFalse; +import static greencity.ModelUtils.getUserWithBotNotifyTrue; +import static greencity.ModelUtils.getUserWithLastLocation; +import static greencity.ModelUtils.getViberBotNotifyTrue; import static greencity.constant.ErrorMessage.ACTUAL_ADDRESS_NOT_FOUND; import static greencity.constant.ErrorMessage.ADDRESS_ALREADY_EXISTS; import static greencity.constant.ErrorMessage.CANNOT_ACCESS_PERSONAL_INFO; @@ -218,10 +316,6 @@ class UBSClientServiceImplTest { @Mock private LocationApiService locationApiService; - @Mock - private OrderBagService orderBagService; - @Mock - private OrderBagRepository orderBagRepository; @Test void testGetAllDistricts() { @@ -675,8 +769,7 @@ void testSaveToDB() throws IllegalAccessException { f.set(ubsService, "1"); } } - tariffsInfo.setBags(Arrays.asList(bag)); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); + when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); @@ -687,6 +780,7 @@ void testSaveToDB() throws IllegalAccessException { when(orderRepository.findById(any())).thenReturn(Optional.of(order1)); when(encryptionUtil.formRequestSignature(any(), eq(null), eq("1"))).thenReturn("TestValue"); when(fondyClient.getCheckoutResponse(any())).thenReturn(getSuccessfulFondyResponse()); + FondyOrderResponse result = ubsService.saveFullOrderToDB(dto, "35467585763t4sfgchjfuyetf", null); Assertions.assertNotNull(result); @@ -709,12 +803,10 @@ void testSaveToDBWithTwoBags() throws IllegalAccessException { Bag bag1 = getBagForOrder(); bag1.setId(1); - bag1.setCapacity(100); bag1.setLimitIncluded(false); Bag bag3 = getBagForOrder(); - bag3.setCapacity(1000); TariffsInfo tariffsInfo = getTariffInfo(); - tariffsInfo.setBags(Arrays.asList(bag1, bag3)); + UBSuser ubSuser = getUBSuser(); OrderAddress orderAddress = ubSuser.getOrderAddress(); @@ -725,9 +817,7 @@ void testSaveToDBWithTwoBags() throws IllegalAccessException { Payment payment1 = getPayment(); payment1.setId(1L); order1.getPayment().add(payment1); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag(), ModelUtils.getOrderBag(), ModelUtils.getOrderBag())); - order1 - .setOrderBags(Arrays.asList(ModelUtils.getOrderBag(), ModelUtils.getOrderBag(), ModelUtils.getOrderBag())); + Field[] fields = UBSClientServiceImpl.class.getDeclaredFields(); for (Field f : fields) { if (f.getName().equals("merchantId")) { @@ -769,7 +859,6 @@ void testSaveToDBWithCertificates() throws IllegalAccessException { Bag bag = getBagForOrder(); TariffsInfo tariffsInfo = getTariffInfo(); - tariffsInfo.setBags(Arrays.asList(bag)); UBSuser ubSuser = getUBSuser(); @@ -793,7 +882,7 @@ void testSaveToDBWithCertificates() throws IllegalAccessException { when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(certificateRepository.findById(anyString())).thenReturn(Optional.of(getCertificate())); when(ubsUserRepository.findById(1L)).thenReturn(Optional.of(ubSuser)); when(modelMapper.map(dto, Order.class)).thenReturn(order); @@ -823,7 +912,6 @@ void testSaveToDBWithDontSendLinkToFondy() throws IllegalAccessException { Bag bag = getBagForOrder(); TariffsInfo tariffsInfo = getTariffInfo(); - tariffsInfo.setBags(Arrays.asList(bag)); Certificate certificate = getCertificate(); certificate.setPoints(1000_00); @@ -850,7 +938,7 @@ void testSaveToDBWithDontSendLinkToFondy() throws IllegalAccessException { when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(certificateRepository.findById(anyString())).thenReturn(Optional.of(certificate)); when(ubsUserRepository.findById(1L)).thenReturn(Optional.of(ubSuser)); when(modelMapper.map(dto, Order.class)).thenReturn(order); @@ -877,7 +965,6 @@ void testSaveToDBWhenSumToPayLessThanPoints() throws IllegalAccessException { Bag bag = getBagForOrder(); TariffsInfo tariffsInfo = getTariffInfo(); - tariffsInfo.setBags(Arrays.asList(bag)); UBSuser ubSuser = getUBSuser(); @@ -901,7 +988,7 @@ void testSaveToDBWhenSumToPayLessThanPoints() throws IllegalAccessException { when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(ubsUserRepository.findById(1L)).thenReturn(Optional.of(ubSuser)); when(modelMapper.map(dto, Order.class)).thenReturn(order); when(modelMapper.map(dto.getPersonalData(), UBSuser.class)).thenReturn(ubSuser); @@ -1125,14 +1212,11 @@ void testSaveToDBWithoutOrderUnpaid() throws IllegalAccessException { Payment payment1 = getPayment(); payment1.setId(1L); order1.getPayment().add(payment1); - TariffsInfo tariffsInfo = getTariffsInfo(); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setBags(Arrays.asList(bag)); - order.setTariffsInfo(tariffsInfo); - when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); + when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) + .thenReturn(Optional.of(getTariffInfo())); + when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(ubsUserRepository.findById(1L)).thenReturn(Optional.of(ubSuser)); when(modelMapper.map(dto.getPersonalData(), UBSuser.class)).thenReturn(ubSuser); when(orderRepository.findById(any())).thenReturn(Optional.of(order1)); @@ -1143,7 +1227,7 @@ void testSaveToDBWithoutOrderUnpaid() throws IllegalAccessException { verify(userRepository, times(1)).findByUuid("35467585763t4sfgchjfuyetf"); verify(tariffsInfoRepository, times(1)) .findTariffsInfoByBagIdAndLocationId(anyList(), anyLong()); - verify(bagRepository, times(1)).findById(any()); + verify(bagRepository, times(2)).findById(any()); verify(ubsUserRepository, times(1)).findById(anyLong()); verify(modelMapper, times(1)).map(dto.getPersonalData(), UBSuser.class); verify(orderRepository, times(1)).findById(anyLong()); @@ -1157,19 +1241,14 @@ void saveToDBFailPaidOrder() { dto.getBags().get(0).setAmount(5); Order order = getOrder(); order.setOrderPaymentStatus(OrderPaymentStatus.PAID); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); Bag bag = getBagForOrder(); TariffsInfo tariffsInfo = getTariffInfo(); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setBags(Arrays.asList(bag)); - order.setTariffsInfo(tariffsInfo); - when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); + when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(orderRepository.findById(any())).thenReturn(Optional.of(order)); assertThrows(BadRequestException.class, @@ -2413,10 +2492,53 @@ void deleteOrderFail() { } @Test - void processOrderFondyClient2() throws Exception { + void processOrderFondyClient() throws Exception { Order order = getOrderCount(); + HashMap value = new HashMap<>(); + value.put(1, 22); + order.setAmountOfBagsOrdered(value); + order.setPointsToUse(100); + order.setSumTotalAmountWithoutDiscounts(1000_00L); + order.setCertificates(Set.of(getCertificate())); + order.setPayment(TEST_PAYMENT_LIST); + User user = getUser(); + user.setCurrentPoints(100); + user.setChangeOfPointsList(new ArrayList<>()); + order.setUser(user); + + OrderFondyClientDto dto = getOrderFondyClientDto(); + Field[] fields = UBSClientServiceImpl.class.getDeclaredFields(); + for (Field f : fields) { + if (f.getName().equals("merchantId")) { + f.setAccessible(true); + f.set(ubsService, "1"); + } + } + Certificate certificate = getCertificate(); + CertificateDto certificateDto = createCertificateDto(); + + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); + when(userRepository.findUserByUuid("uuid")).thenReturn(Optional.of(user)); + + when(encryptionUtil.formRequestSignature(any(), eq(null), eq("1"))).thenReturn("TestValue"); + when(fondyClient.getCheckoutResponse(any())).thenReturn(getSuccessfulFondyResponse()); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(TEST_BAG_LIST); + when(modelMapper.map(certificate, CertificateDto.class)).thenReturn(certificateDto); + when(modelMapper.map(any(Bag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); + + ubsService.processOrderFondyClient(dto, "uuid"); + + verify(encryptionUtil).formRequestSignature(any(), eq(null), eq("1")); + verify(fondyClient).getCheckoutResponse(any()); + + } + @Test + void processOrderFondyClient2() throws Exception { + Order order = getOrderCount(); + Certificate certificate = getCertificate(); + certificate.setPoints(1500); HashMap value = new HashMap<>(); value.put(1, 22); order.setAmountOfBagsOrdered(value); @@ -2432,9 +2554,6 @@ void processOrderFondyClient2() throws Exception { OrderFondyClientDto dto = getOrderFondyClientDto(); dto.setCertificates(Set.of("1111-1234")); - order.setCertificates(Set.of(getCertificate())); - order.setPayment(TEST_PAYMENT_LIST); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); Field[] fields = UBSClientServiceImpl.class.getDeclaredFields(); for (Field f : fields) { if (f.getName().equals("merchantId")) { @@ -2443,26 +2562,26 @@ void processOrderFondyClient2() throws Exception { } } - order.setPointsToUse(-10000); CertificateDto certificateDto = createCertificateDto(); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); + certificateDto.setPoints(1500); when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(userRepository.findUserByUuid("uuid")).thenReturn(Optional.of(user)); - when(fondyClient.getCheckoutResponse(any())).thenReturn(getSuccessfulFondyResponse()); - when(modelMapper.map(certificate, CertificateDto.class)).thenReturn(certificateDto); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); when(certificateRepository.findAllByCodeAndCertificateStatus(new ArrayList<>(dto.getCertificates()), CertificateStatus.ACTIVE)).thenReturn(Set.of(certificate)); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(TEST_BAG_LIST); + when(modelMapper.map(certificate, CertificateDto.class)).thenReturn(certificateDto); + when(modelMapper.map(any(Bag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); ubsService.processOrderFondyClient(dto, "uuid"); + verify(orderRepository).findById(1L); verify(userRepository).findUserByUuid("uuid"); verify(certificateRepository).findAllByCodeAndCertificateStatus(new ArrayList<>(dto.getCertificates()), CertificateStatus.ACTIVE); - verify(modelMapper).map(any(OrderBag.class), eq(BagForUserDto.class)); + verify(bagRepository).findBagsByOrderId(order.getId()); + verify(modelMapper).map(certificate, CertificateDto.class); + verify(modelMapper).map(any(Bag.class), eq(BagForUserDto.class)); } @Test @@ -2481,6 +2600,7 @@ void processOrderFondyClientCertificeteNotFoundExeption() throws Exception { user.setCurrentPoints(100); user.setChangeOfPointsList(new ArrayList<>()); order.setUser(user); + OrderFondyClientDto dto = getOrderFondyClientDto(); dto.setCertificates(Set.of("1111-1234")); @@ -2494,22 +2614,24 @@ void processOrderFondyClientCertificeteNotFoundExeption() throws Exception { CertificateDto certificateDto = createCertificateDto(); certificateDto.setPoints(1500); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(userRepository.findUserByUuid("uuid")).thenReturn(Optional.of(user)); when(certificateRepository.findAllByCodeAndCertificateStatus(new ArrayList<>(dto.getCertificates()), CertificateStatus.ACTIVE)).thenReturn(Collections.emptySet()); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(TEST_BAG_LIST); when(modelMapper.map(certificate, CertificateDto.class)).thenReturn(certificateDto); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); + when(modelMapper.map(any(Bag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); + assertThrows(NotFoundException.class, () -> ubsService.processOrderFondyClient(dto, "uuid")); + verify(orderRepository).findById(1L); verify(userRepository).findUserByUuid("uuid"); verify(certificateRepository).findAllByCodeAndCertificateStatus(new ArrayList<>(dto.getCertificates()), CertificateStatus.ACTIVE); + verify(bagRepository).findBagsByOrderId(order.getId()); verify(modelMapper).map(certificate, CertificateDto.class); - verify(modelMapper).map(any(OrderBag.class), eq(BagForUserDto.class)); + verify(modelMapper).map(any(Bag.class), eq(BagForUserDto.class)); } @Test @@ -2542,16 +2664,14 @@ void processOrderFondyClientCertificeteNotFoundExeption2() throws Exception { CertificateDto certificateDto = createCertificateDto(); certificateDto.setPoints(1500); - order.setPointsToUse(-1000); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); + when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(userRepository.findUserByUuid("uuid")).thenReturn(Optional.of(user)); when(certificateRepository.findAllByCodeAndCertificateStatus(new ArrayList<>(dto.getCertificates()), CertificateStatus.ACTIVE)).thenReturn(Set.of(certificate)); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(TEST_BAG_LIST); when(modelMapper.map(certificate, CertificateDto.class)).thenReturn(certificateDto); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); + when(modelMapper.map(any(Bag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); assertThrows(NotFoundException.class, () -> ubsService.processOrderFondyClient(dto, "uuid")); @@ -2559,8 +2679,9 @@ void processOrderFondyClientCertificeteNotFoundExeption2() throws Exception { verify(userRepository).findUserByUuid("uuid"); verify(certificateRepository).findAllByCodeAndCertificateStatus(new ArrayList<>(dto.getCertificates()), CertificateStatus.ACTIVE); + verify(bagRepository).findBagsByOrderId(order.getId()); verify(modelMapper).map(certificate, CertificateDto.class); - verify(modelMapper).map(any(OrderBag.class), eq(BagForUserDto.class)); + verify(modelMapper).map(any(Bag.class), eq(BagForUserDto.class)); } @Test @@ -2578,8 +2699,7 @@ void processOrderFondyClientIfSumToPayLessThanPoints() throws Exception { user.setCurrentPoints(100); user.setChangeOfPointsList(new ArrayList<>()); order.setUser(user); - order.setPointsToUse(-10000); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); + OrderFondyClientDto dto = getOrderFondyClientDto(); Field[] fields = UBSClientServiceImpl.class.getDeclaredFields(); for (Field f : fields) { @@ -2594,11 +2714,12 @@ void processOrderFondyClientIfSumToPayLessThanPoints() throws Exception { when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(userRepository.findUserByUuid("uuid")).thenReturn(Optional.of(user)); + + when(encryptionUtil.formRequestSignature(any(), eq(null), eq("1"))).thenReturn("TestValue"); when(fondyClient.getCheckoutResponse(any())).thenReturn(getSuccessfulFondyResponse()); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(TEST_BAG_LIST); when(modelMapper.map(certificate, CertificateDto.class)).thenReturn(certificateDto); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); + when(modelMapper.map(any(Bag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); ubsService.processOrderFondyClient(dto, "uuid"); @@ -2633,6 +2754,7 @@ void saveFullOrderToDBForIF() throws IllegalAccessException { bag.setFullPrice(400_00L); TariffsInfo tariffsInfo = getTariffsInfo(); bag.setTariffsInfo(tariffsInfo); + UBSuser ubSuser = getUBSuser(); OrderAddress address = ubSuser.getOrderAddress(); @@ -2643,8 +2765,6 @@ void saveFullOrderToDBForIF() throws IllegalAccessException { Payment payment1 = getPayment(); payment1.setId(1L); order1.getPayment().add(payment1); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); - order1.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); Field[] fields = UBSClientServiceImpl.class.getDeclaredFields(); for (Field f : fields) { @@ -2654,13 +2774,10 @@ void saveFullOrderToDBForIF() throws IllegalAccessException { } } - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setBags(Arrays.asList(bag)); - order.setTariffsInfo(tariffsInfo); - when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) + .thenReturn(Optional.of(getTariffInfo())); + when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(ubsUserRepository.findById(1L)).thenReturn(Optional.of(ubSuser)); when(modelMapper.map(dto, Order.class)).thenReturn(order); when(certificateRepository.findById("1111-1234")).thenReturn(Optional.of(getCertificate())); @@ -2688,7 +2805,7 @@ void saveFullOrderToDBWhenSumToPayeqNull() throws IllegalAccessException { user.setOrders(new ArrayList<>()); user.getOrders().add(order); user.setChangeOfPointsList(new ArrayList<>()); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag(), ModelUtils.getOrderBag())); + Bag bag = getBagForOrder(); UBSuser ubSuser = getUBSuser().setId(null); @@ -2711,15 +2828,11 @@ void saveFullOrderToDBWhenSumToPayeqNull() throws IllegalAccessException { f.set(ubsService, "1"); } } - TariffsInfo tariffsInfo = getTariffsInfo(); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setBags(Arrays.asList(bag)); - order.setTariffsInfo(tariffsInfo); - when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); - when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); + when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) + .thenReturn(Optional.of(getTariffInfo())); + when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(ubsUserRepository.findById(1L)).thenReturn(Optional.of(ubSuser)); when(addressRepository.findById(any())).thenReturn(Optional.of(address)); when(locationRepository.findById(anyLong())).thenReturn(Optional.of(location)); @@ -2977,14 +3090,13 @@ void getOrderForUserTest() { order.setAmountOfBagsOrdered(Map.of(1, 10)); bags.add(bag); order.setUser(user); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); order.setOrderPaymentStatus(OrderPaymentStatus.PAID); orderList.add(order); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); + when(ordersForUserRepository.getAllByUserUuidAndId(user.getUuid(), order.getId())) .thenReturn(order); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(bags); + when(modelMapper.map(bag, BagForUserDto.class)).thenReturn(bagForUserDto); when(orderStatusTranslationRepository .getOrderStatusTranslationById((long) order.getOrderStatus().getNumValue())) .thenReturn(Optional.of(orderStatusTranslation)); @@ -2994,7 +3106,8 @@ void getOrderForUserTest() { ubsService.getOrderForUser(user.getUuid(), 1L); - verify(modelMapper).map(any(OrderBag.class), eq(BagForUserDto.class)); + verify(modelMapper, times(bags.size())).map(bag, BagForUserDto.class); + verify(bagRepository).findBagsByOrderId(order.getId()); verify(orderStatusTranslationRepository, times(orderList.size())) .getOrderStatusTranslationById((long) order.getOrderStatus().getNumValue()); verify(orderPaymentStatusTranslationRepository, times(orderList.size())) @@ -3037,30 +3150,30 @@ void getOrdersForUserTest() { orderList.add(order); Pageable pageable = PageRequest.of(0, 10, Sort.by("order_date").descending()); Page page = new PageImpl<>(orderList, pageable, 1); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); when(ordersForUserRepository.getAllByUserUuid(pageable, user.getUuid())) .thenReturn(page); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(bags); + when(modelMapper.map(bag, BagForUserDto.class)).thenReturn(bagForUserDto); when(orderStatusTranslationRepository .getOrderStatusTranslationById((long) order.getOrderStatus().getNumValue())) .thenReturn(Optional.of(orderStatusTranslation)); when(orderPaymentStatusTranslationRepository.getById( (long) order.getOrderPaymentStatus().getStatusValue())) .thenReturn(orderPaymentStatusTranslation); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); PageableDto dto = ubsService.getOrdersForUser(user.getUuid(), pageable, null); assertEquals(dto.getTotalElements(), orderList.size()); assertEquals(dto.getPage().get(0).getId(), order.getId()); - verify(modelMapper).map(any(OrderBag.class), eq(BagForUserDto.class)); + verify(modelMapper, times(bags.size())).map(bag, BagForUserDto.class); + verify(bagRepository).findBagsByOrderId(order.getId()); verify(orderStatusTranslationRepository, times(orderList.size())) .getOrderStatusTranslationById((long) order.getOrderStatus().getNumValue()); verify(orderPaymentStatusTranslationRepository, times(orderList.size())) - .getById((long) order.getOrderPaymentStatus().getStatusValue()); + .getById( + (long) order.getOrderPaymentStatus().getStatusValue()); verify(ordersForUserRepository).getAllByUserUuid(pageable, user.getUuid()); } @@ -3070,7 +3183,6 @@ void testOrdersForUserWithExportedQuantity() { OrderPaymentStatusTranslation orderPaymentStatusTranslation = getOrderPaymentStatusTranslation(); OrdersDataForUserDto ordersDataForUserDto = getOrderStatusDto(); Order order = getOrderTest(); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); User user = getTestUser(); Bag bag = bagDto(); @@ -3090,21 +3202,22 @@ void testOrdersForUserWithExportedQuantity() { when(ordersForUserRepository.getAllByUserUuid(pageable, user.getUuid())) .thenReturn(page); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(bags); + when(modelMapper.map(bag, BagForUserDto.class)).thenReturn(bagForUserDto); when(orderStatusTranslationRepository .getOrderStatusTranslationById((long) order.getOrderStatus().getNumValue())) .thenReturn(Optional.of(orderStatusTranslation)); when(orderPaymentStatusTranslationRepository.getById( (long) order.getOrderPaymentStatus().getStatusValue())) .thenReturn(orderPaymentStatusTranslation); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); + PageableDto dto = ubsService.getOrdersForUser(user.getUuid(), pageable, null); assertEquals(dto.getTotalElements(), orderList.size()); assertEquals(dto.getPage().get(0).getId(), order.getId()); - verify(modelMapper).map(any(OrderBag.class), eq(BagForUserDto.class)); + verify(modelMapper, times(bags.size())).map(bag, BagForUserDto.class); + verify(bagRepository).findBagsByOrderId(order.getId()); verify(orderStatusTranslationRepository, times(orderList.size())) .getOrderStatusTranslationById((long) order.getOrderStatus().getNumValue()); verify(orderPaymentStatusTranslationRepository, times(orderList.size())) @@ -3131,7 +3244,6 @@ void testOrdersForUserWithConfirmedQuantity() { order.setConfirmedQuantity(Map.of(1, 10)); bags.add(bag); order.setUser(user); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); order.setOrderPaymentStatus(OrderPaymentStatus.PAID); orderList.add(order); Pageable pageable = PageRequest.of(0, 10, Sort.by("order_date").descending()); @@ -3139,21 +3251,22 @@ void testOrdersForUserWithConfirmedQuantity() { when(ordersForUserRepository.getAllByUserUuid(pageable, user.getUuid())) .thenReturn(page); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(bags); + when(modelMapper.map(bag, BagForUserDto.class)).thenReturn(bagForUserDto); when(orderStatusTranslationRepository .getOrderStatusTranslationById((long) order.getOrderStatus().getNumValue())) .thenReturn(Optional.of(orderStatusTranslation)); when(orderPaymentStatusTranslationRepository.getById( (long) order.getOrderPaymentStatus().getStatusValue())) .thenReturn(orderPaymentStatusTranslation); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); + PageableDto dto = ubsService.getOrdersForUser(user.getUuid(), pageable, null); assertEquals(dto.getTotalElements(), orderList.size()); assertEquals(dto.getPage().get(0).getId(), order.getId()); - verify(modelMapper).map(any(OrderBag.class), eq(BagForUserDto.class)); + verify(modelMapper, times(bags.size())).map(bag, BagForUserDto.class); + verify(bagRepository).findBagsByOrderId(order.getId()); verify(orderStatusTranslationRepository, times(orderList.size())) .getOrderStatusTranslationById((long) order.getOrderStatus().getNumValue()); verify(orderPaymentStatusTranslationRepository, times(orderList.size())) @@ -3173,14 +3286,10 @@ void senderInfoDtoBuilderTest() { order.setAmountOfBagsOrdered(Map.of(1, 10)); order.setUser(user); order.setOrderPaymentStatus(OrderPaymentStatus.PAID); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); orderList.add(order); Pageable pageable = PageRequest.of(0, 10, Sort.by("order_date").descending()); Page page = new PageImpl<>(orderList, pageable, 1); - TariffsInfo tariffsInfo = getTariffsInfo(); - tariffsInfo.setBags(Arrays.asList(getBag())); - order.setTariffsInfo(tariffsInfo); when(ordersForUserRepository.getAllByUserUuid(pageable, user.getUuid())) .thenReturn(page); when(orderStatusTranslationRepository @@ -3189,9 +3298,7 @@ void senderInfoDtoBuilderTest() { when(orderPaymentStatusTranslationRepository.getById( (long) order.getOrderPaymentStatus().getStatusValue())) .thenReturn(orderPaymentStatusTranslation); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); + PageableDto dto = ubsService.getOrdersForUser(user.getUuid(), pageable, null); assertEquals(dto.getTotalElements(), orderList.size()); assertEquals(dto.getPage().get(0).getId(), order.getId()); @@ -3319,15 +3426,10 @@ void checkIfAddressHasBeenDeletedTest() throws IllegalAccessException { f.set(ubsService, "1"); } } - TariffsInfo tariffsInfo = getTariffsInfo(); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setBags(Arrays.asList(bag)); - order.setTariffsInfo(tariffsInfo); -// when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); - when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); + when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) + .thenReturn(Optional.of(getTariffInfo())); when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(ubsUserRepository.findById(1L)).thenReturn(Optional.of(ubSuser)); when(modelMapper.map(dto, Order.class)).thenReturn(order); @@ -3368,15 +3470,11 @@ void checkAddressUserTest() throws IllegalAccessException { f.set(ubsService, "1"); } } - TariffsInfo tariffsInfo = getTariffsInfo(); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setBags(Arrays.asList(bag)); - order.setTariffsInfo(tariffsInfo); + when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); - when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + .thenReturn(Optional.of(getTariffInfo())); + when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); when(ubsUserRepository.findById(1L)).thenReturn(Optional.of(ubSuser)); when(modelMapper.map(dto, Order.class)).thenReturn(order); when(modelMapper.map(dto.getPersonalData(), UBSuser.class)).thenReturn(ubSuser); @@ -3408,16 +3506,10 @@ void checkIfUserHaveEnoughPointsTest() throws IllegalAccessException { f.set(ubsService, "1"); } } - TariffsInfo tariffsInfo = getTariffsInfo(); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setBags(Arrays.asList(bag)); - order.setTariffsInfo(tariffsInfo); when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); when(tariffsInfoRepository.findTariffsInfoByBagIdAndLocationId(anyList(), anyLong())) - .thenReturn(Optional.of(tariffsInfo)); - when(userRepository.findByUuid("35467585763t4sfgchjfuyetf")).thenReturn(user); - when(bagRepository.findById(any())).thenReturn(Optional.of(bag)); + .thenReturn(Optional.of(getTariffInfo())); when(bagRepository.findById(3)).thenReturn(Optional.of(bag)); assertThrows(BadRequestException.class, @@ -3485,15 +3577,11 @@ void testOrdersForUserWithQuantity() { bag.setFullPrice(1200_00L); bags.add(bag); order.setUser(user); - order.setOrderBags(Arrays.asList(ModelUtils.getOrderBag())); order.setOrderPaymentStatus(OrderPaymentStatus.PAID); orderList.add(order); Pageable pageable = PageRequest.of(0, 10, Sort.by("order_date").descending()); Page page = new PageImpl<>(orderList, pageable, 1); - TariffsInfo tariffsInfo = getTariffsInfo(); - bag.setTariffsInfo(tariffsInfo); - tariffsInfo.setBags(Arrays.asList(bag)); - order.setTariffsInfo(tariffsInfo); + when(ordersForUserRepository.getAllByUserUuid(pageable, user.getUuid())) .thenReturn(page); when(orderStatusTranslationRepository @@ -3502,9 +3590,6 @@ void testOrdersForUserWithQuantity() { when(orderPaymentStatusTranslationRepository.getById( (long) order.getOrderPaymentStatus().getStatusValue())) .thenReturn(orderPaymentStatusTranslation); - when(modelMapper.map(any(OrderBag.class), eq(BagForUserDto.class))).thenReturn(TEST_BAG_FOR_USER_DTO); - when(orderBagService.getActualBagsAmountForOrder(Arrays.asList(ModelUtils.getOrderBag()))) - .thenReturn(ModelUtils.getAmount()); PageableDto dto = ubsService.getOrdersForUser(user.getUuid(), pageable, null); diff --git a/service/src/test/java/greencity/service/ubs/UBSManagementServiceImplTest.java b/service/src/test/java/greencity/service/ubs/UBSManagementServiceImplTest.java index 5f16cde7b..208fefea9 100644 --- a/service/src/test/java/greencity/service/ubs/UBSManagementServiceImplTest.java +++ b/service/src/test/java/greencity/service/ubs/UBSManagementServiceImplTest.java @@ -52,7 +52,22 @@ import greencity.enums.SortingOrder; import greencity.exceptions.BadRequestException; import greencity.exceptions.NotFoundException; -import greencity.repository.*; +import greencity.repository.BagRepository; +import greencity.repository.CertificateRepository; +import greencity.repository.EmployeeOrderPositionRepository; +import greencity.repository.EmployeeRepository; +import greencity.repository.OrderAddressRepository; +import greencity.repository.OrderDetailRepository; +import greencity.repository.OrderPaymentStatusTranslationRepository; +import greencity.repository.OrderRepository; +import greencity.repository.OrderStatusTranslationRepository; +import greencity.repository.PaymentRepository; +import greencity.repository.PositionRepository; +import greencity.repository.ReceivingStationRepository; +import greencity.repository.RefundRepository; +import greencity.repository.ServiceRepository; +import greencity.repository.TariffsInfoRepository; +import greencity.repository.UserRepository; import greencity.service.locations.LocationApiService; import greencity.service.notification.NotificationServiceImpl; import org.junit.jupiter.api.Assertions; @@ -157,7 +172,6 @@ import static java.util.Collections.singletonList; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyInt; import static org.mockito.Mockito.anyLong; @@ -253,10 +267,6 @@ class UBSManagementServiceImplTest { @Mock RefundRepository refundRepository; - @Mock - private OrderBagService orderBagService; - @Mock - private OrderBagRepository orderBagRepository; @Test void getAllCertificates() { @@ -408,7 +418,7 @@ void checkUpdateManualPayment() { when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); when(paymentRepository.findById(1L)).thenReturn(Optional.of(getManualPayment())); when(paymentRepository.save(any())).thenReturn(getManualPayment()); -// when(orderBagService.findBagsByOrderId(order.getId())).thenReturn(getBaglist()); + when(bagRepository.findBagsByOrderId(order.getId())).thenReturn(getBaglist()); doNothing().when(eventService).save(OrderHistory.UPDATE_PAYMENT_MANUALLY + 1, employee.getFirstName() + " " + employee.getLastName(), getOrder()); @@ -417,7 +427,7 @@ void checkUpdateManualPayment() { verify(paymentRepository, times(1)).save(any()); verify(eventService, times(2)).save(any(), any(), any()); verify(fileService, times(0)).delete(null); -// verify(orderBagService).findBagsByOrderId(order.getId()); + verify(bagRepository).findBagsByOrderId(order.getId()); } @Test @@ -473,14 +483,12 @@ void saveNewManualPaymentWithHalfPaidAmount() { when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag1list()); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); when(paymentRepository.save(any())) .thenReturn(payment); doNothing().when(eventService).save(any(), any(), any()); - when(orderBagService.findAllBagsInOrderBagsList(anyList())).thenReturn(ModelUtils.TEST_BAG_LIST2); - ubsManagementService.saveNewManualPayment(1L, paymentDetails, null, "test@gmail.com"); - verify(employeeRepository, times(2)).findByEmail(anyString()); verify(eventService, times(1)).save(OrderHistory.ADD_PAYMENT_MANUALLY + 1, "Петро Петренко", order); @@ -510,6 +518,7 @@ void saveNewManualPaymentWithPaidAmount() { when(employeeRepository.findByEmail("test@gmail.com")).thenReturn(Optional.of(employee)); when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag1list()); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); when(paymentRepository.save(any())) .thenReturn(payment); @@ -1014,7 +1023,7 @@ void testGetOrderDetails() { when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(TEST_ORDER)); when(modelMapper.map(TEST_ORDER, new TypeToken>() { }.getType())).thenReturn(TEST_BAG_MAPPING_DTO_LIST); - when(orderBagService.findBagsByOrderId(1L)).thenReturn(TEST_BAG_LIST); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(TEST_BAG_LIST); when(modelMapper.map(TEST_BAG, BagInfoDto.class)).thenReturn(TEST_BAG_INFO_DTO); when(bagRepository.findAllByOrder(1L)).thenReturn(TEST_BAG_LIST); when(modelMapper.map(any(), eq(new TypeToken>() { @@ -1027,7 +1036,7 @@ void testGetOrderDetails() { verify(orderRepository).getOrderDetails(1L); verify(modelMapper).map(TEST_ORDER, new TypeToken>() { }.getType()); - verify(orderBagService).findBagsByOrderId(1L); + verify(bagRepository).findBagsByOrderId(1L); verify(bagRepository, times(1)).findAllByOrder(anyLong()); verify(modelMapper).map(TEST_BAG, BagInfoDto.class); verify(modelMapper).map(any(), eq(new TypeToken>() { @@ -1141,6 +1150,7 @@ void testSetOrderDetail() { when(orderRepository.getOrderDetails(anyLong())) .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, @@ -1159,9 +1169,9 @@ void testSetOrderDetailNeedToChangeStatusToHALF_PAID() { doNothing().when(orderDetailRepository).updateConfirm(anyInt(), anyLong(), anyLong()); when(orderRepository.getOrderDetails(anyLong())) .thenReturn(Optional.ofNullable(getOrdersStatusFormedDto())); - when(orderRepository.findSumOfCertificatesByOrderId(1L)).thenReturn(10L); - when(orderBagService.findAllBagsInOrderBagsList(anyList())).thenReturn(ModelUtils.TEST_BAG_LIST2); - + 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, @@ -1183,9 +1193,10 @@ void testSetOrderDetailNeedToChangeStatusToUNPAID() { when(orderRepository.getOrderDetails(anyLong())) .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()); - when(orderBagService.findAllBagsInOrderBagsList(anyList())).thenReturn(ModelUtils.TEST_BAG_LIST2); + ubsManagementService.setOrderDetail(1L, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); @@ -1242,10 +1253,12 @@ void testSetOrderDetailIfHalfPaid() { 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)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(bagList); when(paymentRepository.selectSumPaid(1L)).thenReturn(0L); when(orderRepository.findSumOfCertificatesByOrderId(1L)).thenReturn(0L); - when(orderBagService.findAllBagsInOrderBagsList(anyList())).thenReturn(ModelUtils.TEST_BAG_LIST2); ubsManagementService.setOrderDetail(1L, UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), @@ -1263,11 +1276,14 @@ void testSetOrderDetailIfPaidAndPriceLessThanDiscount() { when(orderRepository.findSumOfCertificatesByOrderId(order.getId())).thenReturn(600L); when(orderRepository.getOrderDetails(anyLong())) .thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusFormedDto2())); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); + when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); ubsManagementService.setOrderDetail(order.getId(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsConfirmed(), UPDATE_ORDER_PAGE_ADMIN_DTO.getOrderDetailDto().getAmountOfBagsExported(), "abc"); - verify(certificateRepository).save(ModelUtils.getCertificate2().setPoints(0)); + + verify(certificateRepository).save(ModelUtils.getCertificate2().setPoints(20)); verify(userRepository).updateUserCurrentPoints(1L, 100); verify(orderRepository).updateOrderPointsToUse(1L, 0); } @@ -1281,7 +1297,7 @@ void testSetOrderDetailIfPaidAndPriceLessThanPaidSum() { when(orderRepository.findSumOfCertificatesByOrderId(order.getId())).thenReturn(600L); when(orderRepository.getOrderDetails(anyLong())) .thenReturn(Optional.ofNullable(ModelUtils.getOrdersStatusFormedDto2())); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBaglist()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(bagRepository.findById(1)).thenReturn(Optional.of(ModelUtils.getTariffBag())); ubsManagementService.setOrderDetail(order.getId(), @@ -1914,6 +1930,7 @@ void getOrderSumDetailsForCanceledPaidOrderWithBags() { Order order = ModelUtils.getCanceledPaidOrder(); order.setOrderDate(LocalDateTime.now()); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag3list()); doNothing().when(notificationService).notifyPaidOrder(order); doNothing().when(notificationService).notifyHalfPaidPackage(order); @@ -1942,7 +1959,7 @@ void getOrderSumDetailsForFormedHalfPaidOrder() { Order order = ModelUtils.getFormedHalfPaidOrder(); order.setOrderDate(LocalDateTime.now()); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBaglist()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); doNothing().when(notificationService).notifyPaidOrder(order); doNothing().when(notificationService).notifyHalfPaidPackage(order); @@ -1957,7 +1974,7 @@ void getOrderSumDetailsForFormedHalfPaidOrderWithDiffBags() { Order order = ModelUtils.getFormedHalfPaidOrder(); order.setOrderDate(LocalDateTime.now()); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBag3list()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag3list()); doNothing().when(notificationService).notifyPaidOrder(order); doNothing().when(notificationService).notifyHalfPaidPackage(order); @@ -1972,6 +1989,7 @@ void getOrderSumDetailsForCanceledHalfPaidOrder() { Order order = ModelUtils.getCanceledHalfPaidOrder(); order.setOrderDate(LocalDateTime.now()); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); doNothing().when(notificationService).notifyPaidOrder(order); doNothing().when(notificationService).notifyHalfPaidPackage(order); @@ -1997,6 +2015,7 @@ void getOrderStatusDataTest() { when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(getBaglist()); when(certificateRepository.findCertificate(1L)).thenReturn(getCertificateList()); when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrderForGetOrderStatusData2Test())); @@ -2014,6 +2033,8 @@ void getOrderStatusDataTest() { ubsManagementService.getOrderStatusData(1L, "test@gmail.com"); + verify(orderRepository).getOrderDetails(1L); + verify(bagRepository).findBagsByOrderId(1L); verify(bagRepository).findBagsByTariffsInfoId(1L); verify(certificateRepository).findCertificate(1L); verify(orderRepository, times(5)).findById(1L); @@ -2072,7 +2093,7 @@ void getOrderStatusDataTestEmptyPriceDetails() { when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrderForGetOrderStatusData2Test())); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(getBaglist()); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBag2list()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag2list()); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.empty()); when(modelMapper.map(getBaglist().get(0), BagInfoDto.class)).thenReturn(bagInfoDto); when(orderStatusTranslationRepository.getOrderStatusTranslationById(6L)) @@ -2088,7 +2109,7 @@ void getOrderStatusDataTestEmptyPriceDetails() { ubsManagementService.getOrderStatusData(1L, "test@gmail.com"); verify(orderRepository).getOrderDetails(1L); -// verify(orderBagService).findBagsByOrderId(1L); + verify(bagRepository).findBagsByOrderId(1L); verify(bagRepository).findBagsByTariffsInfoId(1L); verify(certificateRepository).findCertificate(1L); verify(orderRepository, times(5)).findById(1L); @@ -2113,7 +2134,7 @@ void getOrderStatusDataWithEmptyCertificateTest() { when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBaglist()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(getBaglist()); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.of(getService())); when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrderForGetOrderStatusData2Test())); @@ -2129,7 +2150,7 @@ void getOrderStatusDataWithEmptyCertificateTest() { ubsManagementService.getOrderStatusData(1L, "test@gmail.com"); verify(orderRepository).getOrderDetails(1L); -// verify(orderBagService).findBagsByOrderId(1L); + verify(bagRepository).findBagsByOrderId(1L); verify(bagRepository).findBagsByTariffsInfoId(1L); verify(orderRepository, times(5)).findById(1L); verify(serviceRepository).findServiceByTariffsInfoId(1L); @@ -2152,7 +2173,7 @@ void getOrderStatusDataWhenOrderTranslationIsNull() { when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBaglist()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(getBaglist()); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.of(getService())); when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrderForGetOrderStatusData2Test())); @@ -2166,7 +2187,7 @@ void getOrderStatusDataWhenOrderTranslationIsNull() { ubsManagementService.getOrderStatusData(1L, "test@gmail.com"); verify(orderRepository).getOrderDetails(1L); -// verify(orderBagService).findBagsByOrderId(1L); + verify(bagRepository).findBagsByOrderId(1L); verify(bagRepository).findBagsByTariffsInfoId(1L); verify(orderRepository, times(5)).findById(1L); verify(serviceRepository).findServiceByTariffsInfoId(1L); @@ -2189,7 +2210,7 @@ void getOrderStatusDataExceptionTest() { when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBaglist()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(certificateRepository.findCertificate(1L)).thenReturn(getCertificateList()); when(serviceRepository.findServiceByTariffsInfoId(1L)).thenReturn(Optional.of(getService())); when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrderForGetOrderStatusData2Test())); @@ -2466,7 +2487,7 @@ void getOrderStatusDataWithNotEmptyLists() { .thenReturn(Optional.of(tariffsInfo)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(getBaglist()); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBaglist()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(certificateRepository.findCertificate(1L)).thenReturn(getCertificateList()); when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrderForGetOrderStatusData2Test())); when(modelMapper.map(getBaglist().get(0), BagInfoDto.class)).thenReturn(bagInfoDto); @@ -2485,6 +2506,7 @@ void getOrderStatusDataWithNotEmptyLists() { verify(orderRepository).getOrderDetails(1L); verify(bagRepository).findBagsByTariffsInfoId(1L); + verify(bagRepository).findBagsByOrderId(1L); verify(certificateRepository).findCertificate(1L); verify(orderRepository, times(5)).findById(1L); verify(modelMapper).map(getBaglist().get(0), BagInfoDto.class); @@ -2510,6 +2532,7 @@ void getOrderStatusesTranslationTest() { when(tariffsInfoRepository.findTariffsInfoByIdForEmployee(anyLong(), anyLong())) .thenReturn(Optional.of(tariffsInfo)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(bagRepository.findBagsByTariffsInfoId(1L)).thenReturn(getBaglist()); when(certificateRepository.findCertificate(1L)).thenReturn(getCertificateList()); when(orderRepository.findById(1L)).thenReturn(Optional.ofNullable(getOrderForGetOrderStatusData2Test())); @@ -2533,6 +2556,7 @@ void getOrderStatusesTranslationTest() { ubsManagementService.getOrderStatusData(1L, "test@gmail.com"); verify(orderRepository).getOrderDetails(1L); + verify(bagRepository).findBagsByOrderId(1L); verify(bagRepository).findBagsByTariffsInfoId(1L); verify(certificateRepository).findCertificate(1L); verify(orderRepository, times(5)).findById(1L); @@ -2610,6 +2634,7 @@ void addBonusesToUserTest() { Employee employee = getEmployee(); when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(certificateRepository.findCertificate(order.getId())).thenReturn(getCertificateList()); ubsManagementService.addBonusesToUser(getAddBonusesToUserDto(), 1L, employee.getEmail()); @@ -2617,7 +2642,7 @@ void addBonusesToUserTest() { verify(orderRepository).findById(1L); verify(orderRepository).save(order); verify(userRepository).save(user); - verify(notificationService).notifyBonuses(order, 900L); + verify(notificationService).notifyBonuses(order, 809L); verify(eventService).saveEvent(OrderHistory.ADDED_BONUSES, employee.getEmail(), order); } @@ -2629,7 +2654,7 @@ void addBonusesToUserIfOrderStatusIsCanceled() { Employee employee = getEmployee(); when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); -// when(orderBagService.findBagsByOrderId(1L)).thenReturn(getBaglist()); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(certificateRepository.findCertificate(order.getId())).thenReturn(getCertificateList()); ubsManagementService.addBonusesToUser(getAddBonusesToUserDto(), 1L, employee.getEmail()); @@ -2648,6 +2673,7 @@ void addBonusesToUserWithoutExportedBagsTest() { Employee employee = getEmployee(); when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBaglist()); when(certificateRepository.findCertificate(order.getId())).thenReturn(getCertificateList()); ubsManagementService.addBonusesToUser(getAddBonusesToUserDto(), 1L, employee.getEmail()); @@ -2655,18 +2681,26 @@ void addBonusesToUserWithoutExportedBagsTest() { verify(orderRepository).findById(1L); verify(orderRepository).save(order); verify(userRepository).save(user); - verify(notificationService).notifyBonuses(order, 300L); + verify(notificationService).notifyBonuses(order, 209L); verify(eventService).saveEvent(OrderHistory.ADDED_BONUSES, employee.getEmail(), order); } + @Test + void addBonusesToUserWithoutOrderTest() { + when(orderRepository.findById(1L)).thenReturn(Optional.empty()); + AddBonusesToUserDto dto = getAddBonusesToUserDto(); + String email = getEmployee().getEmail(); + assertThrows(NotFoundException.class, () -> ubsManagementService.addBonusesToUser(dto, 1L, email)); + } + @Test void addBonusesToUserWithNoOverpaymentTest() { Order order = getOrderForGetOrderStatusData2Test(); String email = getEmployee().getEmail(); when(orderRepository.findById(1L)).thenReturn(Optional.of(order)); when(orderRepository.getOrderDetails(1L)).thenReturn(Optional.of(order)); + when(bagRepository.findBagsByOrderId(1L)).thenReturn(getBag3list()); when(certificateRepository.findCertificate(order.getId())).thenReturn(getCertificateList()); - when(orderBagService.findAllBagsInOrderBagsList(anyList())).thenReturn(ModelUtils.TEST_BAG_LIST2); AddBonusesToUserDto addBonusesToUserDto = getAddBonusesToUserDto(); assertThrows(BadRequestException.class,