Пример #1
0
        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);
                                }
                            }
                        }
                    }
                }
            }
        }
Пример #2
0
        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
            });
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        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);
        }