public async Task CreateAllocationLineResultStatusUpdateJobs_GivenJobIdButJobResponseIsNotFound_LogsAndDoesNotProcess() { //Arrange Message message = new Message(); message.UserProperties.Add("jobId", jobId); ILogger logger = CreateLogger(); ApiResponse <JobViewModel> apiResponse = new ApiResponse <JobViewModel>(HttpStatusCode.NotFound); IJobsApiClient jobsApiClient = CreateJobsApiClient(); jobsApiClient .GetJobById(jobId) .Returns(apiResponse); PublishedResultsService publishedResultsService = CreateResultsService(logger, jobsApiClient: jobsApiClient); //Act await publishedResultsService.CreateAllocationLineResultStatusUpdateJobs(message); //Assert logger .Received(1) .Error(Arg.Is($"Could not find the job with id: '{jobId}'")); await jobsApiClient .DidNotReceive() .AddJobLog(Arg.Is(jobId), Arg.Any <JobLogUpdateModel>()); }
public async Task CreateAllocationLineResultStatusUpdateJobs_GivenJobFoundButAlreadyCompleted_LogsAndReturnsDoesNotAddJobLog() { //Arrange Message message = new Message(); message.UserProperties.Add("jobId", jobId); ILogger logger = CreateLogger(); JobViewModel job = new JobViewModel { Id = jobId, CompletionStatus = CompletionStatus.Cancelled }; ApiResponse <JobViewModel> apiResponse = new ApiResponse <JobViewModel>(HttpStatusCode.OK, job); IJobsApiClient jobsApiClient = CreateJobsApiClient(); jobsApiClient .GetJobById(jobId) .Returns(apiResponse); PublishedResultsService publishedResultsService = CreateResultsService(logger, jobsApiClient: jobsApiClient); //Act await publishedResultsService.CreateAllocationLineResultStatusUpdateJobs(message); //Assert logger .Received(1) .Information(Arg.Is($"Received job with id: '{job.Id}' is already in a completed state with status {job.CompletionStatus.ToString()}")); await jobsApiClient .DidNotReceive() .AddJobLog(Arg.Any <string>(), Arg.Any <JobLogUpdateModel>()); }
public async Task ProcessDeadLetteredMessage_GivenMessageButNoJobId_LogsAnErrorAndDoesNotUpdadeJobLog() { // Arrange Message message = new Message(); IJobsApiClient jobsApiClient = CreateJobsApiClient(); ILogger logger = CreateLogger(); IJobHelperService service = CreateJobHelperService(jobsApiClient, logger); // Act await service.ProcessDeadLetteredMessage(message); // Assert logger .Received(1) .Error(Arg.Is("Missing job id from dead lettered message")); await jobsApiClient .DidNotReceive() .AddJobLog(Arg.Any <string>(), Arg.Any <JobLogUpdateModel>()); }
public async Task CreateInstructGenerateAggregationsAllocationJob_GivenNotCorrectJobType_DoesNotCreateNewJob() { //Arrange JobNotification jobNotification = CreateJobNotification(); jobNotification.JobType = JobConstants.DefinitionNames.GenerateCalculationAggregationsJob; string json = JsonConvert.SerializeObject(jobNotification); Message message = new Message(Encoding.UTF8.GetBytes(json)); IJobsApiClient jobsApiClient = CreateJobsApiClient(); JobService jobService = CreateJobService(jobsApiClient); //Act await jobService.CreateInstructAllocationJob(message); //Assert await jobsApiClient .DidNotReceive() .CreateJob(Arg.Any <JobCreateModel>()); }
public async Task CreateInstructGenerateAggregationsAllocationJob_GivenJobNotSucceeeded_DoesNotCreateNewJob() { //Arrange JobNotification jobNotification = CreateJobNotification(); jobNotification.CompletionStatus = CompletionStatus.Cancelled; string json = JsonConvert.SerializeObject(jobNotification); Message message = new Message(Encoding.UTF8.GetBytes(json)); IJobsApiClient jobsApiClient = CreateJobsApiClient(); JobService jobService = CreateJobService(); //Act await jobService.CreateInstructAllocationJob(message); //Assert await jobsApiClient .DidNotReceive() .CreateJob(Arg.Any <JobCreateModel>()); }
public async Task CreateAllocationLineResultStatusUpdateJobs_GivenNoJobId_LogsErrorAndDoesntFetchJob() { //Arrange Message message = new Message(); ILogger logger = CreateLogger(); IJobsApiClient jobsApiClient = CreateJobsApiClient(); PublishedResultsService publishedResultsService = CreateResultsService(logger, jobsApiClient: jobsApiClient); //Act await publishedResultsService.CreateAllocationLineResultStatusUpdateJobs(message); //Assert logger .Received(1) .Error(Arg.Is("Missing parent job id to instruct allocation line status updates")); await jobsApiClient .DidNotReceive() .GetJobById(Arg.Any <string>()); }