public async Task GetFundingConfiguration__GivenFundingConfigurationWasFound_ReturnsSuccess(string fundingStreamId, string fundingPeriodId) { // Arrange FundingStream fundingStream = new FundingStream { Id = fundingStreamId }; FundingPeriod fundingPeriod = new FundingPeriod { Id = fundingPeriodId }; string configId = $"config-{fundingStreamId}-{fundingPeriodId}"; FundingConfiguration fundingConfiguration = new FundingConfiguration { Id = configId }; IPolicyRepository policyRepository = CreatePolicyRepository(); policyRepository .GetFundingStreamById(Arg.Is(fundingStreamId)) .Returns(fundingStream); policyRepository .GetFundingPeriodById(Arg.Is(fundingPeriodId)) .Returns(fundingPeriod); policyRepository .GetFundingConfiguration(Arg.Is(configId)) .Returns(fundingConfiguration); FundingConfigurationService fundingConfigurationsService = CreateFundingConfigurationService(policyRepository: policyRepository); // Act IActionResult result = await fundingConfigurationsService.GetFundingConfiguration(fundingStreamId, fundingPeriodId); // Assert result .Should() .BeOfType <OkObjectResult>() .Which .Value .Should() .Be(fundingConfiguration); FundingConfiguration fundingConfigurationResult = ((OkObjectResult)result).Value.As <FundingConfiguration>(); fundingConfigurationResult.ProviderSource.Should().Be(CalculateFunding.Models.Providers.ProviderSource.CFS); fundingConfigurationResult.PaymentOrganisationSource.Should().Be(PaymentOrganisationSource.PaymentOrganisationAsProvider); }
public async Task GetFundingConfiguration__GivenFundingConfigurationAlreadyInCache_ReturnsSuccessWithConfigurationFromCache(string fundingStreamId, string fundingPeriodId) { // Arrange FundingStream fundingStream = new FundingStream { Id = fundingStreamId }; FundingPeriod fundingPeriod = new FundingPeriod { Id = fundingPeriodId }; string configId = $"config-{fundingStreamId}-{fundingPeriodId}"; FundingConfiguration fundingConfiguration = new FundingConfiguration { Id = configId }; IPolicyRepository policyRepository = CreatePolicyRepository(); policyRepository .GetFundingStreamById(Arg.Is(fundingStreamId)) .Returns(fundingStream); policyRepository .GetFundingPeriodById(Arg.Is(fundingPeriodId)) .Returns(fundingPeriod); string cacheKey = $"{CacheKeys.FundingConfig}{fundingStreamId}-{fundingPeriodId}"; ICacheProvider cacheProvider = CreateCacheProvider(); cacheProvider .GetAsync <FundingConfiguration>(Arg.Is(cacheKey)) .Returns(fundingConfiguration); FundingConfigurationService fundingConfigurationsService = CreateFundingConfigurationService(policyRepository: policyRepository, cacheProvider: cacheProvider); // Act IActionResult result = await fundingConfigurationsService.GetFundingConfiguration(fundingStreamId, fundingPeriodId); // Assert result .Should() .BeOfType <OkObjectResult>() .Which .Value .Should() .Be(fundingConfiguration); }
public async Task GetFundingConfiguration_GivenFundingConfigurationDoesNotExist_ReturnsNotFoundRequest(string fundingStreamId, string fundingPeriodId) { // Arrange ILogger logger = CreateLogger(); FundingConfigurationService fundingConfigurationsService = CreateFundingConfigurationService(logger: logger); // Act IActionResult result = await fundingConfigurationsService.GetFundingConfiguration(fundingStreamId, fundingPeriodId); // Assert result .Should() .BeOfType <NotFoundResult>(); logger .Received(1) .Error(Arg.Is($"No funding Configuration was found for funding stream id : {fundingStreamId} and funding period id : {fundingPeriodId}")); }
public async Task GetFundingConfiguration_GivenEmptyFundingPeriodId_ReturnsBadRequestRequest(string fundingStreamId, string fundingPeriodId) { // Arrange ILogger logger = CreateLogger(); FundingConfigurationService fundingConfigurationsService = CreateFundingConfigurationService(logger: logger); // Act IActionResult result = await fundingConfigurationsService.GetFundingConfiguration(fundingStreamId, fundingPeriodId); // Assert result .Should() .BeOfType <BadRequestObjectResult>() .Which .Value .Should() .Be("Null or empty funding period Id provided"); logger .Received(1) .Error(Arg.Is("No funding period Id was provided to GetFundingConfiguration")); }