public void SpecificationEqualTest() { var filters = new List <FilterModel>(); var filter = new FilterModel { FieldName = "Name", FilterType = FilterType.Text }; var condition = new Condition { FilterType = FilterType.Text, ConditionType = ConditionType.Equals, Value = "s" }; filter.Conditions.Add(condition); filters.Add(filter); var spec = FilterSpecification <Customer> .Create(filters); var expression = spec.ToExpression(); Assert.Equal("(x.Name == \"s\")", expression.Body.ToString()); }
public void SpecificationStringFromListTest() { var filters = new List <FilterModel>(); var filter = new FilterModel { FieldName = "Orders[Payment.Id]", FilterType = FilterType.Text }; var condition = new Condition { FilterType = FilterType.Text, ConditionType = ConditionType.Equals, Value = "value" }; filter.Conditions.Add(condition); filters.Add(filter); var spec = FilterSpecification <Customer> .Create(filters); var expression = spec.ToExpression(); Assert.Equal("x.Orders.Any(i => (i.Payment.Id == \"value\"))", expression.Body.ToString()); }
public void SpecificationEqualNuallableGuidTest() { var filters = new List <FilterModel>(); var filter = new FilterModel { FieldName = "IdNullable", FilterType = FilterType.Text }; var condition = new Condition { FilterType = FilterType.Text, ConditionType = ConditionType.Equals, Value = Guid.Parse("30b423e0-c928-46a7-8ef6-a3089d673935") }; filter.Conditions.Add(condition); filters.Add(filter); var spec = FilterSpecification <Customer> .Create(filters); var expression = spec.ToExpression(); Assert.Equal("(Convert(x.IdNullable, Object).ToString() == \"30b423e0-c928-46a7-8ef6-a3089d673935\")", expression.Body.ToString()); }
public void SpecificationNestedLessThanOrEqualDecimalTest() { var filters = new List <FilterModel>(); var filter = new FilterModel { FieldName = "payment.cost", FilterType = FilterType.Text }; var condition = new Condition { FilterType = FilterType.Text, ConditionType = ConditionType.LessThanOrEqual, Value = 5 }; filter.Conditions.Add(condition); filters.Add(filter); var spec = FilterSpecification <Order> .Create(filters); var expression = spec.ToExpression(); Assert.Equal("(x.Payment.Cost <= Convert(5, Decimal))", expression.Body.ToString()); }