private static SuggestionsOfRegionByTermAndLanguageIdQuery Query() { var dispatcherMock = new Mock <IQueryDispatcher>(); var query = new SuggestionsOfRegionByTermAndLanguageIdQuery(dispatcherMock.Object); return(query); }
public void HandleAsync_Returns_Task_Of_IEnumerable_Of_Suggestion() { //Arrange var type = typeof(Task <IEnumerable <Suggestion> >); var handler = Handler(); var dispatcherMock = new Mock <IQueryDispatcher>(); var query = new SuggestionsOfRegionByTermAndLanguageIdQuery(dispatcherMock.Object); //Act var result = handler.HandleAsync(query); //Assert Assert.IsInstanceOf(type, result); }
private IQueryable <Suggestion> ProjectionToSuggestions(IQueryable <LocalizedRegion> localizedRegions, SuggestionsOfRegionByTermAndLanguageIdQuery query) { //var regionsToTypes = Source.Where(p => p.ToId > 1 && p.ToId < 8); //var areas = regionsToTypes.Select(p => p.Region); //var localizedAreas = areas.SelectMany(p => p.LocalizedRegions) // .Where(p => p.LanguageId == query.LanguageId); //localizedAreas = localizedAreas.Where(predicate); //localizedAreas = localizedAreas.Where(a => query.Terms.All(p => a.Name.Contains(p))).Take(6); var ids = localizedRegions.Select(p => p.Region).Where(p => p.Subtype.Id > 1 && p.Subtype.Id < 8).Select(p => p.Id); var localizedRegionsInOneLanguage = localizedRegions.Where(p => p.LanguageId == query.LanguageId); var localizedAreas = localizedRegionsInOneLanguage.Where(p => ids.Contains(p.Id)); localizedAreas = query.Terms.Aggregate(localizedAreas, (current, term) => current.Where(p => p.Name.StartsWith(term) || p.Name.Contains(term))); return(ProjectTo <Suggestion>(localizedAreas.Take(6))); }
public override async Task <IEnumerable <Suggestion> > HandleAsync(SuggestionsOfRegionByTermAndLanguageIdQuery query, CancellationToken cancellationToken) { return(await ProjectionToSuggestions(Source, query).ToArrayAsync(cancellationToken)); }