public static void RegisterXrmModels(ModelBinderDictionary binders) { var customEntityModelBinder = new EntityModelBinder(); if (Config != null) { foreach (ModelBindingElement modelBinding in Config.ModelBindings) { var type = GetType($"{Config.ModelNamespace}.{modelBinding.Type}"); if (type != null) { lock (Locker) { if (!binders.ContainsKey(type)) { binders.Add(type, customEntityModelBinder); } } if (modelBinding.Enumerable) { type = typeof(IEnumerable <>).MakeGenericType(type); lock (Locker) { if (!binders.ContainsKey(type)) { binders.Add(type, customEntityModelBinder); } } } } } } }
public void SetUp() { parent = new Parent { Id = 10, Name = "Parent from repository", Child = new Child { Id = 3, Name = "Child of Parent from repository" } }; parentRepository = new FakeRepository(id => parent); childRepository = new FakeRepository(id => parent.Child); repositoryResolver = MockRepository.GenerateStub <IRepositoryResolver>(); repositoryResolver.Stub(r => r.GetRepository(typeof(Parent))).Return(parentRepository); repositoryResolver.Stub(r => r.GetRepository(typeof(Child))).Return(childRepository); entityModelBinder = new EntityModelBinder(repositoryResolver); controllerContext = new ControllerContext { HttpContext = MockRepository.GenerateStub <HttpContextBase>() }; request = MockRepository.GenerateStub <HttpRequestBase>(); controllerContext.HttpContext.Stub(x => x.Request).Return(request); entityModelBinder.SetModelBinderDictionary(new ModelBinderDictionary { DefaultBinder = entityModelBinder }); }
public void bind_model_should_be_null_when_the_id_is_null() { using (var nested = container.GetNestedContainer()) { var context = nested.GetInstance <IBindingContext>(); var binder = new EntityModelBinder(); binder.Bind(typeof(Site), context).ShouldBeOfType <Site>() .Id.ShouldEqual(Guid.Empty); } }
public void bind_model_should_return_the_correct_entity_if_the_Id_is_a_guid() { using (var nested = container.GetNestedContainer()) { var site = new Site(); nested.GetInstance <IRepository>().Save(site); requestData["Id"] = site.Id.ToString(); var context = nested.GetInstance <IBindingContext>(); var binder = new EntityModelBinder(); binder.Bind(typeof(Site), context).ShouldBeOfType <Site>().Id.ShouldEqual(site.Id); } }
public void SetUp() { //Arrange parent = new Parent { Id = "vincent-1", Name = "Vincent from repository", Child = new Child { Id = "jasper-6", Name = "Jasper from repository" } }; session = M<IDocumentSession>(); session.Expect(r => r.Load<Parent>(parent.Id)).Return(parent); session.Expect(r => r.Load<Child>(parent.Child.Id)).Return(parent.Child); request = S<HttpRequestBase>(); controllerContext = new ControllerContext { HttpContext = S<HttpContextBase>() }; controllerContext.HttpContext.Stub(x => x.Request).Return(request); entityModelBinder = new EntityModelBinder<Parent>(session); entityModelBinder.SetModelBinderDictionary(new ModelBinderDictionary { DefaultBinder = entityModelBinder }); var validatorProvider = M<ModelValidatorProvider>(); var locator = M<IServiceLocator>(); ServiceLocator.SetLocatorProvider(() => locator); locator.Expect(l => l.GetAllInstances(typeof(IModelBinderProvider))).Return(new List<IModelBinderProvider> { new ConventionModelBinderProvider() }); locator.Expect(l => l.GetAllInstances(typeof(ModelValidatorProvider))).Return(new List<ModelValidatorProvider> { validatorProvider }); ModelBinderProviders.BinderProviders.Add(new ConventionModelBinderProvider()); DependencyResolver.SetResolver(new ServiceLocatorDependencyResolver()); }
public void SetUp() { mySubclass = new MySubclass { Id = myBaseId, Name = "the name" }; var repository = MockRepository.GenerateStub <IRepository>(); var repositoryResolver = MockRepository.GenerateStub <IRepositoryResolver>(); repositoryResolver.Stub(r => r.GetRepository(typeof(MyBase))).Return(repository); repositoryResolver.Stub(r => r.GetRepository(typeof(MySubclass))).Return(repository); repository.Stub(r => r.GetById(myBaseId)).Return(mySubclass); entityModelBinder = new EntityModelBinder(repositoryResolver); controllerContext = new ControllerContext { HttpContext = MockRepository.GenerateStub <HttpContextBase>() }; request = MockRepository.GenerateStub <HttpRequestBase>(); controllerContext.HttpContext.Stub(x => x.Request).Return(request); }