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