Exemplo n.º 1
0
        public void SetBasedOperations_EachSegmentOnEntityCollectionWithFilterSegmentAndFilterQuery_ReturnsSuccess()
        {
            // Scenario of this test case:
            // A client is sending a PATCH request to update all people with ID eq 42 and return the updated people
            // whose SSN eq 'num'.
            ParseUriAndVerify(
                new Uri("http://gobbledygook/People/$filter(@p1)/$each?$filter=SSN eq 'num'&@p1=ID eq 42"),
                (oDataPath, filterClause, aliasNodes) =>
            {
                oDataPath.Count.Should().Be(3);

                List <FilterSegment> filterSegments = oDataPath.OfType <FilterSegment>().ToList();
                filterSegments.Count.Should().Be(1);

                filterSegments[0].Expression.ShouldBeParameterAliasNode("@p1", EdmCoreModel.Instance.GetBoolean(false));
                filterSegments[0].TargetEdmType.ToString().ShouldBeEquivalentTo(HardCodedTestModel.GetPersonType().ToString());
                filterSegments[0].SingleResult.Should().BeFalse();

                filterClause.Expression.ShouldBeBinaryOperatorNode(BinaryOperatorKind.Equal).Right.ShouldBeConstantQueryNode("num");
                aliasNodes["@p1"].ShouldBeBinaryOperatorNode(BinaryOperatorKind.Equal).Right.ShouldBeConstantQueryNode(42);

                EachSegment eachSegment = oDataPath.Last() as EachSegment;
                eachSegment.Should().NotBeNull();
                eachSegment.TargetKind.Should().Be(RequestTargetKind.Resource);
                eachSegment.TargetEdmNavigationSource.Should().Be(HardCodedTestModel.GetPeopleSet());
            });
        }
Exemplo n.º 2
0
        public void SetBasedOperations_EachSegmentOnComplexTypeCollection_ReturnsSuccess()
        {
            ParseUriAndVerify(
                new Uri("http://gobbledygook/People/1/PreviousAddresses/$each"),
                (oDataPath, filterClause, aliasNodes) =>
            {
                oDataPath.Count.Should().Be(4);

                EachSegment eachSegment = oDataPath.Last() as EachSegment;
                eachSegment.Should().NotBeNull();
                eachSegment.TargetKind.Should().Be(RequestTargetKind.Resource);
                eachSegment.TargetEdmNavigationSource.Should().Be(HardCodedTestModel.GetPeopleSet());
            });
        }
Exemplo n.º 3
0
        public void SetBasedOperations_EachSegmentOnBoundFunctionResults_ReturnsSuccess()
        {
            ParseUriAndVerify(
                new Uri("http://gobbledygook/People/Fully.Qualified.Namespace.GetPeopleWhoHaveDogs/$each"),
                (oDataPath, filterClause, aliasNodes) =>
            {
                oDataPath.Count.Should().Be(3);

                EachSegment eachSegment = oDataPath.Last() as EachSegment;
                eachSegment.Should().NotBeNull();
                eachSegment.TargetKind.Should().Be(RequestTargetKind.Resource);
                eachSegment.TargetEdmNavigationSource.Should().Be(HardCodedTestModel.GetPeopleSet());
                eachSegment.TargetEdmType.Should().Be(HardCodedTestModel.GetPersonType());
            });
        }
Exemplo n.º 4
0
        public void SetBasedOperations_EachSegmentOnNavigationProperty_ReturnsSuccess()
        {
            ParseUriAndVerify(
                new Uri("http://gobbledygook/People/1/MyFriendsDogs/$each"),
                (oDataPath, filterClause, aliasNodes) =>
            {
                oDataPath.Count.Should().Be(4);

                EachSegment eachSegment = oDataPath.Last() as EachSegment;
                eachSegment.Should().NotBeNull();
                eachSegment.TargetKind.Should().Be(RequestTargetKind.Resource);
                eachSegment.TargetEdmNavigationSource.Should().Be(HardCodedTestModel.GetDogsSet());
                eachSegment.TargetEdmType.Should().Be(HardCodedTestModel.GetDogType());
            });
        }
Exemplo n.º 5
0
        public void SetBasedOperations_EachSegmentOnEntityCollectionWithFilterQuery_ReturnsSuccess()
        {
            ParseUriAndVerify(
                new Uri("http://gobbledygook/People/$each?$filter=ID eq 42"),
                (oDataPath, filterClause, aliasNodes) =>
            {
                oDataPath.Count.Should().Be(2);

                filterClause.Expression.ShouldBeBinaryOperatorNode(BinaryOperatorKind.Equal).Right.ShouldBeConstantQueryNode(42);

                EachSegment eachSegment = oDataPath.Last() as EachSegment;
                eachSegment.Should().NotBeNull();
                eachSegment.TargetKind.Should().Be(RequestTargetKind.Resource);
                eachSegment.TargetEdmNavigationSource.Should().Be(HardCodedTestModel.GetPeopleSet());
            });
        }
Exemplo n.º 6
0
        public void SetBasedOperations_EachSegmentOnFilteredBoundFunctionResults_ReturnsSuccess()
        {
            ParseUriAndVerify(
                new Uri("http://gobbledygook/People/$filter(@p1)/Fully.Qualified.Namespace.GetPeopleWhoHaveDogs/$each?@p1=ID eq 1"),
                (oDataPath, filterClause, aliasNodes) =>
            {
                oDataPath.Count.Should().Be(4);

                List <FilterSegment> filterSegments = oDataPath.OfType <FilterSegment>().ToList();
                filterSegments.Count.Should().Be(1);
                filterSegments[0].Expression.ShouldBeParameterAliasNode("@p1", EdmCoreModel.Instance.GetBoolean(false));
                filterSegments[0].TargetEdmType.ToString().ShouldBeEquivalentTo(HardCodedTestModel.GetPersonType().ToString());
                filterSegments[0].SingleResult.Should().BeFalse();

                filterClause.Should().BeNull();
                aliasNodes["@p1"].ShouldBeBinaryOperatorNode(BinaryOperatorKind.Equal).Right.ShouldBeConstantQueryNode(1);

                EachSegment eachSegment = oDataPath.Last() as EachSegment;
                eachSegment.Should().NotBeNull();
                eachSegment.TargetKind.Should().Be(RequestTargetKind.Resource);
                eachSegment.TargetEdmNavigationSource.Should().Be(HardCodedTestModel.GetPeopleSet());
                eachSegment.TargetEdmType.Should().Be(HardCodedTestModel.GetPersonType());
            });
        }
Exemplo n.º 7
0
        public void SetBasedOperations_EachSegmentOnTypeCastedMembersWithFilterSegmentAndFilterQuery_ReturnsSuccess()
        {
            ParseUriAndVerify(
                new Uri("http://gobbledygook/People/Fully.Qualified.Namespace.Employee/$filter(@p1)/$each?$filter=ID eq 42&@p1=WorkEmail eq '*****@*****.**'"),
                (oDataPath, filterClause, aliasNodes) =>
            {
                oDataPath.Count.Should().Be(4);

                List <FilterSegment> filterSegments = oDataPath.OfType <FilterSegment>().ToList();
                filterSegments.Count.Should().Be(1);
                filterSegments[0].Expression.ShouldBeParameterAliasNode("@p1", EdmCoreModel.Instance.GetBoolean(true));
                filterSegments[0].TargetEdmType.ToString().ShouldBeEquivalentTo(HardCodedTestModel.GetEmployeeType().ToString());
                filterSegments[0].SingleResult.Should().BeFalse();

                filterClause.Expression.ShouldBeBinaryOperatorNode(BinaryOperatorKind.Equal).Right.ShouldBeConstantQueryNode(42);
                aliasNodes["@p1"].ShouldBeBinaryOperatorNode(BinaryOperatorKind.Equal).Right.ShouldBeConstantQueryNode("*****@*****.**");

                EachSegment eachSegment = oDataPath.Last() as EachSegment;
                eachSegment.Should().NotBeNull();
                eachSegment.TargetKind.Should().Be(RequestTargetKind.Resource);
                eachSegment.TargetEdmNavigationSource.Should().Be(HardCodedTestModel.GetPeopleSet());
                eachSegment.TargetEdmType.Should().Be(HardCodedTestModel.GetEmployeeType());
            });
        }