示例#1
0
        public When_OpportunityService_Is_Called_To_Get_Opportunity_Basket_ReferralSingleOnly()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly));
            var mapper = new Mapper(config);

            _opportunityRepository = Substitute.For <IOpportunityRepository>();
            var opportunityItemRepository       = Substitute.For <IRepository <OpportunityItem> >();
            var provisionGapRepository          = Substitute.For <IRepository <ProvisionGap> >();
            var referralRepository              = Substitute.For <IRepository <Domain.Models.Referral> >();
            var googleMapApiClient              = Substitute.For <IGoogleMapApiClient>();
            var opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >();
            var dateTimeProvider = Substitute.For <IDateTimeProvider>();

            var viewModel = new OpportunityBasketViewModelBuilder()
                            .AddReferralItem()
                            .Build();

            _opportunityRepository.GetOpportunityBasketAsync(1).Returns(viewModel);

            var opportunityService = new OpportunityService(mapper, _opportunityRepository, opportunityItemRepository,
                                                            provisionGapRepository, referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            _result = opportunityService.GetOpportunityBasketAsync(1)
                      .GetAwaiter().GetResult();
        }
        public async Task Then_Reasons_Should_Have_Only_Related_To_No_Suitable_Students(
            MatchingDbContext dbContext,
            OpportunityItem opportunityItem,
            IMapper mapper,
            [Frozen] ILogger <OpportunityRepository> logger,
            [Frozen] IRepository <OpportunityItem> opportunityItemRepository,
            [Frozen] IRepository <ProvisionGap> provisionGapRepository,
            [Frozen] IRepository <Domain.Models.Referral> referralRepository,
            [Frozen] IGoogleMapApiClient googleMapApiClient,
            [Frozen] IFileWriter <OpportunityReportDto> opportunityPipelineReportWriter,
            [Frozen] IDateTimeProvider dateTimeProvider
            )
        {
            await SetProvisionGapData(dbContext, opportunityItem, false, true, false);

            var opportunityRepository = new OpportunityRepository(logger, dbContext);

            var sut = new OpportunityService(mapper, opportunityRepository, opportunityItemRepository,
                                             provisionGapRepository, referralRepository, googleMapApiClient,
                                             opportunityPipelineReportWriter, dateTimeProvider);

            var result = await sut.GetOpportunityBasketAsync(opportunityItem.OpportunityId);

            result.ProvisionGapItems.Should().Contain(model => model.OpportunityType == "ProvisionGap").Which.Reason
            .Should().Contain("Providers do not have students doing the right course");

            result.ProvisionGapItems.Should().Contain(model => model.OpportunityType == "ProvisionGap").Which.Reason
            .Should().NotContain("Employer had a bad experience with them");
        }