コード例 #1
0
        public void ToDicionaryTest()
        {
            var constValue = false;
            var newObject  = new ODataTypeEntity {
                IsOpen = false
            };

            var dictionary = _odataQueryBuilderDefault
                             .For <ODataTypeEntity>(s => s.ODataType)
                             .ByList()
                             .Filter(s => s.IsActive &&
                                     s.IsOpen == constValue &&
                                     s.IsOpen == true &&
                                     s.ODataKind.ODataCode.IdActive == newObject.IsOpen)
                             .Skip(1)
                             .Top(10)
                             .ToDictionary();

            var resultEquivalent = new Dictionary <string, string>
            {
                { "$filter", "IsActive and IsOpen eq false and IsOpen eq true and ODataKind/ODataCode/IdActive eq false" },
                { "$skip", "1" },
                { "$top", "10" }
            };

            dictionary.Should().BeEquivalentTo(resultEquivalent);
        }
コード例 #2
0
        public void ODataQueryBuilderList_Operator_In_Success()
        {
            var constStrIds = new[] { "123", "512" };
            var constStrListIds = new[] { "123", "512" }.ToList();
            var constIntIds = new[] { 123, 512 };
            var constIntListIds = new[] { 123, 512 }.ToList();
            var newObject = new ODataTypeEntity {
                ODataKind = new ODataKindEntity {
                    Sequence = constIntListIds
                }
            };
            var newObjectSequenceArray = new ODataTypeEntity {
                ODataKind = new ODataKindEntity {
                    SequenceArray = constIntIds
                }
            };

            var uri = _odataQueryBuilderDefault
                      .For <ODataTypeEntity>(s => s.ODataType)
                      .ByList()
                      .Filter((s, f, o) => o.In(s.ODataKind.ODataCode.Code, constStrIds) &&
                              o.In(s.ODataKind.ODataCode.Code, constStrIds) &&
                              o.In(s.ODataKind.ODataCode.Code, constStrListIds) &&
                              o.In(s.IdType, constIntIds) &&
                              o.In(s.IdType, constIntListIds) &&
                              o.In((int)s.IdRule, constIntIds) &&
                              o.In((int)s.IdRule, constIntListIds) &&
                              o.In(s.ODataKind.IdKind, newObject.ODataKind.Sequence) &&
                              o.In(s.ODataKind.ODataCode.IdCode, newObjectSequenceArray.ODataKind.SequenceArray))
                      .ToUri();

            uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=ODataKind/ODataCode/Code in ('123','512') and ODataKind/ODataCode/Code in ('123','512') and ODataKind/ODataCode/Code in ('123','512') and IdType in (123,512) and IdType in (123,512) and IdRule in (123,512) and IdRule in (123,512) and ODataKind/IdKind in (123,512) and ODataKind/ODataCode/IdCode in (123,512)");
        }
コード例 #3
0
        public void ODataQueryBuilderList_concat_string_simple_argument2_exception()
        {
            var constValue = default(string);
            var newObject  = new ODataTypeEntity {
                TypeCode = string.Empty
            };

            _odataQueryBuilderDefault.Invoking(
                (r) => r
                .For <ODataTypeEntity>(s => s.ODataType)
                .ByList()
                .Filter((s, f) => f.Concat(constValue, s.TypeCode) == "typeCodeTest;")
                .ToUri())
            .Should().Throw <ArgumentException>().WithMessage("Value is empty or null");
        }
コード例 #4
0
        public void ODataQueryBuilderList_Filter_Boolean_Values_Success()
        {
            var constValue = false;
            var newObject  = new ODataTypeEntity {
                IsOpen = false
            };

            var uri = _odataQueryBuilderDefault
                      .For <ODataTypeEntity>(s => s.ODataType)
                      .ByList()
                      .Filter(s => s.IsActive &&
                              s.IsOpen == constValue &&
                              s.IsOpen == true &&
                              s.ODataKind.ODataCode.IdActive == newObject.IsOpen)
                      .ToUri();

            uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=IsActive and IsOpen eq false and IsOpen eq true and ODataKind/ODataCode/IdActive eq false");
        }
コード例 #5
0
        public void ODataQueryBuilderList_Test_Contains_Simple()
        {
            var constValue = "p".ToLower();
            var newObject  = new ODataTypeEntity {
                TypeCode = "TypeCodeValue".ToLower()
            };
            var uri = _odataQueryBuilderDefault
                      .For <ODataTypeEntity>(s => s.ODataType)
                      .ByList()
                      .Filter((s, f) =>
                              f.Contains(f.ToLower(s.ODataKind.ODataCode.Code), "W") ||
                              f.Contains(s.ODataKind.ODataCode.Code, constValue) ||
                              f.Contains(s.ODataKindNew.ODataCode.Code, newObject.TypeCode) ||
                              f.Contains(s.ODataKindNew.ODataCode.Code, "55"))
                      .ToUri();

            uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=contains(tolower(ODataKind/ODataCode/Code),'W') or contains(ODataKind/ODataCode/Code,'p') or contains(ODataKindNew/ODataCode/Code,'typecodevalue') or contains(ODataKindNew/ODataCode/Code,'55')");
        }
コード例 #6
0
        public void ODataQueryBuilderList_Test_Substringof_Simple()
        {
            var constValue = "p".ToUpper();
            var newObject  = new ODataTypeEntity {
                TypeCode = "TypeCodeValue".ToUpper()
            };
            var uri = _odataQueryBuilderDefault
                      .For <ODataTypeEntity>(s => s.ODataType)
                      .ByList()
                      .Filter((s, f) =>
                              f.SubstringOf("W", f.ToUpper(s.ODataKind.ODataCode.Code)) ||
                              f.SubstringOf(constValue, s.ODataKind.ODataCode.Code) ||
                              f.SubstringOf(newObject.TypeCode, s.ODataKindNew.ODataCode.Code) ||
                              f.SubstringOf("55", s.ODataKindNew.ODataCode.Code))
                      .ToUri();

            uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=substringof('W',toupper(ODataKind/ODataCode/Code)) or substringof('P',ODataKind/ODataCode/Code) or substringof('TYPECODEVALUE',ODataKindNew/ODataCode/Code) or substringof('55',ODataKindNew/ODataCode/Code)");
        }
コード例 #7
0
        public void ODataQueryBuilderList_nested_concat_string_simple_success3()
        {
            var constParam       = ", ";
            var constParamObject = new ODataTypeEntity {
                ODataKind = new ODataKindEntity {
                    ODataCode = new ODataCodeEntity {
                        Code = constParam
                    }
                }
            };

            var uri = _odataQueryBuilderDefault
                      .For <ODataTypeEntity>(s => s.ODataType)
                      .ByList()
                      .Filter((s, f) => f.Concat(f.Concat(s.TypeCode, constParamObject.ODataKind.ODataCode.Code), s.ODataKind.ODataCode.Code) == "testTypeCode1, testTypeCode2")
                      .ToUri();

            uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=concat(concat(TypeCode,', '),ODataKind/ODataCode/Code) eq 'testTypeCode1, testTypeCode2'");
        }
コード例 #8
0
        public void ODataQueryBuilderList_Test_Contains_is_null_or_empty_value_ArgumentException()
        {
            var constValue = default(string);
            var newObject  = new ODataTypeEntity {
                TypeCode = string.Empty
            };

            _odataQueryBuilderDefault.Invoking(
                (r) => r
                .For <ODataTypeEntity>(s => s.ODataType)
                .ByList()
                .Filter((s, f) =>
                        f.Contains(f.ToLower(s.ODataKind.ODataCode.Code), null) ||
                        f.Contains(s.ODataKind.ODataCode.Code, constValue) ||
                        f.Contains(s.ODataKindNew.ODataCode.Code, newObject.TypeCode) ||
                        f.Contains(s.ODataKindNew.ODataCode.Code, string.Empty))
                .ToUri())
            .Should().Throw <ArgumentException>().WithMessage("Value is empty or null");
        }
コード例 #9
0
        public void ODataQueryBuilderList_Operator_In_Empty_Success()
        {
            var odataQueryBuilderOptions = new ODataQueryBuilderOptions {
                SuppressExceptionOfNullOrEmptyOperatorArgs = true
            };
            var odataQueryBuilder = new ODataQueryBuilder <ODataInfoContainer>(
                _commonFixture.BaseUri, odataQueryBuilderOptions);

            var constStrIds = default(IEnumerable <string>);
            var constEmprtyStrListIds = new string[] { }.ToList();
            var constIntIds = default(int[]);
            var constEmptyIntIds = new int[0];
            var constIntListIds = new[] { 123, 512 }.ToList();
            var newObject = new ODataTypeEntity {
                ODataKind = new ODataKindEntity {
                    Sequence = constIntListIds
                }
            };
            var newObjectSequenceArray = new ODataTypeEntity {
                ODataKind = new ODataKindEntity {
                    SequenceArray = constIntIds
                }
            };

            var uri = odataQueryBuilder
                      .For <ODataTypeEntity>(s => s.ODataType)
                      .ByList()
                      .Filter((s, f, o) => o.In(s.ODataKind.ODataCode.Code, constStrIds) &&
                              o.In(s.ODataKind.ODataCode.Code, constEmprtyStrListIds) &&
                              o.In(s.IdType, constIntIds) &&
                              o.In(s.IdType, constEmptyIntIds) &&
                              o.In(s.IdType, constIntListIds) &&
                              o.In((int)s.IdRule, constIntIds) &&
                              o.In((int)s.IdRule, constIntListIds) &&
                              o.In(s.ODataKind.IdKind, newObject.ODataKind.Sequence) &&
                              o.In(s.ODataKind.ODataCode.IdCode, newObjectSequenceArray.ODataKind.SequenceArray))
                      .ToUri();

            uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=IdType in (123,512) and IdRule in (123,512) and ODataKind/IdKind in (123,512)");
        }
コード例 #10
0
        public void ODataQueryBuilderList_Function_Date_Success()
        {
            var currentDateToday = new DateTime(2019, 2, 9);
            var currentDateNow   = new DateTime(2019, 2, 9, 1, 2, 4);
            var newObject        = new ODataTypeEntity {
                ODataKind = new ODataKindEntity {
                    EndDate = currentDateToday
                }
            };

            var uri = _odataQueryBuilderDefault
                      .For <ODataTypeEntity>(s => s.ODataType)
                      .ByList()
                      .Filter((s, f) =>
                              f.Date(s.ODataKind.OpenDate) == currentDateNow &&
                              s.ODataKind.OpenDate == currentDateToday &&
                              s.ODataKind.OpenDate == DateTime.Today &&
                              f.Date(s.Open) == DateTime.Today &&
                              f.Date(s.Open) == DateTimeOffset.Now &&
                              s.Open == DateTime.Today &&
                              s.Open == currentDateToday &&
                              f.Date(s.Open) == newObject.ODataKind.EndDate &&
                              f.Date(s.ODataKind.OpenDate) == new DateTime(2019, 7, 9) &&
                              f.Date(s.ODataKind.OpenDate) == new DateTimeOffset(currentDateToday) &&
                              f.Date((DateTimeOffset)s.BeginDate) == DateTime.Today)
                      .ToUri();

            uri.OriginalString.Should().Be($"http://mock/odata/ODataType?$filter=" +
                                           $"date(ODataKind/OpenDate) eq 2019-02-09T01:02:04Z " +
                                           $"and ODataKind/OpenDate eq 2019-02-09T00:00:00Z " +
                                           $"and ODataKind/OpenDate eq {DateTime.Today:s}Z " +
                                           $"and date(Open) eq {DateTime.Today:s}Z " +
                                           $"and date(Open) eq {DateTimeOffset.Now:s}Z " +
                                           $"and Open eq {DateTime.Today:s}Z " +
                                           $"and Open eq 2019-02-09T00:00:00Z " +
                                           $"and date(Open) eq 2019-02-09T00:00:00Z " +
                                           $"and date(ODataKind/OpenDate) eq 2019-07-09T00:00:00Z " +
                                           $"and date(ODataKind/OpenDate) eq 2019-02-09T00:00:00Z " +
                                           $"and date(BeginDate) eq {DateTime.Today:s}Z");
        }
コード例 #11
0
        public void ODataQueryBuilderList_Operator_In_is_null_4()
        {
            var constIntIds            = default(int[]);
            var newObjectSequenceArray = new ODataTypeEntity {
                ODataKind = new ODataKindEntity {
                    SequenceArray = constIntIds
                }
            };

            var odataQueryBuilderOptions = new ODataQueryBuilderOptions {
                SuppressExceptionOfNullOrEmptyOperatorArgs = false
            };
            var odataQueryBuilder = new ODataQueryBuilder <ODataInfoContainer>(
                _commonFixture.BaseUri, odataQueryBuilderOptions);

            odataQueryBuilder.Invoking(
                (r) => r
                .For <ODataTypeEntity>(s => s.ODataType)
                .ByList()
                .Filter((s, f, o) => o.In(s.ODataKind.ODataCode.IdCode, newObjectSequenceArray.ODataKind.SequenceArray))
                .ToUri())
            .Should().Throw <ArgumentException>().WithMessage("Enumeration is empty or null");
        }
コード例 #12
0
        public void ODataQueryBuilderList_Test_Contains_is_null_or_empty_value_Success()
        {
            var odataQueryBuilderOptions = new ODataQueryBuilderOptions {
                SuppressExceptionOfNullOrEmptyFunctionArgs = true
            };
            var odataQueryBuilder = new ODataQueryBuilder <ODataInfoContainer>(
                _commonFixture.BaseUri, odataQueryBuilderOptions);

            var constValue = "P";
            var newObject  = new ODataTypeEntity {
                TypeCode = string.Empty
            };
            var uri = odataQueryBuilder
                      .For <ODataTypeEntity>(s => s.ODataType)
                      .ByList()
                      .Filter((s, f) =>
                              f.Contains(f.ToLower(s.ODataKind.ODataCode.Code), null) ||
                              f.Contains(s.ODataKind.ODataCode.Code, constValue) ||
                              f.Contains(s.ODataKindNew.ODataCode.Code, newObject.TypeCode) ||
                              f.Contains(s.ODataKindNew.ODataCode.Code, string.Empty))
                      .ToUri();

            uri.OriginalString.Should().Be("http://mock/odata/ODataType?$filter=contains(ODataKind/ODataCode/Code,'P')");
        }