Esempio n. 1
0
        public async Task GetProfileVariationPointers_Returns_Bad_Request_Given_Api_Returns_Bad_Request_Status()
        {
            string aValidSpecificationId = "ABC";

            _specificationsApiClient
            .GetProfileVariationPointers(aValidSpecificationId)
            .Returns(Task.FromResult(new ApiResponse <IEnumerable <ProfileVariationPointer> >(HttpStatusCode.BadRequest)));

            IActionResult result = await _specificationController.GetProfileVariationPointers(aValidSpecificationId);

            result.Should().BeOfType <BadRequestResult>();
        }
        public async Task GetProfileVariationPointers__GivenNotFoundResponse_ReturnsNull()
        {
            string specificationId = new RandomString();

            _specifications.GetProfileVariationPointers(Arg.Is(specificationId))
            .Returns(new ApiResponse <IEnumerable <ProfileVariationPointer> >(HttpStatusCode.NotFound, null));

            IEnumerable <ProfileVariationPointer> profileVariationPointers =
                await _service.GetProfileVariationPointers(specificationId);

            profileVariationPointers
            .Should()
            .BeNull();
        }
Esempio n. 3
0
        private async Task ProfileFundingLineValues(PublishedProviderVersion newPublishedProviderVersion, ProfilePatternKey profilePatternKey)
        {
            string fundingLineCode = profilePatternKey.FundingLineCode;

            FundingLine fundingLine = newPublishedProviderVersion.FundingLines.SingleOrDefault(_ => _.FundingLineCode == fundingLineCode);

            if (fundingLine == null)
            {
                string error = $"Did not locate a funding line with code {fundingLineCode} on published provider version {newPublishedProviderVersion.PublishedProviderId}";

                _logger.Error(error);

                throw new InvalidOperationException(error);
            }

            ApiResponse <IEnumerable <ProfileVariationPointer> > variationPointersResponse =
                await _specificationResiliencePolicy.ExecuteAsync(() =>
                                                                  _specificationsApiClient.GetProfileVariationPointers(newPublishedProviderVersion.SpecificationId));

            IEnumerable <ProfileVariationPointer> profileVariationPointers = variationPointersResponse?
                                                                             .Content?
                                                                             .Where(_ =>
                                                                                    _.FundingLineId == fundingLineCode &&
                                                                                    _.FundingStreamId == newPublishedProviderVersion.FundingStreamId);

            if (ThereArePaidProfilePeriodsOnTheFundingLine(profileVariationPointers))
            {
                await ReProfileFundingLine(newPublishedProviderVersion, profilePatternKey, fundingLineCode, fundingLine);
            }
            else
            {
                await ProfileFundingLine(fundingLine, newPublishedProviderVersion, profilePatternKey);
            }
        }
        private async Task <ProfileVariationPointer> GetProfileVariationPointerForFundingLine(string specificationId,
                                                                                              string fundingLineCode,
                                                                                              string fundingStreamId)
        {
            ApiResponse <IEnumerable <ProfileVariationPointer> > variationPointers = await _specificationResilience.ExecuteAsync(
                () => _specifications.GetProfileVariationPointers(specificationId));

            return(variationPointers?.Content?.SingleOrDefault(_ => _.FundingLineId == fundingLineCode &&
                                                               _.FundingStreamId == fundingStreamId));
        }
        public async Task <IEnumerable <ApiProfileVariationPointer> > GetProfileVariationPointers(string specificationId)
        {
            Guard.IsNullOrWhiteSpace(specificationId, nameof(specificationId));

            ApiResponse <IEnumerable <ApiProfileVariationPointer> > profileVariationPointerResponse =
                await _resiliencePolicy.ExecuteAsync(() => _specifications.GetProfileVariationPointers(specificationId));

            if (profileVariationPointerResponse.StatusCode == HttpStatusCode.NotFound)
            {
                return(null);
            }

            if (!profileVariationPointerResponse.StatusCode.IsSuccess())
            {
                throw new Exception($"Failed to select get profile variation prointer with specification id '{specificationId}'");
            }

            return(profileVariationPointerResponse.Content);
        }
        public async Task <IActionResult> GetProfileVariationPointers(string specificationId)
        {
            ApiResponse <IEnumerable <ProfileVariationPointer> > apiResponse =
                await _specificationsApiClient.GetProfileVariationPointers(specificationId);

            if (apiResponse.StatusCode == HttpStatusCode.OK)
            {
                return(Ok(apiResponse.Content));
            }

            if (apiResponse.StatusCode == HttpStatusCode.NoContent)
            {
                return(NoContent());
            }

            if (apiResponse.StatusCode == HttpStatusCode.BadRequest)
            {
                return(new BadRequestResult());
            }

            return(new StatusCodeResult(500));
        }