public void VerifyThatTargetTypeIsCreatedWhenDerivedTypeIsNotFound() { var valueProvider = MockRepository.GenerateMock <IValueProvider>(); var typeStampOperator = MockRepository.GenerateMock <ITypeStampOperator>(); valueProvider.Expect(b => b.ContainsPrefix("test")) .Return(true); typeStampOperator.Expect(a => a.DetectTypeStamp(null, null)).IgnoreArguments().Return(null); var binder = new DerivedTypeModelBinder(typeStampOperator); object model = binder.BindModel(new ControllerContext(), new ModelBindingContext { ModelMetadata = new ModelMetadata(new EmptyModelMetadataProvider(), typeof(DerivedTypeModelBinder), null, typeof(DerivedTypeModelBinderTests), "propertyName" ), ModelName = "test", ValueProvider = valueProvider }); Assert.That(model, Is.TypeOf(typeof(DerivedTypeModelBinderTests))); }
public void ValidateBehaviorWhenValidDerivedTypeIsFound() { DerivedTypeModelBinderCache.Reset(); DerivedTypeModelBinderCache.RegisterDerivedTypes(typeof(DerivedTypeModelBinderTests), new[] { typeof(StubClass) }); var valueProvider = MockRepository.GenerateMock <IValueProvider>(); var typeStampOperator = MockRepository.GenerateMock <ITypeStampOperator>(); valueProvider.Expect(b => b.ContainsPrefix("test")) .Return(true); typeStampOperator.Expect(a => a.DetectTypeStamp(null, null)).IgnoreArguments().Return(DerivedTypeModelBinderCache.GetTypeName(typeof(StubClass))); var binder = new DerivedTypeModelBinder(typeStampOperator); var bindingContext = new ModelBindingContext { ModelMetadata = new ModelMetadata(new EmptyModelMetadataProvider(), typeof(DerivedTypeModelBinder), null, typeof(DerivedTypeModelBinderTests), "propertyName" ), ModelName = "test", ValueProvider = valueProvider }; object model = binder.BindModel(new ControllerContext(), bindingContext); Assert.That(model, Is.TypeOf(typeof(StubClass))); Assert.That(bindingContext.ModelType.FullName, Is.EqualTo(typeof(StubClass).FullName)); DerivedTypeModelBinderCache.Reset(); }
public void ExpectExceptionOnTypeThatIsNotRegistered() { var valueProvider = MockRepository.GenerateMock <IValueProvider>(); var typeStampOperator = MockRepository.GenerateMock <ITypeStampOperator>(); valueProvider.Expect(b => b.ContainsPrefix("test")) .Return(true); typeStampOperator.Expect(a => a.DetectTypeStamp(null, null)).IgnoreArguments().Return("foo"); var binder = new DerivedTypeModelBinder(typeStampOperator); Assert.Throws <InvalidOperationException>(() => binder.BindModel(new ControllerContext(), new ModelBindingContext { ModelMetadata = new ModelMetadata(new EmptyModelMetadataProvider(), typeof(DerivedTypeModelBinder), null, typeof(DerivedTypeModelBinderTests), "propertyName" ), ModelName = "test", ValueProvider = valueProvider })); }