public async Task GetCalculationMetadataForSpecification_GivenResponseIsSuccess_ReturnsCalculationMetadataValue() { //Arrange IEnumerable <CalculationMetadata> expectedCalculationMetadata = new List <CalculationMetadata>() { new CalculationMetadata() }; ApiResponse <IEnumerable <CalculationMetadata> > apiResponse = new ApiResponse <IEnumerable <CalculationMetadata> >(HttpStatusCode.OK, expectedCalculationMetadata); ICalculationsApiClient calculationsApiClient = CreateCalculationsApiClient(); calculationsApiClient .GetCalculationMetadataForSpecification(Arg.Is(specificationId)) .Returns(apiResponse); ILogger logger = CreateLogger(); CalculationsService calculationsService = CreateCalculationsService(calculationsApiClient, logger); //Act IEnumerable <CalculationMetadata> responseValue = await calculationsService.GetCalculationMetadataForSpecification(specificationId); //Assert responseValue .Should() .BeEquivalentTo(expectedCalculationMetadata); }
public async Task GetCalculationMetadataForSpecification_GivenFailedResponseFromCalculationsApi_ThrowsRetriableException() { //Arrange ApiResponse <IEnumerable <CalculationMetadata> > apiResponse = new ApiResponse <IEnumerable <CalculationMetadata> >(HttpStatusCode.NotFound); ICalculationsApiClient calculationsApiClient = CreateCalculationsApiClient(); calculationsApiClient .GetCalculationMetadataForSpecification(Arg.Is(specificationId)) .Returns(apiResponse); ILogger logger = CreateLogger(); string errorMessage = $"Failed to retrieve calculation metadata for specification id '{specificationId}'" + $" with status code '{apiResponse.StatusCode}'"; CalculationsService calculationsService = CreateCalculationsService(calculationsApiClient, logger); //Act Func <Task> test = async() => await calculationsService.GetCalculationMetadataForSpecification(specificationId); //Assert test .Should() .ThrowExactly <RetriableException>() .Which .Message .Should() .Be(errorMessage); logger .Received(1) .Error(Arg.Is(errorMessage)); }