/// <summary> /// Retrieves the data from Youtube (query: Mr. Bean Videos ), filtered by a filter specification, in an observable collection of YouTubeVideo items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of YouTubeVideo items.</returns> public async Task<ObservableCollection<EntitiesBase.YouTubeVideo>> Search(FilterSpecification filter) { var data = _storageService.Load<EntitiesBase.YouTubeVideo[]>("Microsoft_microsoftvideos"); var searchResults = RepositoriesBase.Filter<EntitiesBase.YouTubeVideo>.FilterCollection(filter, data); if(searchResults == null || !searchResults.Any()) { data = await _youtubeDataSource.LoadRemote<EntitiesBase.YouTubeVideo[]>(String.Format(YoutubeBaseUrl, HttpUtility.UrlEncode(YoutubeQuery))); searchResults = RepositoriesBase.Filter<EntitiesBase.YouTubeVideo>.FilterCollection(filter, data); } return searchResults; }
public async Task <ActionResult <Pagination <GemReturnDTO> > > GetGemsList([FromQuery] GemParams gemParams) { var countSpec = new CountSpecification(gemParams); var filterSpec = new FilterSpecification(gemParams); var gemList = await _repo.GetGemListWithSpec(filterSpec); var itemsCount = await _repo.CountAsync(countSpec); var data = _mapper.Map <IReadOnlyList <Gem>, IReadOnlyList <GemReturnDTO> >(gemList); return(Ok(new Pagination <GemReturnDTO>(gemParams.PageIndex, gemParams.PageSize, itemsCount, data))); }
public async Task <ActionResult <GemReturnDTO> > GetGemById(int id) { var spec = new FilterSpecification(id); var gem = await _repo.GetGemWithSpec(spec); if (gem == null) { return(NotFound()); } return(_mapper.Map <Gem, GemReturnDTO>(gem)); //return await _repo.GetGemById(id); }
public void SholdSupportEqualOperator() { // Given const int value = 10; var entity = new FilterTestEntity { IntField = value }; var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.Equal(i => i.IntField, value))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsTrue(result); }
/// <summary> /// Retrieves the data from Youtube (channel: CNETTV ), filtered by a filter specification, in an observable collection of YouTubeVideo items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of YouTubeVideo items.</returns> public async Task <ObservableCollection <EntitiesBase.YouTubeVideo> > Search(FilterSpecification filter) { var data = _storageService.Load <EntitiesBase.YouTubeVideo[]>("Videos_s5"); var searchResults = RepositoriesBase.Filter <EntitiesBase.YouTubeVideo> .FilterCollection(filter, data); if (searchResults == null || !searchResults.Any()) { data = await _youtubeDataSource.LoadRemote <EntitiesBase.YouTubeVideo[]>(String.Format(YoutubeBaseUrl, HttpUtility.UrlEncode(YoutubeQuery))); searchResults = RepositoriesBase.Filter <EntitiesBase.YouTubeVideo> .FilterCollection(filter, data); } return(searchResults); }
public void SholdSerializeOperator() { // Given var entity = new FilterTestEntity { StringField = "Abc", IntField = 5 }; // Какое-то сложное логическое выражение var specification = new FilterSpecification <FilterTestEntity>( b => b.Or( c => c .And(a => a.Or(o => o .Null(i => i.StringField) .Equal(i => i.StringField, string.Empty)) .Equal(i => i.IntField, 0)) .And(a => a .NotNull(i => i.StringField) .NotEqual(i => i.StringField, string.Empty) .Or(o => o .In(i => i.StringField.ToLower(), new[] { "a", "b", "c" }) .Contains(i => i.StringField.ToLower(), "abc") .StartsWith(i => i.StringField, "1") .EndsWith(i => i.StringField, "5")) .Or(o => o .And(a2 => a2 .GreaterOrEqual(i => i.IntField, 0) .LessOrEqual(i => i.IntField, 10)) .And(a2 => a2 .Greater(i => i.IntField, 10) .Less(i => i.IntField, 20)) .Between(i => i.IntField, 20, 30))))); IFilterOperator operatorFromStream; IFilterOperator operatorToStream = specification.Operator; // When using (var stream = new MemoryStream()) { // Сериализация var serializer = new NetDataContractSerializer(); serializer.Serialize(stream, operatorToStream); stream.Position = 0; // Десериализация operatorFromStream = (IFilterOperator)serializer.ReadObject(stream); } // Then Assert.IsNotNull(operatorFromStream); Assert.AreEqual(operatorToStream.IsSatisfiedBy(entity), operatorFromStream.IsSatisfiedBy(entity)); }
public void ShouldSupportEndsWithOperator() { // Given var entity = new FilterTestEntity { StringField = "12345" }; var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.EndsWith(i => i.StringField, "45"))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsTrue(result); }
public void ShouldSupportNotContainsOperatorForCollection([Range(0, 5)] int value) { // Given var entity = new FilterTestEntity { CollectionField = new[] { 1, 2, 3 } }; var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotContains(i => i.CollectionField, value))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(!entity.CollectionField.Contains(value), result); }
public void ShouldSupportNotBetweenOperator([Range(0, 5)] int value) { // Given var entity = new FilterTestEntity { IntField = value }; var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotBetween(i => i.IntField, 1, 4))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(!(entity.IntField >= 1 && entity.IntField <= 4), result); }
public void ShouldSupportLessOrEqualOperator([Range(0, 5)] int value) { // Given var entity = new FilterTestEntity { IntField = 3 }; var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.LessOrEqual(i => i.IntField, value))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(entity.IntField <= value, result); }
public void ShouldSupportNotContainsOperatorForString() { // Given var entity = new FilterTestEntity { StringField = "54321" }; var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotContains(i => i.StringField, "234"))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsTrue(result); }
public void ShouldSupportNotNullOperator() { // Given var entity = new FilterTestEntity { StringField = "NotNull" }; var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotNull(i => i.StringField))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsTrue(result); }
public void SholdSerializeOperator() { // Given var entity = new FilterTestEntity { StringField = "Abc", IntField = 5 }; // Какое-то сложное логическое выражение var specification = new FilterSpecification<FilterTestEntity>( b => b.Or( c => c .And(a => a.Or(o => o .Null(i => i.StringField) .Equal(i => i.StringField, string.Empty)) .Equal(i => i.IntField, 0)) .And(a => a .NotNull(i => i.StringField) .NotEqual(i => i.StringField, string.Empty) .Or(o => o .In(i => i.StringField.ToLower(), new[] { "a", "b", "c" }) .Contains(i => i.StringField.ToLower(), "abc") .StartsWith(i => i.StringField, "1") .EndsWith(i => i.StringField, "5")) .Or(o => o .And(a2 => a2 .GreaterOrEqual(i => i.IntField, 0) .LessOrEqual(i => i.IntField, 10)) .And(a2 => a2 .Greater(i => i.IntField, 10) .Less(i => i.IntField, 20)) .Between(i => i.IntField, 20, 30))))); IFilterOperator operatorFromStream; IFilterOperator operatorToStream = specification.Operator; // When using (var stream = new MemoryStream()) { // Сериализация var serializer = new NetDataContractSerializer(); serializer.Serialize(stream, operatorToStream); stream.Position = 0; // Десериализация operatorFromStream = (IFilterOperator)serializer.ReadObject(stream); } // Then Assert.IsNotNull(operatorFromStream); Assert.AreEqual(operatorToStream.IsSatisfiedBy(entity), operatorFromStream.IsSatisfiedBy(entity)); }
public void ShouldSupportNotInOperator([Range(0, 5)] int value) { // Given var set = new[] { 1, 2, 3 }; var entity = new FilterTestEntity { IntField = value }; var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotIn(i => i.IntField, set))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(!set.Contains(value), result); }
public void SholdSupportNotEqualOperator() { // Given const int value = 10; var entity = new FilterTestEntity { IntField = value + 1 }; var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotEqual(i => i.IntField, value))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsTrue(result); }
public List <TEntity> GetAll(FilterSpecification <TEntity> spec = null, Func <IQueryable <TEntity>, IIncludableQueryable <TEntity, object> > include = null) { IQueryable <TEntity> query = _ctx.Set <TEntity>(); if (include != null) { query = include(query); } if (spec != null) { query = query.Where(spec); } return(query.ToList()); }
/// <summary> /// Called when the page becomes the active page. /// </summary> /// <param name="e">Contains information about the navigation done.</param> protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); string currentId; if (NavigationContext.QueryString.TryGetValue("currentID", out currentId)) { var dataSource = new Ioc.Container().Resolve<Repositories.Icostumes_suitsCollection>(); AddHomeAppBarButton(); var pinnedItemSpec = new FilterSpecification().AddPredicate("Id", ColumnOperatorEnum.Equals, currentId); var pinnedItem = dataSource.Search(pinnedItemSpec).FirstOrDefault(); if(pinnedItem==null) MessageBox.Show(Localization.AppResources.PinError); ((IViewModels.Icostumes_DetailViewModel)DataContext).CurrentsuitsCollectionSchema = pinnedItem; } }
/// <summary> /// Called when the page becomes the active page. /// </summary> /// <param name="e">Contains information about the navigation done.</param> protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); string currentId; if (NavigationContext.QueryString.TryGetValue("currentID", out currentId)) { var dataSource = new Ioc.Container().Resolve<Repositories.Imoviebuzz_reviewsDataSource>(); AddHomeAppBarButton(); var pinnedItemSpec = new FilterSpecification().AddPredicate("Title", ColumnOperatorEnum.Equals, currentId); var pinnedItem = (await dataSource.Search(pinnedItemSpec)).FirstOrDefault(); if(pinnedItem==null) MessageBox.Show(Localization.AppResources.PinError); ((IViewModels.Imoviebuzz_DetailViewModel)DataContext).CurrentRssSearchResult = pinnedItem; } }
public async Task <List <TEntity> > GetAllAsync(FilterSpecification <TEntity> spec = null, Func <IQueryable <TEntity>, IIncludableQueryable <TEntity, object> > include = null) { IQueryable <TEntity> query = _ctx.Set <TEntity>(); if (include != null) { query = include(query); } if (spec != null) { query = query.Where(spec); } return(await query.AsNoTracking().ToListAsync()); }
/// <summary> /// Called when the page becomes the active page. /// </summary> /// <param name="e">Contains information about the navigation done.</param> protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); string currentId; if (NavigationContext.QueryString.TryGetValue("currentID", out currentId)) { var dataSource = new Ioc.Container().Resolve<Repositories.IYoutube_YoutubeChannel>(); AddHomeAppBarButton(); var pinnedItemSpec = new FilterSpecification().AddPredicate("VideoId", ColumnOperatorEnum.Equals, currentId); var pinnedItem = (await dataSource.Search(pinnedItemSpec)).FirstOrDefault(); if(pinnedItem==null) MessageBox.Show(Localization.AppResources.PinError); ((IViewModels.IYoutube_DetailVideosViewModel)DataContext).CurrentYouTubeVideo = pinnedItem; } MyToolkit.Multimedia.YouTube.CancelPlay(); }
/// <summary> /// Called when the page becomes the active page. /// </summary> /// <param name="e">Contains information about the navigation done.</param> protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); string currentId; if (NavigationContext.QueryString.TryGetValue("currentID", out currentId)) { var dataSource = new Ioc.Container().Resolve <Repositories.ICnetNEWS_s4>(); AddHomeAppBarButton(); var pinnedItemSpec = new FilterSpecification().AddPredicate("Title", ColumnOperatorEnum.Equals, currentId); var pinnedItem = (await dataSource.Search(pinnedItemSpec)).FirstOrDefault(); if (pinnedItem == null) { MessageBox.Show(Localization.AppResources.PinError); } ((IViewModels.ICnetNEWS_DetailViewModel)DataContext).CurrentRssSearchResult = pinnedItem; } }
public virtual async Task <PagedList <TDto> > SearchAsync( IncludeSpecification <TDto> includeSpecification, FilterSpecification <TDto> filterSpecification, OrderBySpecification <TDto> orderBySpecification, int?pageNo = null, int?pageSize = null, bool getFullGraph = false, CancellationToken cancellationToken = default(CancellationToken)) { await AuthorizeResourceOperationAsync(ResourceCollectionsCore.CRUD.Operations.Read, ResourceCollectionsCore.CRUD.Operations.ReadOwner); var filterConverted = filterSpecification.Map <TEntity>(Mapper); if (!OrderByMapper.ValidOrderByFor <TDto, TEntity>(orderBySpecification.OrderByString)) { throw new BadRequestError(Messages.OrderByInvalid); } //Ideally OrderByMapper could also convert Expressions but it only handles strings. var orderByConverted = string.IsNullOrEmpty(orderBySpecification.OrderByString) ? orderBySpecification.Map <TEntity>(Mapper) : orderBySpecification.Map <TEntity>(OrderByMapper); var includesConverted = includeSpecification.Map <TEntity>(Mapper); int?skip = null; if (pageNo.HasValue && pageSize.HasValue) { skip = (pageNo.Value - 1) * pageSize.Value; } var entityList = await Repository.SpecificationQuery(includesConverted, filterConverted, orderByConverted, skip, pageSize, GetFullGraph || getFullGraph).ToCountListAsync(cancellationToken).ConfigureAwait(false); var entities = entityList.ToList(); foreach (var entity in entities) { await AuthorizeResourceOperationAsync(entity, ResourceCollectionsCore.CRUD.Operations.Read, ResourceCollectionsCore.CRUD.Operations.ReadOwner); } var dtoList = new PagedList <TDto>(entities.Select(Mapper.Map <TEntity, TDto>).ToList(), entityList.TotalCount, pageNo ?? 1, pageSize ?? entityList.TotalCount); return(dtoList); }
public void ShouldBuildOperatorDuringTheCall() { // Given var entity = new FilterTestEntity(); var operatorMock = new Mock <IFilterOperator>(); operatorMock.Setup(o => o.CreateFilter()).Returns((Expression <Func <FilterTestEntity, bool> >)(item => true)); var specification = new FilterSpecification <FilterTestEntity>(b => operatorMock.Object); // When specification.IsSatisfiedBy(entity); specification.IsSatisfiedBy(entity); specification.IsSatisfiedBy(entity); // Then operatorMock.Verify(o => o.CreateFilter(), Times.Exactly(3)); }
public async Task <IEnumerable <Tour> > Search(int?peopleCount, FilterSpecification <Tour> filter, SearchOrder?order, CancellationToken cancellation = default) { var cancelSource = CancellationTokenSource.CreateLinkedTokenSource(cancellation); var searchTasks = searchers.Select(searcher => Task.Run(() => searcher.Search(peopleCount, filter, order, cancelSource.Token))).ToArray(); await Task.WhenAny(Task.WhenAll(searchTasks), Task.Delay(SearchTimeout)); cancelSource.Cancel(); var answers = searchTasks.Where(task => task.IsCompleted && !task.IsFaulted).Select(task => task.Result).ToArray(); if (!answers.Any()) { throw new TimeoutException($"Ни один из ISearchService-ов не ответил за время {SearchTimeout})"); } return(answers.SelectMany(answer => answer) .GroupBy(tour => new { HotelId = tour.Hotel.Id, StartCityId = tour.StartCity.Id, tour.StartDate, tour.StartHotelDate, tour.Days, tour.RoomKind }) .Select(group => MinPriceTour(group)) .OrderBy(order) .ToArray()); }
public void SpecificationEqualTest() { var filters = new List <FilterModel>(); var filter = new FilterModel { FieldName = "Name", FilterType = FilterType.Text }; var condition = new Condition { FilterType = FilterType.Text, ConditionType = ConditionType.Equals, Value = "s" }; filter.Conditions.Add(condition); filters.Add(filter); var spec = FilterSpecification <Customer> .Create(filters); var expression = spec.ToExpression(); Assert.Equal("(x.Name == \"s\")", expression.Body.ToString()); }
public static ObservableCollection <T> FilterCollection(FilterSpecification filter, IEnumerable <T> data) { IQueryable <T> query = data.AsQueryable(); foreach (var predicate in filter.Predicates) { Func <T, bool> expression; var predicateAux = predicate; switch (predicate.Operator) { case ColumnOperatorEnum.Contains: expression = x => predicateAux.GetFieldValue(x).ToLower().Contains(predicateAux.Value.ToString().ToLower()); break; case ColumnOperatorEnum.StartsWith: expression = x => predicateAux.GetFieldValue(x).ToLower().StartsWith(predicateAux.Value.ToString().ToLower()); break; case ColumnOperatorEnum.GreaterThan: expression = x => String.Compare(predicateAux.GetFieldValue(x).ToLower(), predicateAux.Value.ToString().ToLower(), StringComparison.Ordinal) > 0; break; case ColumnOperatorEnum.LessThan: expression = x => String.Compare(predicateAux.GetFieldValue(x).ToLower(), predicateAux.Value.ToString().ToLower(), StringComparison.Ordinal) < 0; break; case ColumnOperatorEnum.NotEquals: expression = x => !predicateAux.GetFieldValue(x).Equals(predicateAux.Value.ToString(), StringComparison.InvariantCultureIgnoreCase); break; default: expression = x => predicateAux.GetFieldValue(x).Equals(predicateAux.Value.ToString(), StringComparison.InvariantCultureIgnoreCase); break; } query = query.Where(expression).AsQueryable(); } return(new ObservableCollection <T>(query)); }
public void ShouldSupportComplexConditions([Range(0, 3)] int intField, [Range(0, 3)] int stringField) { // Given var entity = new FilterTestEntity { IntField = intField, StringField = stringField.ToString() }; var specification = new FilterSpecification <FilterTestEntity>( f => f.And(c => c .NotNull(i => i.StringField) .In(i => i.IntField, new[] { 1, 2 }) .Or(or1 => or1.Equal(i => i.IntField, 1).StartsWith(i => i.StringField, "1")) .Or(or2 => or2.Equal(i => i.IntField, 2).StartsWith(i => i.StringField, "2")))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(entity.StringField != null && new[] { 1, 2 }.Contains(entity.IntField) && (entity.IntField == 1 || entity.StringField == "1") && (entity.IntField == 2 || entity.StringField == "2") , result); }
public void SpecificationEqualNuallableGuidTest() { var filters = new List <FilterModel>(); var filter = new FilterModel { FieldName = "IdNullable", FilterType = FilterType.Text }; var condition = new Condition { FilterType = FilterType.Text, ConditionType = ConditionType.Equals, Value = Guid.Parse("30b423e0-c928-46a7-8ef6-a3089d673935") }; filter.Conditions.Add(condition); filters.Add(filter); var spec = FilterSpecification <Customer> .Create(filters); var expression = spec.ToExpression(); Assert.Equal("(Convert(x.IdNullable, Object).ToString() == \"30b423e0-c928-46a7-8ef6-a3089d673935\")", expression.Body.ToString()); }
public void SpecificationNestedLessThanOrEqualDecimalTest() { var filters = new List <FilterModel>(); var filter = new FilterModel { FieldName = "payment.cost", FilterType = FilterType.Text }; var condition = new Condition { FilterType = FilterType.Text, ConditionType = ConditionType.LessThanOrEqual, Value = 5 }; filter.Conditions.Add(condition); filters.Add(filter); var spec = FilterSpecification <Order> .Create(filters); var expression = spec.ToExpression(); Assert.Equal("(x.Payment.Cost <= Convert(5, Decimal))", expression.Body.ToString()); }
public void SpecificationStringFromListTest() { var filters = new List <FilterModel>(); var filter = new FilterModel { FieldName = "Orders[Payment.Id]", FilterType = FilterType.Text }; var condition = new Condition { FilterType = FilterType.Text, ConditionType = ConditionType.Equals, Value = "value" }; filter.Conditions.Add(condition); filters.Add(filter); var spec = FilterSpecification <Customer> .Create(filters); var expression = spec.ToExpression(); Assert.Equal("x.Orders.Any(i => (i.Payment.Id == \"value\"))", expression.Body.ToString()); }
public IReadOnlyList <AudioBook> List(FilterSpecification <AudioBook> filterSpecification) { return(this.bookContext.AudioBooks.Where(filterSpecification).ToList()); }
/// <summary> /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of makeupfeed_RssSearchResult items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of RssSearchResult items.</returns> public async Task<ObservableCollection<EntitiesBase.RssSearchResult>> Search(FilterSpecification filter) { return RepositoriesBase.Filter<EntitiesBase.RssSearchResult>.FilterCollection(filter, await GetData()); }
/// <summary> /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of specialplacesCollectionSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of specialplacesCollectionSchema items.</returns> public ObservableCollection <Entities.specialplacesCollectionSchema> Search(FilterSpecification filter) { return(RepositoriesBase.Filter <Entities.specialplacesCollectionSchema> .FilterCollection(filter, GetData())); }
/// <summary> /// Retrieves the data from a RSS data source (http://windowsvj.com/wpblog/feed/rss/), filtered by a filter specification, in an observable collection of RssSearchResult items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of RssSearchResult items.</returns> public async Task<ObservableCollection<RssSearchResult>> Search(FilterSpecification filter) { var data = await LoadData(); return Filter<RssSearchResult>.FilterCollection(filter, data); }
/// <summary> /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of StatisticsSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of StatisticsSchema items.</returns> public ObservableCollection <Entities.StatisticsSchema> Search(FilterSpecification filter) { return(RepositoriesBase.Filter <Entities.StatisticsSchema> .FilterCollection(filter, _data)); }
public void ShouldSupportLessOrEqualOperator([Range(0, 5)] int value) { // Given var entity = new FilterTestEntity { IntField = 3 }; var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.LessOrEqual(i => i.IntField, value))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(entity.IntField <= value, result); }
/// <summary> /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of photosCollectionSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of photosCollectionSchema items.</returns> public ObservableCollection <photosCollectionSchema> Search(FilterSpecification filter) { return(Filter <photosCollectionSchema> .FilterCollection(filter, _data)); }
public void ShouldSupportNotInOperator([Range(0, 5)] int value) { // Given var set = new[] { 1, 2, 3 }; var entity = new FilterTestEntity { IntField = value }; var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.NotIn(i => i.IntField, set))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(!set.Contains(value), result); }
public void ShouldSupportNullable() { // Given var entity = new FilterTestEntity { NullableIntField = 1 }; var specification = new FilterSpecification<FilterTestEntity>( builder => builder.Or(condition => condition .Equal(i => i.NullableIntField, 10) .NotEqual(i => i.NullableIntField, 1) .Greater(i => i.NullableIntField, 10) .GreaterOrEqual(i => i.NullableIntField, 10) .Less(i => i.NullableIntField, 0) .LessOrEqual(i => i.NullableIntField, 0) .In(i => i.NullableIntField, new int?[] { 0, 2, 4 }) .NotIn(i => i.NullableIntField, new int?[] { 1, 3, 5 }) .Between(i => i.NullableIntField, 5, 10) .NotBetween(i => i.NullableIntField, 0, 5))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsFalse(result); }
public void ShouldSupportNullOperator() { // Given var entity = new FilterTestEntity { StringField = null }; var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.Null(i => i.StringField))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsTrue(result); }
public void ShouldSupportStartsWithOperator() { // Given var entity = new FilterTestEntity { StringField = "12345" }; var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.StartsWith(i => i.StringField, "12"))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsTrue(result); }
/// <summary> /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of RSSDataSource_RssSearchResult items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of RssSearchResult items.</returns> public async Task<ObservableCollection<RssSearchResult>> Search(FilterSpecification filter) { return Filter<RssSearchResult>.FilterCollection(filter, await GetData()); }
public void ShouldSupportNotBetweenOperator([Range(0, 5)] int value) { // Given var entity = new FilterTestEntity { IntField = value }; var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.NotBetween(i => i.IntField, 1, 4))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(!(entity.IntField >= 1 && entity.IntField <= 4), result); }
public void ShouldSupportNotContainsOperatorForString() { // Given var entity = new FilterTestEntity { StringField = "54321" }; var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.NotContains(i => i.StringField, "234"))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.IsTrue(result); }
/// <summary> /// Retrieves the data from Youtube (channel: gadgtspot ), filtered by a filter specification, in an observable collection of YouTubeVideo items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of YouTubeVideo items.</returns> public async Task<ObservableCollection<EntitiesBase.YouTubeVideo>> Search(FilterSpecification filter) { var data = await GetData(0); return RepositoriesBase.Filter<EntitiesBase.YouTubeVideo>.FilterCollection(filter, data); }
/// <summary> /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of awardsSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of awardsSchema items.</returns> public ObservableCollection<awardsSchema> Search(FilterSpecification filter) { return Filter<awardsSchema>.FilterCollection(filter, GetData()); }
public void ShouldSupportNotContainsOperatorForCollection([Range(0, 5)] int value) { // Given var entity = new FilterTestEntity { CollectionField = new[] { 1, 2, 3 } }; var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.NotContains(i => i.CollectionField, value))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(!entity.CollectionField.Contains(value), result); }
public void ShouldSupportComplexConditions([Range(0, 3)] int intField, [Range(0, 3)] int stringField) { // Given var entity = new FilterTestEntity { IntField = intField, StringField = stringField.ToString() }; var specification = new FilterSpecification<FilterTestEntity>( f => f.And(c => c .NotNull(i => i.StringField) .In(i => i.IntField, new[] { 1, 2 }) .Or(or1 => or1.Equal(i => i.IntField, 1).StartsWith(i => i.StringField, "1")) .Or(or2 => or2.Equal(i => i.IntField, 2).StartsWith(i => i.StringField, "2")))); // When var result = specification.IsSatisfiedBy(entity); // Then Assert.AreEqual(entity.StringField != null && new[] { 1, 2 }.Contains(entity.IntField) && (entity.IntField == 1 || entity.StringField == "1") && (entity.IntField == 2 || entity.StringField == "2") , result); }
/// <summary> /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of videosDataSource_Video items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of YouTubeVideo items.</returns> public async Task<ObservableCollection<YouTubeVideo>> Search(FilterSpecification filter) { return Filter<YouTubeVideo>.FilterCollection(filter, await GetData()); }
/// <summary> /// Retrieves the data from a RSS data source (http://www.dandandin.it/Blog/RSS.aspx?p=1~2~-1&r=f3a58073-d9c8-496e-af7b-f4ee2ae8dd40), filtered by a filter specification, in an observable collection of RssSearchResult items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of RssSearchResult items.</returns> public async Task <ObservableCollection <EntitiesBase.RssSearchResult> > Search(FilterSpecification filter) { var data = await GetData(); return(RepositoriesBase.Filter <EntitiesBase.RssSearchResult> .FilterCollection(filter, data)); }
/// <summary> /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of monumentsCollectionSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of monumentsCollectionSchema items.</returns> public ObservableCollection<monumentsCollectionSchema> Search(FilterSpecification filter) { return Filter<monumentsCollectionSchema>.FilterCollection(filter, _data); }
public void ShouldBuildOperatorDuringTheCall() { // Given var entity = new FilterTestEntity(); var operatorMock = new Mock<IFilterOperator>(); operatorMock.Setup(o => o.CreateFilter()).Returns((Expression<Func<FilterTestEntity, bool>>)(item => true)); var specification = new FilterSpecification<FilterTestEntity>(b => operatorMock.Object); // When specification.IsSatisfiedBy(entity); specification.IsSatisfiedBy(entity); specification.IsSatisfiedBy(entity); // Then operatorMock.Verify(o => o.CreateFilter(), Times.Exactly(3)); }
/// <summary> /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of ThaiSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of ThaiSchema items.</returns> public ObservableCollection<Entities.ThaiSchema> Search(FilterSpecification filter) { return RepositoriesBase.Filter<Entities.ThaiSchema>.FilterCollection(filter, GetData()); }
/// <summary> /// Retrieves the data from Youtube (query: nationalfootballleage ), filtered by a filter specification, in an observable collection of YouTubeVideo items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of YouTubeVideo items.</returns> public async Task<ObservableCollection<YouTubeVideo>> Search(FilterSpecification filter) { var data = await LoadData(1); return Filter<YouTubeVideo>.FilterCollection(filter, data); }
/// <summary> /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of PeopleCollectionSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of PeopleCollectionSchema items.</returns> public ObservableCollection <PeopleCollectionSchema> Search(FilterSpecification filter) { return(Filter <PeopleCollectionSchema> .FilterCollection(filter, GetData())); }
/// <summary> /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of INTERSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of INTERSchema items.</returns> public ObservableCollection<Entities.INTERSchema> Search(FilterSpecification filter) { return RepositoriesBase.Filter<Entities.INTERSchema>.FilterCollection(filter, _data); }
/// <summary> /// Retrieves the data from Flickr public data source (Query: 93527926@N06), filtered by a filter specification, in an observable collection of FlickrSearchResult items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of FlickrSearchResult items.</returns> public async Task<ObservableCollection<EntitiesBase.FlickrSearchResult>> Search(FilterSpecification filter) { var data = await GetData(); return RepositoriesBase.Filter<EntitiesBase.FlickrSearchResult>.FilterCollection(filter, data); }
/// <summary> /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of specialplacesCollectionSchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of specialplacesCollectionSchema items.</returns> public ObservableCollection<specialplacesCollectionSchema> Search(FilterSpecification filter) { return Filter<specialplacesCollectionSchema>.FilterCollection(filter, _data); }
/// <summary> /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of diarySchema items. /// </summary> /// <param name="filter">Filter operation specification</param> /// <returns>An observable collection of diarySchema items.</returns> public ObservableCollection<diarySchema> Search(FilterSpecification filter) { return Filter<diarySchema>.FilterCollection(filter, _data); }