internal ColumnFilter(TableColumn column, ICollection <string> values, FilterRigor filterRigor, FilterMethod filterMethod)
 {
     this.Column       = column;
     this.Values       = values;
     this.FilterRigor  = filterRigor;
     this.FilterMethod = filterMethod;
 }
 public ColumnFilterRequest(string columnName, ICollection <string> values, FilterRigor filterRigor, FilterMethod filterMethod)
 {
     this.ColumnName   = columnName;
     this.Values       = values;
     this.FilterRigor  = filterRigor;
     this.FilterMethod = filterMethod;
 }
        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(string columnName, ICollection <string> values, FilterRigor rigor, FilterMethod method)
        {
            var filterRequest = new ColumnFilterRequest(columnName, values, rigor, method);

            return(Filter(filterRequest));
        }