87 lines
4.2 KiB
C#
87 lines
4.2 KiB
C#
using System.Collections.Generic;
|
|
using LCU.Api.Internal.Dispatcher.Configurations;
|
|
using LCU.Api.Internal.Dispatcher.Services;
|
|
using LCU.Api.Internal.Dispatcher.Services.DispatcherOperationServices;
|
|
using LCU.Api.Internal.Dispatcher.Services.QueueServices;
|
|
using LCU.Api.Internal.DispatcherLib.Repositories;
|
|
using LCU.Api.Internal.DispatcherTests.RepositoryTests;
|
|
using LCU.Library.Internal.DispatcherModels.Enums;
|
|
using LCU.Library.Internal.DispatcherModels.Models.Requests;
|
|
|
|
namespace LCU.Api.Internal.DispatcherTests.ServiceTests.DispatcherOperationServices;
|
|
|
|
public class JobFailureServiceTest : DbContextFromJsonTest
|
|
{
|
|
private readonly JobFailureService _jobFailureService;
|
|
private readonly Mock<IWorkItemService> _mockWorkItemService;
|
|
private readonly Mock<IWorkItemExecutionService> _mockWorkItemExecutionService;
|
|
private readonly JobService _jobService;
|
|
private readonly Mock<IExecutionMessageService> _mockExecutionMessageService;
|
|
private readonly Mock<IQueueDetermineOperationService> _mockQueueDetermineOperationService;
|
|
private readonly Mock<IQueueSendErroredJobAlertService> _mockQueueSendErroredJobAlertService;
|
|
|
|
public JobFailureServiceTest()
|
|
{
|
|
var dbContext = GetContextWithData("RepositoryTests\\job_repo_basic.json");
|
|
var unitOfWork = new UnitOfWork(dbContext);
|
|
var jobRepository = new JobRepository(dbContext);
|
|
|
|
_mockWorkItemService = new Mock<IWorkItemService>();
|
|
_mockWorkItemExecutionService = new Mock<IWorkItemExecutionService>();
|
|
_mockExecutionMessageService = new Mock<IExecutionMessageService>();
|
|
_mockQueueDetermineOperationService = new Mock<IQueueDetermineOperationService>();
|
|
_mockQueueSendErroredJobAlertService = new Mock<IQueueSendErroredJobAlertService>();
|
|
_jobService = new JobService(unitOfWork,
|
|
jobRepository,
|
|
_mockWorkItemService.Object,
|
|
_mockWorkItemExecutionService.Object,
|
|
new ApiConfiguration());
|
|
|
|
_jobFailureService = new JobFailureService(_mockWorkItemService.Object,
|
|
_mockWorkItemExecutionService.Object,
|
|
_jobService,
|
|
_mockExecutionMessageService.Object,
|
|
_mockQueueDetermineOperationService.Object,
|
|
_mockQueueSendErroredJobAlertService.Object);
|
|
}
|
|
|
|
[Fact]
|
|
public async Task HandleJobFailureRequest_QueuesErroredJobAlert_WithUpdatedJobErrorRecipients()
|
|
{
|
|
var workItemExecution = new WorkItemExecution
|
|
{
|
|
WorkItemExecutionId = 10,
|
|
WorkItemId = 1297
|
|
};
|
|
var workItem = new WorkItem
|
|
{
|
|
WorkItemId = 1297,
|
|
CancelJobOnFailure = false,
|
|
WorkItemExecutions = new List<WorkItemExecution>
|
|
{
|
|
workItemExecution
|
|
}
|
|
};
|
|
var request = new JobFailureRequest
|
|
{
|
|
WorkItemId = 1297,
|
|
ExecutionMessages = new List<string>()
|
|
};
|
|
|
|
_mockWorkItemService.Setup(x => x.GetByIdAsync(request.WorkItemId)).ReturnsAsync(workItem);
|
|
_mockWorkItemExecutionService.Setup(x => x.UpdateFailedWorkItemExecution(workItemExecution)).ReturnsAsync(workItemExecution);
|
|
_mockExecutionMessageService.Setup(x => x.SaveExecutionMessages(workItemExecution.WorkItemExecutionId, request.ExecutionMessages)).Returns(Task.CompletedTask);
|
|
|
|
await _jobFailureService.HandleJobFailureRequest(request);
|
|
|
|
_mockQueueSendErroredJobAlertService.Verify(x => x.QueueSendErroredJobAlert(
|
|
It.Is<Job>(queuedJob =>
|
|
queuedJob.JobId == 1085 &&
|
|
queuedJob.JobStatus == JobStatus.Failed &&
|
|
queuedJob.JobErrorRecipients.Count == 1 &&
|
|
queuedJob.JobErrorRecipients.First().Recipient == "[email protected]"),
|
|
workItem), Times.Once);
|
|
_mockQueueDetermineOperationService.Verify(x => x.QueueDetermineOperation(It.IsAny<Job>(), It.IsAny<WorkItem>(), It.IsAny<DetermineOperationType>()), Times.Never);
|
|
}
|
|
}
|