public async Task GetCurrentSpecificationsByFundingPeriodIdAndFundingStreamId_GivenResultsReturned_ReturnsOKObject() { //Arrange Specification spec1 = new Specification { Id = "spec1" }; Specification spec2 = new Specification { Id = "spec2" }; IQueryCollection queryStringValues = new QueryCollection(new Dictionary <string, StringValues> { { "fundingPeriodId", new StringValues(FundingPeriodId) }, { "fundingStreamId", new StringValues(FundingStreamId) } }); HttpRequest request = Substitute.For <HttpRequest>(); request .Query .Returns(queryStringValues); ILogger logger = CreateLogger(); ISpecificationsRepository specificationsRepository = CreateSpecificationsRepository(); specificationsRepository .GetApprovedOrUpdatedSpecificationsByFundingPeriodAndFundingStream(Arg.Is(FundingPeriodId), Arg.Is(FundingStreamId)) .Returns(new[] { spec1, spec2 }); IResultsRepository resultsRepository = CreateResultsRepository(); resultsRepository .SpecificationHasResults(Arg.Is("spec1")) .Returns(true); resultsRepository .SpecificationHasResults(Arg.Is("spec2")) .Returns(true); SpecificationsService service = CreateService(logs: logger, specificationsRepository: specificationsRepository, resultsRepository: resultsRepository); //Act IActionResult result = await service.GetCurrentSpecificationsByFundingPeriodIdAndFundingStreamId(request); //Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult okObjectResult = result as OkObjectResult; IEnumerable <SpecificationSummary> summaries = okObjectResult.Value as IEnumerable <SpecificationSummary>; summaries .Count() .Should() .Be(2); }
public async Task GetApprovedSpecificationsByFundingPeriodIdAndFundingStreamId_GivenFundingStreamIdAndFundingPeriodId_ReturnsSpecificationSummary() { string fundingStreamId = NewRandomString(); string fundingPeriodId = NewRandomString(); string specificationId = NewRandomString(); IMapper mapper = CreateImplementedMapper(); ISpecificationsRepository specificationsRepository = CreateSpecificationsRepository(); IEnumerable <Specification> specifications = NewSpecifications(_ => _.WithId(specificationId)); specificationsRepository .GetApprovedOrUpdatedSpecificationsByFundingPeriodAndFundingStream(fundingPeriodId, fundingStreamId) .Returns(specifications); SpecificationsService service = CreateService( mapper: mapper, specificationsRepository: specificationsRepository); IActionResult result = await service.GetApprovedSpecificationsByFundingPeriodIdAndFundingStreamId(fundingPeriodId, fundingStreamId); result .Should() .BeOfType <OkObjectResult>() .Which .Value .Should() .BeOfType <List <SpecificationSummary> >() .And .NotBeNull(); List <SpecificationSummary> objContent = (List <SpecificationSummary>)((OkObjectResult)result).Value; SpecificationSummary specificationSummary = objContent.FirstOrDefault(); specificationSummary .Should() .NotBeNull(); specificationSummary .Id .Should() .Be(specificationId); }