public async Task GetFundingPeriods_GivenNullOrEmptyPeriodsReturned_LogsAndReturnsOKWithEmptyList() { // Arrange ILogger logger = CreateLogger(); IEnumerable <FundingPeriod> Periods = null; IPolicyRepository policyRepository = CreatePolicyRepository(); policyRepository .GetFundingPeriods() .Returns(Periods); FundingPeriodService fundingPeriodService = CreateFundingPeriodService(logger: logger, policyRepository: policyRepository); // Act IActionResult result = await fundingPeriodService.GetFundingPeriods(); // Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult objectResult = result as OkObjectResult; IEnumerable <FundingPeriod> values = objectResult.Value as IEnumerable <FundingPeriod>; values .Should() .NotBeNull(); logger .Received(1) .Error(Arg.Is("No funding periods were returned")); }
public async Task GetFundingPeriods_GivenPeriodsAlreadyInCache_ReturnsOKWithResultsFromCache() { // Arrange ILogger logger = CreateLogger(); IEnumerable <FundingPeriod> Periods = new[] { new FundingPeriod(), new FundingPeriod() }; ICacheProvider cacheProvider = CreateCacheProvider(); cacheProvider .GetAsync <FundingPeriod[]>(Arg.Is(CacheKeys.FundingPeriods)) .Returns(Periods.ToArray()); IPolicyRepository policyRepository = CreatePolicyRepository(); FundingPeriodService PeriodsService = CreateFundingPeriodService(logger, cacheProvider, policyRepository); // Act IActionResult result = await PeriodsService.GetFundingPeriods(); // Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult objectResult = result as OkObjectResult; IEnumerable <FundingPeriod> values = objectResult.Value as IEnumerable <FundingPeriod>; values .Should() .HaveCount(2); await policyRepository .DidNotReceive() .GetFundingPeriods(); }
public async Task GetFundingPeriods_GivenPeriodsReturned_ReturnsOKWithResults() { // Arrange ILogger logger = CreateLogger(); IEnumerable <FundingPeriod> Periods = new[] { new FundingPeriod(), new FundingPeriod() }; IPolicyRepository policyRepository = CreatePolicyRepository(); policyRepository .GetFundingPeriods() .Returns(Periods); ICacheProvider cacheProvider = CreateCacheProvider(); FundingPeriodService fundingPeriodService = CreateFundingPeriodService(logger, cacheProvider, policyRepository); // Act IActionResult result = await fundingPeriodService.GetFundingPeriods(); // Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult objectResult = result as OkObjectResult; IEnumerable <FundingPeriod> values = objectResult.Value as IEnumerable <FundingPeriod>; values .Should() .HaveCount(2); await cacheProvider .Received(1) .SetAsync <FundingPeriod[]>(Arg.Is(CacheKeys.FundingPeriods), Arg.Is <FundingPeriod[]>(m => m.SequenceEqual(Periods))); }