public When_QualificationService_Is_Called_To_Search_By_Ignored_Words() { var config = new MapperConfiguration(c => c.AddMaps(typeof(QualificationMapper).Assembly)); var mapper = new Mapper(config); _repository = Substitute.For <IRepository <Domain.Models.Qualification> >(); var learningAimReferenceRepository = Substitute.For <IRepository <LearningAimReference> >(); var qualificationRouteMappingRepository = Substitute.For <IRepository <QualificationRouteMapping> >(); var service = new QualificationService(mapper, _repository, qualificationRouteMappingRepository, learningAimReferenceRepository); _searchResult = service.SearchQualificationAsync("the").GetAwaiter().GetResult(); }
private async Task PopulateRoutesForQualificationSearchItem(QualificationSearchViewModel searchResult) { var routes = await _routePathService.GetRouteSummaryAsync(); foreach (var searchResultItem in searchResult.Results) { searchResultItem.Routes = routes.Select(route => new RouteSummaryViewModel { Id = route.Id, IsSelected = searchResultItem.RouteIds.Contains(route.Id), Name = route.Name, Summary = route.Summary }).ToList(); } }
public async Task <IActionResult> SearchQualificationsAsync(QualificationSearchViewModel viewModel) { if (IsValidSearchTerm(viewModel)) { ModelState.AddModelError("SearchTerms", "You must enter 2 or more letters for your search"); } if (!ModelState.IsValid) { return(View("SearchQualifications", viewModel)); } var searchResult = await _qualificationService.SearchQualificationAsync(viewModel.SearchTerms); await PopulateRoutesForQualificationSearchItem(searchResult); return(View("SearchQualifications", searchResult)); }
public When_QualificationService_Is_Called_To_Search_With_No_Results() { var config = new MapperConfiguration(c => c.AddMaps(typeof(QualificationMapper).Assembly)); var mapper = new Mapper(config); var logger = Substitute.For <ILogger <GenericRepository <Domain.Models.Qualification> > >(); using var dbContext = InMemoryDbContext.Create(); dbContext.AddRange(new ValidQualificationListBuilder() .Build()); dbContext.SaveChanges(); var repository = new GenericRepository <Domain.Models.Qualification>(logger, dbContext); var learningAimReferenceRepository = Substitute.For <IRepository <LearningAimReference> >(); var qualificationRouteMappingRepository = Substitute.For <IRepository <QualificationRouteMapping> >(); var service = new QualificationService(mapper, repository, qualificationRouteMappingRepository, learningAimReferenceRepository); _searchResult = service.SearchQualificationAsync("No Qualification Exists").GetAwaiter().GetResult(); }
public When_QualificationService_Is_Called_To_SearchQualifications() { var config = new MapperConfiguration(c => c.AddMaps(typeof(QualificationMapper).Assembly)); var mapper = new Mapper(config); var qlogger = Substitute.For <ILogger <GenericRepository <Domain.Models.Qualification> > >(); var qrmlogger = Substitute.For <ILogger <GenericRepository <QualificationRouteMapping> > >(); using var dbContext = InMemoryDbContext.Create(); dbContext.AddRange(new ValidQualificationListBuilder().Build()); dbContext.AddRange( new QualificationRouteMapping { RouteId = 1, QualificationId = 1 }, new QualificationRouteMapping { RouteId = 1, QualificationId = 2 }, new QualificationRouteMapping { RouteId = 1, QualificationId = 3 }); dbContext.SaveChanges(); var qualificationRepo = new GenericRepository <Domain.Models.Qualification>(qlogger, dbContext); var routeMappingRepo = new GenericRepository <QualificationRouteMapping>(qrmlogger, dbContext); var learningAimReferenceRepository = Substitute.For <IRepository <LearningAimReference> >(); var service = new QualificationService(mapper, qualificationRepo, routeMappingRepo, learningAimReferenceRepository); _searchResults = service.SearchQualificationAsync("Scientific Reasoning").GetAwaiter().GetResult(); }
private static bool IsValidSearchTerm(QualificationSearchViewModel viewModel) { return(viewModel.SearchTerms.IsAllSpecialCharactersOrNumbers() || viewModel.SearchTerms.ToLetter().Length < 2); }