public void PrimitiveCollectionPropertyShouldCreateMatchingNode() { var state = new BindingState(Configuration); var binder = new InnerPathTokenBinder(FakeBindMethods.BindMethodReturningASingleDog, state); var token = new InnerPathToken("Nicknames", new DummyToken(), null /*namedValues*/); var result = binder.BindInnerPathSegment(token); result.ShouldBeCollectionPropertyAccessQueryNode(HardCodedTestModel.GetDogNicknamesProperty()); }
public void ComplexCollectionPropertyShouldCreateMatchingNode() { var state = new BindingState(Configuration); var binder = new InnerPathTokenBinder(FakeBindMethods.BindMethodReturningASinglePerson, state); var token = new InnerPathToken("PreviousAddresses", new DummyToken(), null /*namedValues*/); var result = binder.BindInnerPathSegment(token); result.ShouldBeCollectionComplexNode(HardCodedTestModel.GetPersonPreviousAddressesProp()); }
public void DeclaredPropertyOnOpenTypeShouldCreateMatchingNode() { var state = new BindingState(Configuration); var binder = new InnerPathTokenBinder(FakeBindMethods.BindMethodReturningASinglePainting, state); var token = new InnerPathToken("Colors", new DummyToken(), null /*namedValues*/); var result = binder.BindInnerPathSegment(token); result.ShouldBeCollectionPropertyAccessQueryNode(HardCodedTestModel.GetPaintingColorsProperty()); }
public void CollectionOfDateTimeOffsetShouldCreateMatchingNode() { var state = new BindingState(Configuration); var binder = new InnerPathTokenBinder(FakeBindMethods.BindMethodReturningASingleLion, state); var token = new InnerPathToken("AttackDates", new DummyToken(), null /*namedValues*/); var result = binder.BindInnerPathSegment(token); result.ShouldBeCollectionPropertyAccessQueryNode(HardCodedTestModel.GetLionAttackDatesProp()); }
public void OpenPropertyShouldCreateMatchingNode() { const string OpenPropertyName = "Emotions"; var state = new BindingState(Configuration); var binder = new InnerPathTokenBinder(FakeBindMethods.BindMethodReturningASinglePainting, state); var token = new InnerPathToken(OpenPropertyName, new DummyToken(), null /*namedValues*/); var result = binder.BindInnerPathSegment(token); result.ShouldBeSingleValueOpenPropertyAccessQueryNode(OpenPropertyName); }
public void CollectionNavigationPropertyShouldCreateMatchingNode() { var state = new BindingState(Configuration); var binder = new InnerPathTokenBinder(FakeBindMethods.BindMethodReturningASingleDog, state); var token = new InnerPathToken("MyPeople", new DummyToken(), null /*namedValues*/); var result = binder.BindInnerPathSegment(token); Assert.Same(HardCodedTestModel.GetDogsSet().FindNavigationTarget(HardCodedTestModel.GetDogMyPeopleNavProp()), result.ShouldBeCollectionNavigationNode(HardCodedTestModel.GetDogMyPeopleNavProp()).NavigationSource); }
public void InnerPathTokenBinderShouldFailIfPropertySourceIsNotASingleValue() { var state = new BindingState(Configuration); state.ImplicitRangeVariable = NodeFactory.CreateImplicitRangeVariable(HardCodedTestModel.GetDogTypeReference(), HardCodedTestModel.GetDogsSet()); var metadataBinder = new MetadataBinder(state); var binder = new InnerPathTokenBinder(metadataBinder.Bind, state); var token = new InnerPathToken("MyDog", new InnerPathToken("MyPeople", null, null), null); Action bind = () => binder.BindInnerPathSegment(token); bind.Throws <ODataException>(Strings.MetadataBinder_PropertyAccessSourceNotSingleValue("MyDog")); }
public void KeyLookupOnNavPropIntegrationTest() { var state = new BindingState(Configuration); state.ImplicitRangeVariable = NodeFactory.CreateImplicitRangeVariable(HardCodedTestModel.GetDogTypeReference(), HardCodedTestModel.GetDogsSet()); var metadataBinder = new MetadataBinder(state); var binder = new InnerPathTokenBinder(metadataBinder.Bind, state); var token = new InnerPathToken("MyPeople", null, new[] { new NamedValue(null, new LiteralToken(123)) }); var result = binder.BindInnerPathSegment(token); result.ShouldBeKeyLookupQueryNode(); }
public void MissingPropertyShouldThrow() { const string MissingPropertyName = "ThisPropertyDoesNotExist"; var state = new BindingState(Configuration); var binder = new InnerPathTokenBinder(FakeBindMethods.BindMethodReturningASingleDog, state); var token = new InnerPathToken(MissingPropertyName, new DummyToken(), null /*namedValues*/); Action bind = () => binder.BindInnerPathSegment(token); string expectedMessage = ODataErrorStrings.MetadataBinder_PropertyNotDeclared(HardCodedTestModel.GetDogType().FullTypeName(), MissingPropertyName); bind.Throws <ODataException>(expectedMessage); }