Beispiel #1
0
        public void ApplyFop_Should_Fail_Returns_StringDataTypeNotSupportedException()
        {
            // Arrange
            var request = new FopRequest
            {
                // Filter
                FilterList = new IFilterList[]
                {
                    new FilterList
                    {
                        Logic   = FilterLogic.And,
                        Filters = new []
                        {
                            new Filter.Filter
                            {
                                Operator = FilterOperators.GreaterThan,
                                DataType = FilterDataTypes.Int,
                                Key      = nameof(Student) + "." + nameof(Student.Midterm),
                                Value    = "9"
                            },
                            new Filter.Filter
                            {
                                Operator = FilterOperators.LessThan,
                                DataType = FilterDataTypes.Int,
                                Key      = nameof(Student) + "." + nameof(Student.Final),
                                Value    = "91"
                            },
                            new Filter.Filter
                            {
                                Operator = FilterOperators.GreaterThan,
                                DataType = FilterDataTypes.String,
                                Key      = nameof(Student) + "." + nameof(Student.Name),
                                Value    = "A"
                            }
                        }
                    }
                },


                // Order
                Direction = OrderDirection.Desc,
                OrderBy   = nameof(Student.IdentityNumber)
            };

            // Act
            var ex = Record.Exception(() => _students.ApplyFop(request));

            // Assert
            Assert.True(ex is StringDataTypeNotSupportedException);
        }
Beispiel #2
0
        public void ApplyFop_Should_Success_Returns_Filtered_When_Passed_Multiple_Filter_With_Decimal_Double_Types()
        {
            // Arrange
            var request = new FopRequest
            {
                // Filter
                FilterList = new IFilterList[]
                {
                    new FilterList
                    {
                        Logic   = FilterLogic.And,
                        Filters = new []
                        {
                            new Filter.Filter
                            {
                                Operator = FilterOperators.GreaterThan,
                                DataType = FilterDataTypes.Decimal,
                                Key      = nameof(Student) + "." + nameof(Student.Bonus),
                                Value    = "50.5m"
                            },
                            new Filter.Filter
                            {
                                Operator = FilterOperators.LessOrEqualThan,
                                DataType = FilterDataTypes.Double,
                                Key      = nameof(Student) + "." + nameof(Student.Average),
                                Value    = "75.5"
                            }
                        }
                    }
                },

                // Order
                Direction = OrderDirection.Desc,
                OrderBy   = nameof(Student.IdentityNumber),

                // Page
                PageSize   = 100,
                PageNumber = 1
            };

            var expectedCount = _students.Count(x => x.Bonus > 50.5m && x.Average <= 75.5);

            // Act
            var(result, totalRecords) = _students.ApplyFop(request);

            // Assert
            Assert.True(result.Any(x => x.Name == "Aybars"));
            Assert.True(expectedCount == result.Count());
        }
Beispiel #3
0
        public void ApplyFop_Should_Success_Returns_Filtered_When_Passed_Multiple_Filter()
        {
            // Arrange
            var request = new FopRequest
            {
                // Filter
                FilterList = new IFilterList[]
                {
                    new FilterList
                    {
                        Logic   = FilterLogic.And,
                        Filters = new []
                        {
                            new Filter.Filter
                            {
                                Operator = FilterOperators.GreaterThan,
                                DataType = FilterDataTypes.Int,
                                Key      = nameof(Student) + "." + nameof(Student.Midterm),
                                Value    = "98"
                            },
                            new Filter.Filter
                            {
                                Operator = FilterOperators.StartsWith,
                                DataType = FilterDataTypes.String,
                                Key      = nameof(Student) + "." + nameof(Student.Name),
                                Value    = "A"
                            }
                        }
                    }
                },

                // Order
                Direction = OrderDirection.Desc,
                OrderBy   = nameof(Student.IdentityNumber),

                // Page
                PageSize   = 100,
                PageNumber = 1
            };

            // Act
            var(result, totalRecords) = _students.ApplyFop(request);

            // Assert
            Assert.True(result.Any(x => x.Name == "Aybars"));
        }
Beispiel #4
0
        public void ApplyFop_Should_Success_Returns_Filtered_When_Passed_Multiple_FilterList_With_DateTime_Filter()
        {
            // Arrange
            var request = new FopRequest
            {
                // Filter
                FilterList = new IFilterList[]
                {
                    new FilterList
                    {
                        Logic   = FilterLogic.And,
                        Filters = new []
                        {
                            new Filter.Filter
                            {
                                Operator = FilterOperators.GreaterThan,
                                DataType = FilterDataTypes.DateTime,
                                Key      = nameof(Student) + "." + nameof(Student.Birthday),
                                Value    = "1993-06-07 00:00:00"
                            },
                            new Filter.Filter
                            {
                                Operator = FilterOperators.LessThan,
                                DataType = FilterDataTypes.DateTime,
                                Key      = nameof(Student) + "." + nameof(Student.Birthday),
                                Value    = "1997-06-07 00:00:00"
                            }
                        }
                    }
                },


                // Order
                Direction = OrderDirection.Desc,
                OrderBy   = nameof(Student.IdentityNumber)
            };

            // Act
            var(result, totalRecords) = _students.ApplyFop(request);


            // Assert
            Assert.True(result.Any(x => x.Name == "Aybars"));
            Assert.True(totalRecords == 1);
        }
Beispiel #5
0
        public void ApplyFop_Should_Success_Returns_Filtered_When_Passed_Multiple_FilterList_With_Char_Filter()
        {
            // Arrange
            var request = new FopRequest
            {
                // Filter
                FilterList = new IFilterList[]
                {
                    new FilterList
                    {
                        Logic   = FilterLogic.And,
                        Filters = new []
                        {
                            new Filter.Filter
                            {
                                Operator = FilterOperators.Equal,
                                DataType = FilterDataTypes.Char,
                                Key      = nameof(Student) + "." + nameof(Student.Level),
                                Value    = "a"
                            }
                        }
                    }
                },


                // Order
                Direction = OrderDirection.Desc,
                OrderBy   = nameof(Student.IdentityNumber)
            };

            // Act
            var(result, totalRecords) = _students.ApplyFop(request);


            // Assert
            Assert.True(result.Any(x => x.Name == "Aybars"));
        }
Beispiel #6
0
        public static IFopRequest Build(string filter, string order, int pageNumber, int pageSize)
        {
            var request = new FopRequest();

            if (!string.IsNullOrEmpty(filter))
            {
                request.FilterList = FilterExpressionBuilder(filter);
            }

            if (!string.IsNullOrEmpty(order))
            {
                var(orderBy, direction) = OrderExpressionBuilder(order);
                request.OrderBy         = orderBy;
                request.Direction       = direction;
            }

            if (pageNumber > 0 && pageSize > 0)
            {
                request.PageNumber = pageNumber;
                request.PageSize   = pageSize;
            }

            return(request);
        }