@Test
  public void testRunFailWithRetry() {
    final TaskModel taskModelMock = mock(TaskModel.class);
    final OrderCancelRecordEntryModel orderCancelRecordEntryMock =
        mock(OrderCancelRecordEntryModel.class);
    final OrderModificationRecordModel modificationRecordMock =
        mock(OrderModificationRecordModel.class);
    final DefaultSendOrderCancelRequestToDataHubHelper cSVHelperMock =
        mock(DefaultSendOrderCancelRequestToDataHubHelper.class);
    final TaskService paramTaskService = null;
    final OrderModel order = new OrderModel();
    final ModelService modelService = mock(ModelService.class);

    when(taskModelMock.getContext()).thenReturn(orderCancelRecordEntryMock);
    when(orderCancelRecordEntryMock.getModificationRecord()).thenReturn(modificationRecordMock);
    when(cSVHelperMock.createAndSendRawItem(orderCancelRecordEntryMock))
        .thenReturn(new DefaultSendToDataHubResult(HttpStatus.FORBIDDEN, ""));
    when(modificationRecordMock.getOrder()).thenReturn(order);

    cut.setModelService(modelService);
    cut.setOrderCancelRequestCSVHelper(cSVHelperMock);
    try {
      cut.run(paramTaskService, taskModelMock);
    } catch (final RetryLaterException e) {
      verify(cSVHelperMock).createAndSendRawItem(orderCancelRecordEntryMock);
      verify(modelService).save(order);
      assertEquals(OrderStatus.CANCELLING, order.getStatus());
      assertEquals(SendOrderCancelRequestAsCSVTaskRunner.DEFAULT_RETRY_DELAY, e.getDelay());
      return;
    }
    fail("RetryLaterException missing");
  }