public void MoreComplexFilterWithOrConnector()
        {
            var dataOptions = new DataOptions();

            dataOptions.Filter.Connector = FilterConnector.Or;
            dataOptions.Filter.Add("Title", "Test1", FilterOperation.NotContains);
            dataOptions.Filter.Add("Title", "Test2", FilterOperation.Equal);
            dataOptions.Filter.Add("Title", "Test3", FilterOperation.NotEqual);
            dataOptions.Filter.Add("Title", "Test4", FilterOperation.StartsWith);

            var queryCreator     = new DataOptionsQueryCreator <PageProperties>(dataOptions);
            var orderQuery       = queryCreator.GetOrderQuery();
            var filterQuery      = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, string.Empty);

            Assert.AreEqual(filterQuery, "(!Title.Contains(@0) or Title == null) or Title == @1 or (Title != @2 or Title == null) or Title.StartsWith(@3)");
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 4);
            Assert.AreEqual(filterParameters[0], "Test1");
            Assert.AreEqual(filterParameters[1], "Test2");
            Assert.AreEqual(filterParameters[2], "Test3");
            Assert.AreEqual(filterParameters[3], "Test4");
        }
示例#2
0
        public void NotExistingFilterProperty()
        {
            var dataOptions = new DataOptions();
            dataOptions.Filter.Add("NotExistingProperty", null);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            queryCreator.GetFilterQuery();
        }
        public void ComplexFilterWithInnerFiltersAndOrderBy()
        {
            var dataOptions = new DataOptions();

            dataOptions.Filter.Connector = FilterConnector.And;
            dataOptions.Filter.Add("Title", "Test1", FilterOperation.NotContains);
            dataOptions.Filter.Add("Title", "Test2", FilterOperation.NotContains);

            var innerFilter1 = new DataFilter(FilterConnector.Or);

            innerFilter1.Add("CreatedOn", Convert.ToDateTime(TestValueDate), FilterOperation.Greater);
            innerFilter1.Add("CreatedOn", Convert.ToDateTime(TestValueDate), FilterOperation.Less);
            innerFilter1.Add("CreatedOn", Convert.ToDateTime(TestValueDate));

            var innerFilter2 = new DataFilter(FilterConnector.Or);

            innerFilter2.Add("ModifiedOn", Convert.ToDateTime(TestValueDate), FilterOperation.Greater);
            innerFilter2.Add("ModifiedOn", Convert.ToDateTime(TestValueDate), FilterOperation.Less);
            innerFilter2.Add("ModifiedOn", Convert.ToDateTime(TestValueDate));

            dataOptions.Filter.Inner.Add(innerFilter1);
            dataOptions.Filter.Inner.Add(innerFilter2);

            dataOptions.Order.Add("CreatedOn", OrderDirection.Desc);
            dataOptions.Order.Add("Title");
            dataOptions.Order.Add("Description", OrderDirection.Desc);

            var queryCreator     = new DataOptionsQueryCreator <PageProperties>(dataOptions);
            var orderQuery       = queryCreator.GetOrderQuery();
            var filterQuery      = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, "CreatedOn desc, Title, Description desc");

            var result = "(!Title.Contains(@0) or Title == null) and (!Title.Contains(@1) or Title == null) and (CreatedOn > @2 or CreatedOn < @3 or CreatedOn == @4) and (ModifiedOn > @5 or ModifiedOn < @6 or ModifiedOn == @7)";

            Assert.AreEqual(filterQuery, result);
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 8);
            Assert.AreEqual(filterParameters[0], "Test1");
            Assert.AreEqual(filterParameters[1], "Test2");
            Assert.AreEqual(filterParameters[2], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[3], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[4], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[5], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[6], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[7], Convert.ToDateTime(TestValueDate));
        }
示例#4
0
        public void SingleOrderByDescending()
        {
            var dataOptions = new DataOptions();
            dataOptions.Order.Add("CreatedOn", OrderDirection.Desc);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            var orderQuery = queryCreator.GetOrderQuery();
            var filterQuery = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.IsNotNull(filterParameters);
            Assert.IsEmpty(filterParameters);
            Assert.AreEqual(filterQuery, string.Empty);

            Assert.AreEqual(orderQuery, "CreatedOn desc");
        }
示例#5
0
        public void SingleFilterByEqual()
        {
            var dataOptions = new DataOptions();
            dataOptions.Filter.Add("CreatedOn", TestValueDate, FilterOperation.Equal);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            var orderQuery = queryCreator.GetOrderQuery();
            var filterQuery = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, string.Empty);

            Assert.AreEqual(filterQuery, "CreatedOn == @0");
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 1);
            Assert.AreEqual(filterParameters[0], Convert.ToDateTime(TestValueDate));
        }
        public void SingleFilterByEqualOptional()
        {
            var dataOptions = new DataOptions();
            dataOptions.Filter.Add("CreatedOn", TestValueDate);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            var orderQuery = queryCreator.GetOrderQuery();
            var filterQuery = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, string.Empty);

            Assert.AreEqual(filterQuery, "CreatedOn == @0");
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 1);
            Assert.AreEqual(filterParameters[0], Convert.ToDateTime(TestValueDate));
        }
示例#7
0
        public void SingleFilterByEndsWith()
        {
            var dataOptions = new DataOptions();
            dataOptions.Filter.Add("Title", TestValueString, FilterOperation.EndsWith);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            var orderQuery = queryCreator.GetOrderQuery();
            var filterQuery = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, string.Empty);

            Assert.AreEqual(filterQuery, "Title.EndsWith(@0)");
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 1);
            Assert.AreEqual(filterParameters[0], TestValueString);
        }
示例#8
0
        public void ComplexFilterWithAndConnector()
        {
            var dataOptions = new DataOptions();
            dataOptions.Filter.Add("Title", "Test1", FilterOperation.NotContains);
            dataOptions.Filter.Add("Title", "Test2", FilterOperation.NotContains);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            var orderQuery = queryCreator.GetOrderQuery();
            var filterQuery = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, string.Empty);

            Assert.AreEqual(filterQuery, "(!Title.Contains(@0) or Title == null) and (!Title.Contains(@1) or Title == null)");
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 2);
            Assert.AreEqual(filterParameters[0], "Test1");
            Assert.AreEqual(filterParameters[1], "Test2");
        }
示例#9
0
        public void ComplexFilterWithAndConnector()
        {
            var dataOptions = new DataOptions();
            dataOptions.Filter.Add("Title", "Test1", FilterOperation.NotContains);
            dataOptions.Filter.Add("Title", "Test2", FilterOperation.NotContains);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            var orderQuery = queryCreator.GetOrderQuery();
            var filterQuery = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, string.Empty);

            Assert.AreEqual(filterQuery, "(!Title.Contains(@0) or Title == null) and (!Title.Contains(@1) or Title == null)");
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 2);
            Assert.AreEqual(filterParameters[0], "Test1");
            Assert.AreEqual(filterParameters[1], "Test2");
        }
示例#10
0
        public void ComplexFilterWithInnerFiltersAndOrderBy()
        {
            var dataOptions = new DataOptions();
            dataOptions.Filter.Connector = FilterConnector.And;
            dataOptions.Filter.Add("Title", "Test1", FilterOperation.NotContains);
            dataOptions.Filter.Add("Title", "Test2", FilterOperation.NotContains);

            var innerFilter1 = new DataFilter(FilterConnector.Or);
            innerFilter1.Add("CreatedOn", Convert.ToDateTime(TestValueDate), FilterOperation.Greater);
            innerFilter1.Add("CreatedOn", Convert.ToDateTime(TestValueDate), FilterOperation.Less);
            innerFilter1.Add("CreatedOn", Convert.ToDateTime(TestValueDate));

            var innerFilter2 = new DataFilter(FilterConnector.Or);
            innerFilter2.Add("ModifiedOn", Convert.ToDateTime(TestValueDate), FilterOperation.Greater);
            innerFilter2.Add("ModifiedOn", Convert.ToDateTime(TestValueDate), FilterOperation.Less);
            innerFilter2.Add("ModifiedOn", Convert.ToDateTime(TestValueDate));
            
            dataOptions.Filter.Inner.Add(innerFilter1);
            dataOptions.Filter.Inner.Add(innerFilter2);

            dataOptions.Order.Add("CreatedOn", OrderDirection.Desc);
            dataOptions.Order.Add("Title");
            dataOptions.Order.Add("Description", OrderDirection.Desc);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            var orderQuery = queryCreator.GetOrderQuery();
            var filterQuery = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, "CreatedOn desc, Title, Description desc");

            var result = "(!Title.Contains(@0) or Title == null) and (!Title.Contains(@1) or Title == null) and (CreatedOn > @2 or CreatedOn < @3 or CreatedOn == @4) and (ModifiedOn > @5 or ModifiedOn < @6 or ModifiedOn == @7)";

            Assert.AreEqual(filterQuery, result);
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 8);
            Assert.AreEqual(filterParameters[0], "Test1");
            Assert.AreEqual(filterParameters[1], "Test2");
            Assert.AreEqual(filterParameters[2], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[3], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[4], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[5], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[6], Convert.ToDateTime(TestValueDate));
            Assert.AreEqual(filterParameters[7], Convert.ToDateTime(TestValueDate));
        }
示例#11
0
        public void MoreComplexFilterWithOrConnector()
        {
            var dataOptions = new DataOptions();
            dataOptions.Filter.Connector = FilterConnector.Or;
            dataOptions.Filter.Add("Title", "Test1", FilterOperation.NotContains);
            dataOptions.Filter.Add("Title", "Test2", FilterOperation.Equal);
            dataOptions.Filter.Add("Title", "Test3", FilterOperation.NotEqual);
            dataOptions.Filter.Add("Title", "Test4", FilterOperation.StartsWith);

            var queryCreator = new DataOptionsQueryCreator<PageProperties>(dataOptions);
            var orderQuery = queryCreator.GetOrderQuery();
            var filterQuery = queryCreator.GetFilterQuery();
            var filterParameters = queryCreator.GetFilterParameters();

            Assert.AreEqual(orderQuery, string.Empty);

            Assert.AreEqual(filterQuery, "(!Title.Contains(@0) or Title == null) or Title == @1 or (Title != @2 or Title == null) or Title.StartsWith(@3)");
            Assert.IsNotNull(filterParameters);
            Assert.AreEqual(filterParameters.Length, 4);
            Assert.AreEqual(filterParameters[0], "Test1");
            Assert.AreEqual(filterParameters[1], "Test2");
            Assert.AreEqual(filterParameters[2], "Test3");
            Assert.AreEqual(filterParameters[3], "Test4");
        }