public async Task OnGetAsync_WhenGettingProviderResultsIsSuccess_CalculationDetails_Populated() { // Arrange IResultsApiClient resultsApiClient = CreateApiClient(); ISpecsApiClient specsClient = CreateSpecsApiClient(); IMapper mapper = CreateMapper(); ILogger logger = CreateLogger(); IFeatureToggle featureToggle = Substitute.For <IFeatureToggle>(); ProviderCalcsResultsPageModel provideCalcPageModel = CreatePageModel(resultsApiClient, specsClient, mapper, logger, featureToggle); IEnumerable <Reference> fundingPeriods = new[] { new Reference("1617", "2016-2017"), new Reference("1718", "2017-2018"), new Reference("1819", "2018-2019") }; Provider provider = CreateProvider(); IEnumerable <string> specSummary = GetSpecificationsWithResults(); IList <CalculationResultItem> calResult = GetCalcResults(); IList <AllocationLineResultItem> allocResult = GetAllocationResults(); ProviderResults providerResults = new ProviderResults() { AllocationResults = allocResult, CalculationResults = calResult }; resultsApiClient.GetProviderByProviderId(Arg.Any <string>()) .Returns(new ApiResponse <Provider>(HttpStatusCode.OK, provider)); specsClient.GetFundingPeriods() .Returns(new ApiResponse <IEnumerable <Reference> >(HttpStatusCode.OK, fundingPeriods)); resultsApiClient.GetProviderResults(Arg.Is("2"), Arg.Is("2")) .Returns(new ApiResponse <ProviderResults>(HttpStatusCode.OK, providerResults)); resultsApiClient.GetSpecificationIdsForProvider("2") .Returns(new ApiResponse <IEnumerable <string> >(HttpStatusCode.OK, specSummary)); specsClient .GetSpecificationSummaries(Arg.Any <IEnumerable <string> >()) .Returns(new ApiResponse <IEnumerable <Clients.SpecsClient.Models.SpecificationSummary> >(HttpStatusCode.OK, new List <Clients.SpecsClient.Models.SpecificationSummary>())); // Act IActionResult result = await provideCalcPageModel.OnGetAsync("2", "1617", "2"); // Assert provideCalcPageModel.CalculationErrorCount.Equals(1); provideCalcPageModel.ViewModel.CalculationItems.Should().HaveSameCount(calResult); provideCalcPageModel.ViewModel.CalculationItems.First().CalculationType.Should().Be(Clients.SpecsClient.Models.CalculationSpecificationType.Number); provideCalcPageModel.ViewModel.CalculationItems.Last().CalculationType.Should().Be(Clients.SpecsClient.Models.CalculationSpecificationType.Funding); }
public async Task OnGetAsync_ReturnsValidFundingPeriodAsync() { // Arrange IResultsApiClient resultsApiClient = CreateApiClient(); ISpecsApiClient specsClient = CreateSpecsApiClient(); IMapper mapper = CreateMapper(); ILogger logger = CreateLogger(); IFeatureToggle featureToggle = Substitute.For <IFeatureToggle>(); ProviderCalcsResultsPageModel provideCalcPageModel = CreatePageModel(resultsApiClient, specsClient, mapper, logger, featureToggle); Provider provider = CreateProvider(); IEnumerable <Reference> fundingPeriods = new[] { new Reference("1617", "2016-2017"), new Reference("1718", "2017-2018"), new Reference("1819", "2018-2019") }; IEnumerable <string> specSummary = GetSpecificationsWithResults(); IList <CalculationResultItem> calResult = GetCalcResults(); IList <AllocationLineResultItem> allocResult = GetAllocationResults(); ProviderResults providerResults = new ProviderResults() { AllocationResults = allocResult, CalculationResults = calResult }; resultsApiClient.GetProviderByProviderId(Arg.Any <string>()) .Returns(new ApiResponse <Provider>(HttpStatusCode.OK, provider)); specsClient.GetFundingPeriods() .Returns(new ApiResponse <IEnumerable <Reference> >(HttpStatusCode.OK, fundingPeriods)); resultsApiClient.GetProviderResults(Arg.Is("2"), Arg.Is("2")) .Returns(new ApiResponse <ProviderResults>(HttpStatusCode.OK, providerResults)); resultsApiClient.GetSpecificationIdsForProvider("2") .Returns(new ApiResponse <IEnumerable <string> >(HttpStatusCode.OK, specSummary)); specsClient .GetSpecificationSummaries(Arg.Any <IEnumerable <string> >()) .Returns(new ApiResponse <IEnumerable <Clients.SpecsClient.Models.SpecificationSummary> >(HttpStatusCode.OK, new List <Clients.SpecsClient.Models.SpecificationSummary>())); // Act IActionResult result = await provideCalcPageModel.OnGetAsync("2", "1617", "2"); // Assert result.Should() .BeOfType <PageResult>() .Which.Should().NotBeNull("Action result was null"); provideCalcPageModel.FundingPeriods.Should().NotBeNull(); }
public void OnGetAsync_WhenGettingProviderResponseIsNotSuccess_ThrowsException() { // Arrange IResultsApiClient resultsApiClient = CreateApiClient(); ISpecsApiClient specsClient = CreateSpecsApiClient(); IMapper mapper = CreateMapper(); ILogger logger = CreateLogger(); IFeatureToggle featureToggle = Substitute.For <IFeatureToggle>(); ProviderCalcsResultsPageModel provideCalcPageModel = CreatePageModel(resultsApiClient, specsClient, mapper, logger, featureToggle); IEnumerable <Reference> fundingPeriods = new[] { new Reference("1617", "2016-2017"), new Reference("1718", "2017-2018"), new Reference("1819", "2018-2019") }; Provider provider = null; IEnumerable <string> specSummary = GetSpecificationsWithResults(); IList <CalculationResultItem> calResult = GetCalcResults(); IList <AllocationLineResultItem> allocResult = GetAllocationResults(); ProviderResults providerResults = new ProviderResults() { AllocationResults = allocResult, CalculationResults = calResult }; resultsApiClient.GetProviderByProviderId(Arg.Any <string>()) .Returns(new ApiResponse <Provider>(HttpStatusCode.NotFound, provider)); specsClient.GetFundingPeriods() .Returns(new ApiResponse <IEnumerable <Reference> >(HttpStatusCode.OK, fundingPeriods)); resultsApiClient.GetProviderResults(Arg.Is("2"), Arg.Is("2")) .Returns(new ApiResponse <ProviderResults>(HttpStatusCode.OK, providerResults)); resultsApiClient.GetSpecificationIdsForProvider("2") .Returns(new ApiResponse <IEnumerable <string> >(HttpStatusCode.OK, specSummary)); specsClient .GetSpecificationSummaries(Arg.Any <IEnumerable <string> >()) .Returns(new ApiResponse <IEnumerable <Clients.SpecsClient.Models.SpecificationSummary> >(HttpStatusCode.OK, new List <Clients.SpecsClient.Models.SpecificationSummary>())); // Act Func <Task> test = async() => await provideCalcPageModel.OnGetAsync("2", "1617", "2"); // Assert test .Should() .ThrowExactly <System.InvalidOperationException>().WithMessage("Unable to retreive Provider information: Status Code = NotFound"); }
public void OnGetAsync_GivenNullProviderReturnsArgumentNullExceptionThrown() { // Arrange IResultsApiClient resultsApiClient = CreateApiClient(); ISpecsApiClient specsClient = CreateSpecsApiClient(); IMapper mapper = CreateMapper(); ILogger logger = Substitute.For <ILogger>(); IFeatureToggle featureToggle = Substitute.For <IFeatureToggle>(); ProviderCalcsResultsPageModel providerCalcPageModel = CreatePageModel(resultsApiClient, specsClient, mapper, logger, featureToggle); // Act - Assert Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => await providerCalcPageModel.OnGetAsync(null, string.Empty, string.Empty)); }