public async Task RetrieveJobAndCheckCanBeProcessed_ApiReturnsIncomplete_ReturnsCorrectly() { //Arrange var jobsApiClient = Substitute.For <IJobsApiClient>(); var policies = new JobManagementResiliencePolicies { JobsApiClient = Policy.NoOpAsync() }; var logger = Substitute.For <ILogger>(); var jvm = new JobViewModel { CompletionStatus = null }; var jobApiResponse = new ApiResponse <JobViewModel>(HttpStatusCode.OK, jvm); jobsApiClient .GetJobById(Arg.Any <string>()) .Returns(jobApiResponse); var jobManagement = new JobManagement(jobsApiClient, logger, policies); var jobId = "3456"; //Act var viewModel = await jobManagement.RetrieveJobAndCheckCanBeProcessed(jobId); //Assert await jobsApiClient .Received(1) .GetJobById(jobId); viewModel .Should() .Be(jvm); }
public async Task RetrieveJobAndCheckCanBeProcessed_Fails_LogsAndErrors(ApiResponse <JobViewModel> jobApiResponse, string jobId, string errorMessage, LogEventLevel logEventLevel) { //Arrange var jobsApiClient = Substitute.For <IJobsApiClient>(); var policies = new JobManagementResiliencePolicies { JobsApiClient = Policy.NoOpAsync() }; var logger = Substitute.For <ILogger>(); jobsApiClient .GetJobById(Arg.Any <string>()) .Returns(jobApiResponse); var jobManagement = new JobManagement(jobsApiClient, logger, policies); Func <Task> test = async() => await jobManagement.RetrieveJobAndCheckCanBeProcessed(jobId); test .Should().Throw <Exception>() .Which .Message .Should().Be(errorMessage); await jobsApiClient .Received(1) .GetJobById(jobId); logger .Received(1) .Write(logEventLevel, errorMessage); }