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); }
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()); }
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")); }
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); }
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")); }
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); }