コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }