public When_Proximity_BackFillProviderPostTown_Function_Fires() { var opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >(); _providerVenueRepository = Substitute.For <IRepository <ProviderVenue> >(); _providerVenueRepository.GetManyAsync(Arg.Any <Expression <Func <ProviderVenue, bool> > >()) .Returns(new List <ProviderVenue> { new ProviderVenue { Postcode = "CV1 2WT", Town = null } }.AsQueryable()); _functionLogRepository = Substitute.For <IRepository <FunctionLog> >(); _googleMapsApiClient = Substitute.For <IGoogleMapApiClient>(); _googleMapsApiClient.GetAddressDetailsAsync("CV1 2WT").Returns("Coventry"); var locationApiClient = Substitute.For <ILocationApiClient>(); var proximityFunctions = new Functions.Proximity( locationApiClient, _googleMapsApiClient, opportunityItemRepository, _providerVenueRepository, _functionLogRepository); proximityFunctions.BackFillProviderPostTownAsync( new TimerInfo(new ConstantSchedule(TimeSpan.Zero), null), new ExecutionContext(), new NullLogger <Functions.Proximity>() ).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"); }
public ProviderVenueService(IMapper mapper, IProviderVenueRepository providerVenueRepository, ILocationApiClient locationApiClient, IGoogleMapApiClient googleMapApiClient) { _mapper = mapper; _locationApiClient = locationApiClient; _googleMapApiClient = googleMapApiClient; _providerVenueRepository = providerVenueRepository; }
public Proximity( ILocationApiClient locationApiClient, IGoogleMapApiClient googleMapApiClient, IRepository <OpportunityItem> opportunityItemRepository, IRepository <ProviderVenue> providerVenueRepository, IRepository <FunctionLog> functionLogRepository) { _googleMapApiClient = googleMapApiClient; _locationApiClient = locationApiClient; _opportunityItemRepository = opportunityItemRepository; _providerVenueRepository = providerVenueRepository; _functionLogRepository = functionLogRepository; }
public OpportunityService( IMapper mapper, IOpportunityRepository opportunityRepository, IRepository <OpportunityItem> opportunityItemRepository, IRepository <ProvisionGap> provisionGapRepository, IRepository <Referral> referralRepository, IGoogleMapApiClient googleMapApiClient, IFileWriter <OpportunityReportDto> opportunityPipelineReportWriter, IDateTimeProvider dateTimeProvider) { _mapper = mapper; _opportunityRepository = opportunityRepository; _opportunityItemRepository = opportunityItemRepository; _provisionGapRepository = provisionGapRepository; _referralRepository = referralRepository; _googleMapApiClient = googleMapApiClient; _opportunityPipelineReportWriter = opportunityPipelineReportWriter; _dateTimeProvider = dateTimeProvider; }
public When_ProviderVenueService_Is_Called_To_Create_Venue() { var httpContextAccessor = Substitute.For <IHttpContextAccessor>(); var config = new MapperConfiguration(c => { c.AddMaps(typeof(ProviderVenueMapper).Assembly); c.ConstructServicesUsing(type => type.Name.Contains("LoggedInUserEmailResolver") ? new LoggedInUserEmailResolver <AddProviderVenueViewModel, Domain.Models.ProviderVenue>(httpContextAccessor) : type.Name.Contains("LoggedInUserNameResolver") ? (object)new LoggedInUserNameResolver <AddProviderVenueViewModel, Domain.Models.ProviderVenue>(httpContextAccessor) : type.Name.Contains("UtcNowResolver") ? new UtcNowResolver <AddProviderVenueViewModel, Domain.Models.ProviderVenue>(new DateTimeProvider()) : null); }); var mapper = new Mapper(config); _providerVenueRepository = Substitute.For <IProviderVenueRepository>(); _providerVenueRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.ProviderVenue, bool> > >()) .Returns(new Domain.Models.ProviderVenue()); _locationApiClient = Substitute.For <ILocationApiClient>(); _locationApiClient.GetGeoLocationDataAsync(UnFormattedPostcode, true).Returns(new PostcodeLookupResultDto { Postcode = FormattedPostcode, Longitude = "1.2", Latitude = "1.2" }); _googleMapApiClient = Substitute.For <IGoogleMapApiClient>(); _googleMapApiClient.GetAddressDetailsAsync(Arg.Is <string>(s => s == FormattedPostcode)).Returns("Coventry"); var providerVenueService = new ProviderVenueService(mapper, _providerVenueRepository, _locationApiClient, _googleMapApiClient); var viewModel = new AddProviderVenueViewModel { Postcode = UnFormattedPostcode }; providerVenueService.CreateVenueAsync(viewModel).GetAwaiter().GetResult(); }
public When_OpportunityService_Is_Called_To_Create_Opportunity_Item() { 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 <OpportunityItemDto, OpportunityItem>(httpContextAccessor) : type.Name.Contains("LoggedInUserNameResolver") ? (object)new LoggedInUserNameResolver <OpportunityItemDto, OpportunityItem>(httpContextAccessor) : type.Name.Contains("UtcNowResolver") ? new UtcNowResolver <OpportunityItemDto, OpportunityItem>(new DateTimeProvider()) : null); }); var mapper = new Mapper(config); _opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >(); _googleMapApiClient = Substitute.For <IGoogleMapApiClient>(); _googleMapApiClient.GetAddressDetailsAsync(Arg.Is <string>(s => s == "AA1 1AA")).Returns("Coventry"); var opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >(); var dateTimeProvider = Substitute.For <IDateTimeProvider>(); var opportunityRepository = Substitute.For <IOpportunityRepository>(); var provisionGapRepository = Substitute.For <IRepository <ProvisionGap> >(); var referralRepository = Substitute.For <IRepository <Domain.Models.Referral> >(); _opportunityItemRepository.CreateAsync(Arg.Any <OpportunityItem>()) .Returns(OpportunityItemId); var opportunityService = new OpportunityService(mapper, opportunityRepository, _opportunityItemRepository, provisionGapRepository, referralRepository, _googleMapApiClient, opportunityPipelineReportWriter, dateTimeProvider); var dto = new OpportunityItemDto { OpportunityId = OpportunityId, OpportunityType = OpportunityType.Referral, RouteId = 5, Postcode = "AA1 1AA", SearchRadius = 10, JobRole = "Test Title", PlacementsKnown = true, Placements = 3, SearchResultProviderCount = 15, IsSaved = true, IsSelectedForReferral = true, IsCompleted = true, EmployerFeedbackSent = true }; _result = opportunityService.CreateOpportunityItemAsync(dto).GetAwaiter().GetResult(); }