public void Filter_WhenColumnToFilterAlreadyInFilterList_ShouldDuplicateFilter(string columnName, string value, FilterRigor rigor, FilterMethod method) { // Arrange var values = new List <string> { value, value }; var connectionString = "Data Source=190.190.200.100,1433;Initial Catalog = myDataBase;User ID = myUsername;Password = myPassword;"; var columnsInTable = new string[] { "column1", "column2", "column3" }; var queryExecutorResolverMock = GetQueryExecutorResolverMockWithColumns(columnsInTable); Lifecycle.Container.RegisterInstance(typeof(IQueryExecutorResolver), queryExecutorResolverMock); var dbConnectionMock = new Mock <DbConnection>(); dbConnectionMock.Setup(conn => conn.ConnectionString).Returns(connectionString); var ctx = new SLORMContext(dbConnectionMock.Object, connectionString); var columnFilter = new ColumnFilterRequest(columnName, values, rigor, method); ctx.Filter(columnFilter); // Act ctx.Filter(columnFilter); // Assert var filterRequestCount = ctx.ColumnsToFilter.Where(c => c.Column.Name == columnFilter.ColumnName && c.FilterMethod == columnFilter.FilterMethod && c.FilterRigor == columnFilter.FilterRigor).Count(); Assert.Equal(2, filterRequestCount); }
public SLORMContext Filter(ColumnFilterRequest filterRequest) { if (filterRequest == null) { throw new ArgumentNullException(nameof(filterRequest)); } var column = ColumnsInTable.GetFromName(filterRequest.ColumnName); if (column == null) { return(this); } // Filtering incorrect value formats if (filterRequest.FilterRigor == FilterRigor.Equals) { switch (column.DataType) { case ColumnDataType.Number: double parsedValue; foreach (var currentValue in filterRequest.Values) { if (!double.TryParse(currentValue, out parsedValue)) { return(this); } } break; case ColumnDataType.Date: DateTime parsedDateValue; foreach (var currentValue in filterRequest.Values) { if (!DateTime.TryParse(currentValue, out parsedDateValue)) { return(this); } } break; } } var columnToFilter = new ColumnFilter(column, filterRequest); ColumnsToFilter.Add(columnToFilter); return(this); }
public SLORMContext Filter(string columnName, ICollection <string> values, FilterRigor rigor, FilterMethod method) { var filterRequest = new ColumnFilterRequest(columnName, values, rigor, method); return(Filter(filterRequest)); }