public void Should_be_able_to_bind_interfaces() { var binder = new InterfaceModelBinder(); var locator = new DefaultModelBinderLocator(new IModelBinder[] { binder }, this.defaultBinder); var locatedBinder = locator.GetBinderForType(typeof(Concrete), A <NancyContext> .Ignored); var result = locatedBinder.Bind(null, typeof(Concrete)) as IAmAnInterface; result.ShouldNotBeNull(); }
public void Should_return_a_binder_that_returns_true_for_canbind() { var fakeBinder = A.Fake <IModelBinder>(); A.CallTo(() => fakeBinder.CanBind(A <Type> .Ignored)).Returns(true); var locator = new DefaultModelBinderLocator(new IModelBinder[] { fakeBinder }, this.defaultBinder); var result = locator.GetBinderForType(typeof(Model), A <NancyContext> .Ignored); result.ShouldBeSameAs(fakeBinder); }
public void Should_return_default_binder_if_no_specific_binder_exists() { var fakeBinder = A.Fake <IModelBinder>(); A.CallTo(() => fakeBinder.CanBind(A <Type> .Ignored)).Returns(false); var locator = new DefaultModelBinderLocator(new IModelBinder[] { fakeBinder }, this.defaultBinder); var result = locator.GetBinderForType(typeof(Model), A <NancyContext> .Ignored); result.ShouldBeSameAs(this.defaultBinder); }
public void Should_be_able_to_bind_interfaces_using_module_extensions() { var binder = new InterfaceModelBinder(); var locator = new DefaultModelBinderLocator(new IModelBinder[] { binder }, this.defaultBinder); var module = new TestBindingModule(); module.Context = new NancyContext() { Request = new FakeRequest("GET", "/") }; module.ModelBinderLocator = locator; var result = module.TestBindInterface(); var result2 = module.TestBindConcrete(); result.ShouldNotBeNull(); result2.ShouldNotBeNull(); }