public void TestFilterGreaterOrEquals() { var filterOption = new ColumnFilterValue { ColumnName = "Created", FilterType = GridFilterType.GreaterThanOrEquals, FilterValue = "2002-05-01" }; var filterOptions = new List <ColumnFilterValue>(); filterOptions.Add(filterOption); var filter = new DefaultColumnFilter <TestModel, DateTime>(m => m.Created); var filtered = filter.ApplyFilter(_repo.GetAll().AsQueryable(), filterOptions); var original = _repo.GetAll().AsQueryable().Where(t => t.Created >= new DateTime(2002, 5, 1)); for (int i = 0; i < filtered.Count(); i++) { if (filtered.ElementAt(i).Id != original.ElementAt(i).Id) { Assert.Fail("Filtering not works"); } } }
public void TestGuidFilterStartsWith() { var filterOption = new ColumnFilterValue { ColumnName = "GuidField", FilterType = GridFilterType.StartsWith, FilterValue = "6e4fe7c4" }; var filterOptions = new List <ColumnFilterValue>(); filterOptions.Add(filterOption); var filter = new DefaultColumnFilter <TestModel, Guid>(m => m.GuidField); var filtered = filter.ApplyFilter(_repo.GetAll().AsQueryable(), filterOptions); var original = _repo.GetAll().AsQueryable().Where(t => t.GuidField.ToString().ToUpper().StartsWith("6e4fe7c4".ToUpper())); for (int i = 0; i < filtered.Count(); i++) { if (filtered.ElementAt(i).Id != original.ElementAt(i).Id) { Assert.Fail("Filtering not works"); } } }
private bool ValidateFiltering(TestGrid grid, ColumnFilterValue value, Func <TestModel, bool> filterExpression) { var settingsMock = new Mock <IGridSettingsProvider>(); var filterSetting = new Mock <IGridFilterSettings>(); var filterCollection = new DefaultFilterColumnCollection { value }; filterSetting.Setup(t => t.FilteredColumns).Returns(filterCollection); filterSetting.Setup(t => t.IsInitState(_grid.Columns.First())).Returns(false); settingsMock.Setup(s => s.FilterSettings).Returns(filterSetting.Object); settingsMock.Setup(s => s.SortSettings).Returns(new QueryStringSortSettings(_query)); settingsMock.Setup(s => s.SearchSettings).Returns(new QueryStringSearchSettings(_query)); grid.Settings = settingsMock.Object; IEnumerable <TestModel> resultCollection = _grid.GetItemsToDisplay(); if (!resultCollection.Any()) { Assert.Fail("No items to compare"); } IEnumerable <TestModel> etalonCollection = _repo.GetAll().Where(filterExpression); if (!ValidateCollectionsTheSame(resultCollection, etalonCollection)) { return(false); } return(true); }
public void TestFilter() { var filterOption = new ColumnFilterValue { ColumnName = "Created", FilterType = GridFilterType.LessThan, FilterValue = "10.05.2005" }; var filterOptions = new List <ColumnFilterValue>(); filterOptions.Add(filterOption); var filter = new DefaultColumnFilter <TestModel, DateTime>(m => m.Created); var filtered = filter.ApplyFilter(_repo.GetAll().AsQueryable(), filterOptions); var original = _repo.GetAll().AsQueryable().Where(t => t.Created < new DateTime(2005, 5, 10)); for (int i = 0; i < filtered.Count(); i++) { if (filtered.ElementAt(i).Id != original.ElementAt(i).Id) { Assert.Fail("Filtering not works"); } } //var processed processor.Process() }
public void TestUInt64Filtering() { var filterOption = new ColumnFilterValue { ColumnName = "UInt64Field", FilterType = GridFilterType.Equals, FilterValue = "4294967888" }; var filterOptions = new List <ColumnFilterValue>(); filterOptions.Add(filterOption); var filter = new DefaultColumnFilter <TestModel, UInt64>(m => m.UInt64Field); var filtered = filter.ApplyFilter(_repo.GetAll().AsQueryable(), filterOptions); var original = _repo.GetAll().AsQueryable().Where(t => t.UInt64Field == 4294967888); for (int i = 0; i < filtered.Count(); i++) { if (filtered.ElementAt(i).Id != original.ElementAt(i).Id) { Assert.Fail("Filtering not works"); } } }
public void TestGuidFilteringEquals() { var filterOption = new ColumnFilterValue { ColumnName = "GuidField", FilterType = GridFilterType.Equals, FilterValue = "6e4fe7c4-a5cb-4e29-8041-a80ce17ea727" }; var filterOptions = new List <ColumnFilterValue>(); filterOptions.Add(filterOption); var filter = new DefaultColumnFilter <TestModel, Guid>(m => m.GuidField); var filtered = filter.ApplyFilter(_repo.GetAll().AsQueryable(), filterOptions); var original = _repo.GetAll().AsQueryable().Where(t => t.GuidField == new Guid("6e4fe7c4-a5cb-4e29-8041-a80ce17ea727")); for (int i = 0; i < filtered.Count(); i++) { if (filtered.ElementAt(i).Id != original.ElementAt(i).Id) { Assert.Fail("Filtering not works"); } } }
public void TestFilterContains() { var filterOption = new ColumnFilterValue { ColumnName = "Title", FilterType = GridFilterType.Contains, FilterValue = "test" }; var filterOptions = new List <ColumnFilterValue>(); filterOptions.Add(filterOption); var filter = new DefaultColumnFilter <TestModel, string>(m => m.Title); var filtered = filter.ApplyFilter(_repo.GetAll().AsQueryable(), filterOptions); var original = _repo.GetAll().AsQueryable().Where(t => t.Title.Contains("test")); for (int i = 0; i < filtered.Count(); i++) { if (filtered.ElementAt(i).Id != original.ElementAt(i).Id) { Assert.Fail("Filtering not works"); } } }
private void TestFiltering <T>(ColumnFilterValue settings, Expression <Func <TestModel, T> > column, Func <TestModel, bool> filterContraint) { _grid.Columns.Add(column, settings.ColumnName).Filterable(true); if (!ValidateFiltering(_grid, settings, filterContraint)) { Assert.Fail("Filtering works incorrect"); } }
public IGridColumn <T> SetInitialFilter(GridFilterType type, string value) { var filter = new ColumnFilterValue { FilterType = type, FilterValue = value, ColumnName = Name }; InitialFilterSettings = filter; return(this); }
private void TestFiltering <T>(ColumnFilterValue settings, Expression <Func <TestModel, T> > column, Func <TestModel, bool> filterContraint) { Action <IGridColumnCollection <TestModel> > columns = c => { c.Add(column, settings.ColumnName).Filterable(true); }; var grid = new TestGrid((q) => _repo.GetAllService(columns, q, false, true), true, columns, Thread.CurrentThread.CurrentCulture); if (!ValidateFiltering(grid, grid.Columns.GetByName(settings.ColumnName), settings, filterContraint)) { Assert.Fail("Filtering works incorrect"); } }
private bool ValidateFiltering(TestGrid grid, IGridColumn column, ColumnFilterValue value, Func <TestModel, bool> filterExpression) { grid.AddFilterParameter(column, new FilterCollection(value.FilterType.ToString("d"), value.FilterValue)); grid.UpdateGrid().Wait(); IEnumerable <TestModel> resultCollection = grid.GetItemsToDisplay(); if (!resultCollection.Any()) { Assert.Fail("No items to compare"); } IEnumerable <TestModel> etalonCollection = _repo.GetAll().Where(filterExpression); if (!ValidateCollectionsTheSame(resultCollection, etalonCollection)) { return(false); } return(true); }
public QueryStringFilterSettings(IQueryDictionary <StringValues> query) { if (query == null) { throw new ArgumentException("No http context here!"); } Query = query; string[] filters = Query.Count > 0 ? Query.Get(DefaultTypeQueryParameter).ToArray() : null; if (filters != null) { foreach (string filter in filters) { ColumnFilterValue column = CreateColumnData(filter); if (column != ColumnFilterValue.Null) { _filterValues.Add(column); } } } }
public void TestInt16Filtering() { var filterOptions = new ColumnFilterValue { ColumnName = "Int16Field", FilterType = GridFilterType.Equals, FilterValue = "16" }; var filter = new DefaultColumnFilter <TestModel, Int16>(m => m.Int16Field); var filtered = filter.ApplyFilter(_repo.GetAll().AsQueryable(), filterOptions); var original = _repo.GetAll().AsQueryable().Where(t => t.Int16Field == 16); for (int i = 0; i < filtered.Count(); i++) { if (filtered.ElementAt(i).Id != original.ElementAt(i).Id) { Assert.Fail("Filtering not works"); } } }
public string Process() { var filters = new List <string>(); foreach (IGridColumn column in _grid.Columns) { var gridColumn = column as IGridColumn <T>; if (gridColumn == null) { continue; } if (gridColumn.Filter == null) { continue; } IEnumerable <ColumnFilterValue> options = _settings.IsInitState(column) ? new List <ColumnFilterValue> { column.InitialFilterSettings } : _settings.FilteredColumns.GetByColumn(column); var filter = gridColumn.Filter.GetFilter(options); if (!string.IsNullOrWhiteSpace(filter)) { filters.Add(filter); } } // workaround for lack of $search OData support var search = new List <string>(); if (_grid.SearchingEnabled && !string.IsNullOrWhiteSpace(_searchSettings.SearchValue)) { foreach (IGridColumn column in _grid.Columns) { var gridColumn = column as IGridColumn <T>; if (gridColumn == null) { continue; } if (!_grid.SearchingHiddenColumns && gridColumn.Hidden) { continue; } if (gridColumn.Filter == null) { continue; } if (!gridColumn.Filter.IsTextColumn()) { continue; } List <ColumnFilterValue> options = new List <ColumnFilterValue>(); var columnFilterValue = new ColumnFilterValue(column.Name, GridFilterType.Contains, _searchSettings.SearchValue); options.Add(columnFilterValue); var filter = gridColumn.Filter.GetFilter(options); if (!string.IsNullOrWhiteSpace(filter)) { search.Add(filter); } } } string searchResult = ""; for (int i = 0; i < search.Count; i++) { searchResult += "(" + search[i] + ")"; if (i != search.Count - 1) { searchResult += " or "; } } string filterResult = ""; for (int i = 0; i < filters.Count; i++) { filterResult += "(" + filters[i] + ")"; if (i != filters.Count - 1) { filterResult += " and "; } } if (string.IsNullOrWhiteSpace(searchResult)) { if (string.IsNullOrWhiteSpace(filterResult)) { return(""); } else { return("$filter=" + WebUtility.UrlEncode(filterResult)); } } else { if (string.IsNullOrWhiteSpace(filterResult)) { return("$filter=" + WebUtility.UrlEncode(searchResult)); } else { return("$filter=(" + WebUtility.UrlEncode(searchResult) + ") and (" + WebUtility.UrlEncode(filterResult) + ")"); } } }