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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        public SLORMContext Filter(string columnName, ICollection <string> values, FilterRigor rigor, FilterMethod method)
        {
            var filterRequest = new ColumnFilterRequest(columnName, values, rigor, method);

            return(Filter(filterRequest));
        }