FlashDeliveryAvailabilityTaskTest.java 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package com.ruoyi.app.flashdelivery.task;
  2. import com.ruoyi.app.flashdelivery.service.FlashDeliveryApplicationService;
  3. import com.ruoyi.system.domain.flash.FlashDeliveryOrder;
  4. import org.junit.jupiter.api.Test;
  5. import org.springframework.stereotype.Component;
  6. import java.util.Date;
  7. import java.util.List;
  8. import static org.junit.jupiter.api.Assertions.assertEquals;
  9. import static org.mockito.ArgumentMatchers.any;
  10. import static org.mockito.ArgumentMatchers.anyInt;
  11. import static org.mockito.Mockito.doThrow;
  12. import static org.mockito.Mockito.mock;
  13. import static org.mockito.Mockito.verify;
  14. import static org.mockito.Mockito.when;
  15. class FlashDeliveryAvailabilityTaskTest {
  16. @Test
  17. void exposesDedicatedQuartzBeanAndOpensEveryDueScheduledOrder() {
  18. Component component = FlashDeliveryAvailabilityTask.class.getAnnotation(Component.class);
  19. assertEquals("flashDeliveryAvailabilityTask", component.value());
  20. FlashDeliveryApplicationService service = mock(FlashDeliveryApplicationService.class);
  21. FlashDeliveryOrder first = new FlashDeliveryOrder();
  22. first.setId(1L);
  23. FlashDeliveryOrder second = new FlashDeliveryOrder();
  24. second.setId(2L);
  25. when(service.scheduledAvailabilityCandidates(any(Date.class), anyInt()))
  26. .thenReturn(List.of(first, second));
  27. new FlashDeliveryAvailabilityTask(service).openScheduledOrders();
  28. verify(service).openScheduledOrderForRiders(org.mockito.ArgumentMatchers.eq(1L), any(Date.class));
  29. verify(service).openScheduledOrderForRiders(org.mockito.ArgumentMatchers.eq(2L), any(Date.class));
  30. }
  31. @Test
  32. void oneFailedScheduledOrderDoesNotStopRemainingOrders() {
  33. FlashDeliveryApplicationService service = mock(FlashDeliveryApplicationService.class);
  34. FlashDeliveryOrder first = new FlashDeliveryOrder();
  35. first.setId(1L);
  36. FlashDeliveryOrder second = new FlashDeliveryOrder();
  37. second.setId(2L);
  38. when(service.scheduledAvailabilityCandidates(any(Date.class), anyInt()))
  39. .thenReturn(List.of(first, second));
  40. doThrow(new IllegalStateException("one bad row"))
  41. .when(service).openScheduledOrderForRiders(org.mockito.ArgumentMatchers.eq(1L), any(Date.class));
  42. ch.qos.logback.classic.Logger logger = (ch.qos.logback.classic.Logger)
  43. org.slf4j.LoggerFactory.getLogger(FlashDeliveryAvailabilityTask.class);
  44. ch.qos.logback.classic.Level previous = logger.getLevel();
  45. logger.setLevel(ch.qos.logback.classic.Level.OFF);
  46. try {
  47. new FlashDeliveryAvailabilityTask(service).openScheduledOrders();
  48. } finally {
  49. logger.setLevel(previous);
  50. }
  51. verify(service).openScheduledOrderForRiders(org.mockito.ArgumentMatchers.eq(2L), any(Date.class));
  52. }
  53. }