public async Task GetFundingPeriodById_GivenFundingPeriodWasNotFound_ReturnsNotFound()
        {
            // Arrange
            const string fundingPeriodId = "fp-1";

            ILogger logger = CreateLogger();

            IPolicyRepository policyRepository = CreatePolicyRepository();

            policyRepository
            .GetFundingPeriodById(Arg.Is(fundingPeriodId))
            .Returns((FundingPeriod)null);

            FundingPeriodService fundingPeriodService = CreateFundingPeriodService(logger: logger, policyRepository: policyRepository);

            // Act
            IActionResult result = await fundingPeriodService.GetFundingPeriodById(fundingPeriodId);

            // Assert
            result
            .Should()
            .BeOfType <NotFoundResult>();

            logger
            .Received(1)
            .Error(Arg.Is($"No funding period was returned for funding period id: '{fundingPeriodId}'"));
        }
        public async Task GetFundingPeriodById__GivenFundingStreamnWasFound_ReturnsSuccess()
        {
            // Arrange
            const string fundingPeriodId = "fp-1";

            FundingPeriod fundingPeriod = new FundingPeriod
            {
                Id = fundingPeriodId
            };

            IPolicyRepository policyRepository = CreatePolicyRepository();

            policyRepository
            .GetFundingPeriodById(Arg.Is(fundingPeriodId))
            .Returns(fundingPeriod);

            FundingPeriodService fundingPeriodService = CreateFundingPeriodService(policyRepository: policyRepository);

            // Act
            IActionResult result = await fundingPeriodService.GetFundingPeriodById(fundingPeriodId);

            // Assert
            result
            .Should()
            .BeOfType <OkObjectResult>()
            .Which
            .Value
            .Should()
            .Be(fundingPeriod);
        }
        public async Task GetFundingPeriodById_GivenFundingStreamIdDoesNotExist_ReturnsBadRequest(string fundingStreamId)
        {
            // Arrange
            ILogger logger = CreateLogger();

            FundingPeriodService fundingPeriodService = CreateFundingPeriodService(logger: logger);

            // Act
            IActionResult result = await fundingPeriodService.GetFundingPeriodById(fundingStreamId);

            // 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 GetFundingPeriodById"));
        }