Пример #1
0
        public void TestIfNegativeItemsPerPageNumberCrashesPagination()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.ItemsPerPage = -1000;
            dataRequest.CurrentPage  = 2;
            dataRequest.Filters      = new FilterItem[]
            {
                // We expect two results with this filter
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.StringContains,
                    Parameter = "white"
                }
            };

            dataRequest.Ordering = new OrderingItem[]
            {
                new OrderingItem
                {
                    Name = "Name"
                }
            };

            var query      = Person.GetPersonQuery();
            var dataResult = query
                             .Proccess(dataRequest);

            Assert.AreEqual(2, dataResult.ItemsTotal);
            Assert.AreEqual(1, dataResult.ItemsPerPage);
            Assert.AreEqual(2, dataResult.PageCount);
            Assert.AreEqual(2, dataResult.CurrentPage);
        }
Пример #2
0
        public void TestIfSelectingNestedPropertyWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.Equal,
                    Parameter = "john doe"
                }
            };
            dataRequest.Select = new string[]
            {
                "Name",
                "ContactInfo.Email",
            };
            var query    = Person.GetPersonQuery();
            var newQuery = query
                           .FilterByDataRequest(dataRequest)
                           .SelectByDataRequest(dataRequest);

            Assert.AreEqual(1, newQuery.Count());
            Assert.AreEqual("*****@*****.**", newQuery.First().Email);
        }
Пример #3
0
        public void TestIfSelectingOrderingAndGroupingWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Grouping = "Gender";
            dataRequest.Select   = new string[]
            {
                "Name",
                "Gender"
            };
            dataRequest.Ordering = new OrderingItem[]
            {
                new OrderingItem
                {
                    Name = "Gender"
                },
                new OrderingItem
                {
                    Name       = "Name",
                    Descending = true
                }
            };

            var query    = Person.GetPersonQuery();
            var newQuery = query
                           .OrderByDataRequest(dataRequest)
                           .SelectByDataRequest(dataRequest)
                           .GroupByDataRequest(dataRequest);

            // Two groups: Male and Female
            Assert.AreEqual(2, newQuery.Count());
            // Ordered by Gender asc/Name dsc,
            Assert.AreEqual("White Death", newQuery.ToDynamicList <GroupedData>().First().Values.First().Name);
        }
Пример #4
0
        public void TestIfPaginationWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.ItemsPerPage = 1;
            dataRequest.CurrentPage  = 2;
            dataRequest.Filters      = new FilterItem[]
            {
                // We expect two results with this filter
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.StringContains,
                    Parameter = "white"
                }
            };

            dataRequest.Ordering = new OrderingItem[]
            {
                new OrderingItem
                {
                    Name = "Name"
                }
            };

            var query      = Person.GetPersonQuery();
            var dataResult = query
                             .Proccess(dataRequest);

            Assert.AreEqual(2, dataResult.ItemsTotal);
            Assert.AreEqual(1, dataResult.ItemsPerPage);
            Assert.AreEqual(2, dataResult.PageCount);
            Assert.AreEqual(2, dataResult.CurrentPage);
            Assert.AreEqual("White Death", dataResult.Items.ToDynamicList().First().Name);
        }
Пример #5
0
        public static void Main(string[] args)
        {
            foreach (var arg in args)
            {
                if (arg.Equals("--help"))
                {
                    Console.Write(CommandLineUtil.HelpText(cmdLineExample, typeof(LocalProjectRunnerArguments)));
                    return;
                }
            }

            var cmdOptions = CommandLineUtil.ParseArguments <CommandLineOptions>(args);

            if (cmdOptions != null)
            {
                if (cmdOptions.ConfigurationFilePath != null)
                {
                    TestCommons.RunWithConfiguration(File.ReadAllText(cmdOptions.ConfigurationFilePath));
                }
                else
                {
                    string[] unknownArgs         = new string[0];
                    Type     runnerArgumentsType = cmdOptions.TestSource.GetArgumentsType();
                    int      firstUnknownArg     = CommandLineUtil.FindFirstUknownArg(args, runnerArgumentsType);
                    if (firstUnknownArg >= 0)
                    {
                        unknownArgs = args.Skip(firstUnknownArg).ToArray();
                    }

                    ProjectRunnerArguments runnerArgs = CommandLineUtil.ParseArguments(args, runnerArgumentsType) as ProjectRunnerArguments;
                    runnerArgs.TestingFrameworkArguments = unknownArgs;
                    TestCommons.RunWithArgs(runnerArgs);
                }
            }
        }
Пример #6
0
        public void TestIfMultipleGroupingWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Grouping = "x => new { x.Gender, x.BirthCountry }";
            dataRequest.Ordering = new OrderingItem[]
            {
                new OrderingItem
                {
                    Name       = "Gender",
                    Descending = true
                },
                new OrderingItem
                {
                    Name = "BirthCountry"
                }
            };

            var query = Person.GetPersonQuery();

            var result = query.Proccess(dataRequest);

            /* Three countries: (FL)Fantasy Land, (RUS)Russia, (US)United States
             * Two genders: (M)Male, (F)Female
             * Four groups: M-RUS, M-US, F-FL, F-US
             */
            Assert.AreEqual(5, result.Items.AsQueryable().Count());
            // Ordered by Gender dsc/BirthCountry asc
            Assert.AreEqual("Snow White", result.Items.ToDynamicList <GroupedData>().First().Values.First().Name);
        }
Пример #7
0
        public void TestIfChangingMethodProcessingOrderWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Methods = new HashSet <ProcessingMethod> {
                ProcessingMethod.Group, ProcessingMethod.Select, ProcessingMethod.Order
            };
            dataRequest.Grouping = "BirthCountry";

            dataRequest.Select = new string[] { "Key as Country", "Values.Count as PeopleCount" };

            dataRequest.Ordering = new OrderingItem[] { new OrderingItem {
                                                            Name = "Country"
                                                        } };


            var query  = Person.GetPersonQuery();
            var result = query.Proccess(dataRequest);

            // Four countries: Brazil, Fantasy Land, Russia, United States
            Assert.AreEqual(4, result.Items.Count());
            // Ordered by BirthCountry, so Brazil must be the first item
            Assert.AreEqual("Brazil", result.Items.First().Country);
            // Ordered by BirthCountry, so USA must be the last item
            Assert.AreEqual(3, result.Items.Last().PeopleCount);
        }
Пример #8
0
        public void TestIfAdvancedAndTraditionalFiltersWorkTogether()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Operators = new FilterOperator[]
            {
                FilterOperator.And
            };

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    IsAdvanced    = true,
                    AdvancedQuery = "np(Addresses.Count) > 1"
                },
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.StringContains,
                    Parameter = "snow"
                },
            };
            var query    = Person.GetPersonQuery();
            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(1, newQuery.Count());
            Assert.AreEqual("Snow White", newQuery.First().Name);
        }
Пример #9
0
        public void TestIfSelectingWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.Equal,
                    Parameter = "john doe"
                }
            };
            dataRequest.Select = new string[]
            {
                "Name",
                "Age"
            };
            var query    = Person.GetPersonQuery();
            var newQuery = query
                           .FilterByDataRequest(dataRequest)
                           .SelectByDataRequest(dataRequest);

            Assert.AreEqual(1, newQuery.Count());
            Assert.AreEqual("John Doe", newQuery.First().Name);
        }
Пример #10
0
        public DataRequest CreateDataRequestWithTwoFilters()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters   = this.CreateFilterItemCollection();
            dataRequest.Operators = new FilterOperator[]
            {
                FilterOperator.And
            };

            return(dataRequest);
        }
Пример #11
0
        public void TestIfInvalidGroupingThrowsException()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Grouping = "FooBar";
            var query = Person.GetPersonQuery();

            Assert.ThrowsException <ArgumentException>(() =>
            {
                var newQuery = query
                               .GroupByDataRequest(dataRequest);
            });
        }
Пример #12
0
        public void TestIfOrderingWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Ordering = new OrderingItem[]
            {
                new OrderingItem
                {
                    Name = "Name"
                }
            };
            var query    = Person.GetPersonQuery();
            var newQuery = query.OrderByDataRequest(dataRequest);

            Assert.AreEqual("Alicia Florick", newQuery.First().Name);
        }
Пример #13
0
        public void TestIfNestedPropertyOrderingWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Ordering = new OrderingItem[]
            {
                new OrderingItem
                {
                    Name = "ContactInfo != null ? ContactInfo.Email : string.Empty"
                }
            };
            var query    = Person.GetPersonQuery();
            var newQuery = query.OrderByDataRequest(dataRequest);

            Assert.IsNull(newQuery.First().ContactInfo);
            Assert.AreEqual("*****@*****.**", newQuery.Skip(2).First().ContactInfo.Email);
        }
Пример #14
0
        public void TestIfReverseOrderingWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Ordering = new OrderingItem[]
            {
                new OrderingItem
                {
                    Name       = "Age",
                    Descending = true
                }
            };
            var query    = Person.GetPersonQuery();
            var newQuery = query.OrderByDataRequest(dataRequest);

            Assert.AreEqual(10, newQuery.Last().Age);
        }
Пример #15
0
        public void TestIfAdvancedFilterWorks()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    IsAdvanced    = true,
                    AdvancedQuery = "np(ContactInfo.Email) == \"[email protected]\""
                }
            };
            var query    = Person.GetPersonQuery();
            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(1, newQuery.Count());
        }
Пример #16
0
        public DataRequest CreateDataRequestWithExpressions()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Expressions = new FilterExpression[]
            {
                new FilterExpression
                {
                    Filters   = this.CreateFilterItemCollection(),
                    Operators = new FilterOperator[]
                    {
                        FilterOperator.And
                    }
                },
                new FilterExpression
                {
                    Filters = new FilterItem[]
                    {
                        new FilterItem
                        {
                            Name      = "Name",
                            Criterion = FilterCriterion.StringContains,
                            Parameter = "Snow White",
                            MatchCase = true
                        },
                        new FilterItem
                        {
                            Name      = "Age",
                            Criterion = FilterCriterion.GreaterThan,
                            Parameter = 100
                        }
                    },
                    Operators = new FilterOperator[]
                    {
                        FilterOperator.And
                    }
                }
            };
            dataRequest.Operators = new FilterOperator[]
            {
                FilterOperator.Or
            };

            return(dataRequest);
        }
Пример #17
0
        public void TestIfInvalidPropertyNameThrowsException()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Select = new string[]
            {
                "Name",
                "Foo Bar"
            };
            var query = Person.GetPersonQuery();

            Assert.ThrowsException <ArgumentException>(() =>
            {
                var newQuery = query
                               .FilterByDataRequest(dataRequest)
                               .SelectByDataRequest(dataRequest);
            });
        }
Пример #18
0
        public void TestIfInvalidPropertyNameThrowsException()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Ordering = new OrderingItem[]
            {
                new OrderingItem
                {
                    Name = "FooBar"
                }
            };
            var query = Person.GetPersonQuery();

            Assert.ThrowsException <ArgumentException>(() =>
            {
                var newQuery = query.OrderByDataRequest(dataRequest);
            });
        }
Пример #19
0
        public void TestIfQueryIsFilteredByGuidIsNull()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Id",
                    Criterion = FilterCriterion.NotNull,
                    Not       = true
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(5, newQuery.Count());
        }
Пример #20
0
        public void TestIfQueryIsFilteredByLessThan()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Age",
                    Criterion = FilterCriterion.LessThan,
                    Parameter = 22
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(2, newQuery.Count());
        }
Пример #21
0
        public void TestIfQueryIsFilteredByEnumEquals()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Gender",
                    Criterion = FilterCriterion.Equal,
                    Parameter = 1
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(2, newQuery.Count());
        }
Пример #22
0
        public void TestIfQueryIsFilteredByStringContains()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.StringContains,
                    Parameter = "white"
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(2, newQuery.Count());
        }
Пример #23
0
        public void TestIfDiacriticsAreIgnored()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.StringContains,
                    Parameter = "joão da sílva conceição",
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(1, newQuery.Count());
        }
Пример #24
0
        public void TestIfQueryIsFilteredByLessThan()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "BirthDate",
                    Criterion = FilterCriterion.LessThan,
                    Parameter = $"{DateTime.Now.Year - 22}-01-01T00:00:00"
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(3, newQuery.Count());
        }
Пример #25
0
        public void TestIfQueryFilteredByGuidUnsupportedCriterionThrowsException()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Id",
                    Criterion = FilterCriterion.StringStartsWith,
                    Parameter = Guid.Empty
                }
            };
            var query = Person.GetPersonQuery();

            Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                var newQuery = query.FilterByDataRequest(dataRequest);
            });
        }
Пример #26
0
        public void TestIfQueryIsFilteredByGuidEquals()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Id",
                    Criterion = FilterCriterion.Equal,
                    Parameter = new Guid("74a46e33-09b3-4f90-9818-7ca3609f887f")
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(1, newQuery.Count());
            Assert.AreEqual("Peter Pan", newQuery.First().Name);
        }
Пример #27
0
        public void TestIfQueryIsFilteredByEquals()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Age",
                    Criterion = FilterCriterion.Equal,
                    Parameter = 21
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(1, newQuery.Count());
            Assert.AreEqual(newQuery.First().Name, "John Doe");
        }
Пример #28
0
        public void TestIfQueryFilteredByNumberUnsupportedCriterionThrowsException()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Age",
                    Criterion = FilterCriterion.StringContains,
                    Parameter = 22
                }
            };
            var query = Person.GetPersonQuery();

            Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                var newQuery = query.FilterByDataRequest(dataRequest);
            });
        }
Пример #29
0
        public void TestIfQueryFilteredByStringUnsupportedCriterionThrowsException()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.GreaterThanOrEqual,
                    Parameter = "white"
                }
            };
            var query = Person.GetPersonQuery();

            Assert.ThrowsException <ArgumentOutOfRangeException>(() =>
            {
                var newQuery = query.FilterByDataRequest(dataRequest);
            });
        }
Пример #30
0
        public void TestIfMatchCaseAffectsStringDataResults()
        {
            var dataRequest = TestCommons.CreateDataRequest();

            dataRequest.Filters = new FilterItem[]
            {
                new FilterItem
                {
                    Name      = "Name",
                    Criterion = FilterCriterion.Equal,
                    Parameter = "john doe",
                    MatchCase = true
                }
            };
            var query = Person.GetPersonQuery();

            var newQuery = query.FilterByDataRequest(dataRequest);

            Assert.AreEqual(0, newQuery.Count());
        }