public async Task GetTemplateMapping_GivenFailedResponseFromCalculationsApi_ThrowsRetriableException() { //Arrange ApiResponse <TemplateMapping> apiResponse = new ApiResponse <TemplateMapping>(HttpStatusCode.NotFound); ICalculationsApiClient calculationsApiClient = CreateCalculationsApiClient(); calculationsApiClient .GetTemplateMapping(Arg.Is(specificationId), Arg.Is(fundingStreamId)) .Returns(apiResponse); ILogger logger = CreateLogger(); string errorMessage = $"Failed to retrieve template mapping for specification id '{specificationId}' and funding stream id '{fundingStreamId}'" + $" with status code '{apiResponse.StatusCode}'"; CalculationsService calculationsService = CreateCalculationsService(calculationsApiClient, logger); //Act Func <Task> test = async() => await calculationsService.GetTemplateMapping(specificationId, fundingStreamId); //Assert test .Should() .ThrowExactly <RetriableException>() .Which .Message .Should() .Be(errorMessage); logger .Received(1) .Error(Arg.Is(errorMessage)); }
public async Task GetTemplateMapping_GivenResponseIsSuccess_ReturnsTempalteMappingValue() { //Arrange TemplateMapping expectedTemplateMapping = new TemplateMapping() { SpecificationId = specificationId, FundingStreamId = fundingStreamId }; ApiResponse <TemplateMapping> apiResponse = new ApiResponse <TemplateMapping>(HttpStatusCode.OK, expectedTemplateMapping); ICalculationsApiClient calculationsApiClient = CreateCalculationsApiClient(); calculationsApiClient .GetTemplateMapping(Arg.Is(specificationId), Arg.Is(fundingStreamId)) .Returns(apiResponse); ILogger logger = CreateLogger(); CalculationsService calculationsService = CreateCalculationsService(calculationsApiClient, logger); //Act TemplateMapping responseValue = await calculationsService.GetTemplateMapping(specificationId, fundingStreamId); //Assert responseValue .Should() .Be(expectedTemplateMapping); }