예제 #1
0
        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);
        }
예제 #2
0
        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);
        }