Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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));
        }