public When_OpportunityService_Is_Called_To_Get_Placement_Information_With_Provision_Gap()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly));
            var mapper = new Mapper(config);

            var opportunityRepository = Substitute.For <IOpportunityRepository>();

            _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 dto = new OpportunityItemBuilder()
                      .AddProvisionGap()
                      .AddEmployer()
                      .Build();

            _opportunityItemRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <OpportunityItem, bool> > >(),
                                                               Arg.Any <Expression <Func <OpportunityItem, object> > >(),
                                                               Arg.Any <Expression <Func <OpportunityItem, object> > >(),
                                                               Arg.Any <Expression <Func <OpportunityItem, object> > >())
            .Returns(dto);

            var opportunityService = new OpportunityService(mapper, opportunityRepository, _opportunityItemRepository,
                                                            provisionGapRepository, referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            _result = opportunityService.GetPlacementInformationAsync(1)
                      .GetAwaiter().GetResult();
        }
        public When_OpportunityService_Is_Called_To_Save_PlacementInformation_With_Empty_Job_Title()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly));
            var mapper = new Mapper(config);

            _opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >();
            var opportunityRepository           = Substitute.For <IOpportunityRepository>();
            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 opportunityItem = new OpportunityItem {
                Id = OpportunityItemId, Postcode = Postcode, SearchRadius = Distance, RouteId = RouteId
            };

            _opportunityItemRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <OpportunityItem, bool> > >()).Returns(opportunityItem);

            var opportunityService = new OpportunityService(mapper, opportunityRepository, _opportunityItemRepository,
                                                            provisionGapRepository, referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            var dto = new PlacementInformationSaveDto
            {
                OpportunityItemId = OpportunityItemId,
                JobRole           = JobRole,
                PlacementsKnown   = PlacementsKnown,
                Placements        = Placements
            };

            opportunityService.UpdateOpportunityItemAsync(dto).GetAwaiter().GetResult();
        }
示例#3
0
        public When_Placement_Information_Loaded()
        {
            var dto = new PlacementInformationSaveDto
            {
                OpportunityId       = OpportunityId,
                OpportunityItemId   = OpportunityItemId,
                JobRole             = JobRole,
                OpportunityType     = OpportunityType.Referral,
                CompanyName         = CompanyName,
                CompanyNameAka      = CompanyNameAka,
                PlacementsKnown     = PlacementsKnown,
                Placements          = Placements,
                NoSuitableStudent   = true,
                HadBadExperience    = true,
                ProvidersTooFarAway = true
            };

            var config = new MapperConfiguration(c => c.AddMaps(typeof(PlacementInformationSaveDtoMapper).Assembly));
            var mapper = new Mapper(config);

            _opportunityService = Substitute.For <IOpportunityService>();
            _opportunityService.GetPlacementInformationAsync(OpportunityItemId).Returns(dto);

            var opportunityController = new OpportunityController(_opportunityService, mapper);

            _result = opportunityController.GetPlacementInformationAsync(OpportunityItemId).GetAwaiter().GetResult();
        }
        public async Task UpdateProvisionGapAsync(PlacementInformationSaveDto dto)
        {
            var provisionGap = await _provisionGapRepository.GetSingleOrDefaultAsync(p => p.OpportunityItemId == dto.OpportunityItemId);

            if (provisionGap != null)
            {
                provisionGap = _mapper.Map(dto, provisionGap);
                await _provisionGapRepository.UpdateAsync(provisionGap);
            }
        }
示例#5
0
        public When_OpportunityService_Is_Called_To_Update_ProvisionGap()
        {
            var httpContextAccessor = Substitute.For <IHttpContextAccessor>();

            httpContextAccessor.HttpContext.Returns(new DefaultHttpContext
            {
                User = new ClaimsPrincipal(new ClaimsIdentity(new[]
                {
                    new Claim(ClaimTypes.GivenName, "adminUserName")
                }))
            });

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(OpportunityMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserEmailResolver") ?
                                         new LoggedInUserEmailResolver <PlacementInformationSaveDto, ProvisionGap>(httpContextAccessor) :
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <PlacementInformationSaveDto, ProvisionGap>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <PlacementInformationSaveDto, ProvisionGap>(new DateTimeProvider()) :
                                         null);
            });

            var mapper = new Mapper(config);

            var opportunityRepository     = Substitute.For <IOpportunityRepository>();
            var opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >();

            _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>();

            _provisionGapRepository
            .GetSingleOrDefaultAsync(Arg.Any <Expression <Func <ProvisionGap, bool> > >())
            .Returns(new ValidProvisionGapBuilder().Build());

            var opportunityService = new OpportunityService(mapper, opportunityRepository, opportunityItemRepository,
                                                            _provisionGapRepository, referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            var dto = new PlacementInformationSaveDto
            {
                OpportunityId             = 1,
                OpportunityItemId         = 1,
                OpportunityType           = OpportunityType.ProvisionGap,
                SearchResultProviderCount = 0,
                JobRole             = "Junior Tester",
                PlacementsKnown     = false,
                NoSuitableStudent   = true,
                HadBadExperience    = true,
                ProvidersTooFarAway = true,
                ModifiedBy          = "TestUser",
                ModifiedOn          = new DateTime(2019, 1, 1)
            };

            opportunityService.UpdateProvisionGapAsync(dto).GetAwaiter().GetResult();
        }