Пример #1
0
        public void InvalidCastReportsFieldName() {
            var mapper = new MReadOnlyMappingManager();
            mapper.getFields += type => {
                Assert.AreEqual(typeof (Entity), type);
                var model = new SolrFieldModel (
                    fieldName : "id",
                    property : typeof (Entity).GetProperty("Id"));
                return new Dictionary<string, SolrFieldModel> {
                    {"Id", model}
                };
            };
            mapper.getFields &= x => x.Expect(1);

            var parser = new MSolrFieldParser {
                canHandleSolrType = _ => true,
                canHandleType = _ => true,
                parse = (a,b) => "something",
            };

            var v = new RegularDocumentVisitor(parser, mapper);
            var doc = new Entity();
            var field = new XElement("tag");
            try {
                v.Visit(doc, "Id", field);
                Assert.Fail("Should have failed with invalid cast");
            } catch (ArgumentException e) {
                Assert.Contains(e.Message, "property 'Id'");
                Console.WriteLine(e.Message);
            }

            mapper.getFields.Verify();
        }
Пример #2
0
 public void ReplaceMapper() {
     var builder = new ContainerBuilder();
     var mapper = new MReadOnlyMappingManager();
     builder.RegisterModule(new SolrNetModule("http://localhost:8983/solr") {Mapper = mapper});
     var container = builder.Build();
     var m = container.Resolve<IReadOnlyMappingManager>();
     Assert.AreSame(mapper, m);
 }
Пример #3
0
 public void ReplacingMapper() {
     var mapper = new MReadOnlyMappingManager();
     var solrFacility = new SolrNetFacility("http://localhost:8983/solr") {Mapper = mapper};
     var container = new WindsorContainer();
     container.AddFacility("solr", solrFacility);
     var m = container.Resolve<IReadOnlyMappingManager>();
     Assert.AreSame(m, mapper);
 }
 public void GetRegistered() {
     var innerMapper = new MReadOnlyMappingManager();
     innerMapper.getRegisteredTypes += () => new[] {typeof (TestDocument)};
     var mapper = new MemoizingMappingManager(innerMapper);
     var types = mapper.GetRegisteredTypes();
     Assert.AreEqual(1, types.Count);
     Assert.AreEqual(typeof (TestDocument), types.First());
     mapper.GetRegisteredTypes();
 }
        public void GetUniqueKeyIsMemoized() {
            var innerMapper = new MReadOnlyMappingManager();
            innerMapper.getUniqueKey += t => {
	            Assert.AreEqual(typeof (TestDocument), t);
	            return new SolrFieldModel(property : typeof (TestDocument).GetProperty("Id"),
	                                      fieldName : "id");
            };
            var mapper = new MemoizingMappingManager(innerMapper);
            mapper.GetUniqueKey(typeof(TestDocument));
            mapper.GetUniqueKey(typeof(TestDocument));
            Assert.AreEqual(1, innerMapper.getUniqueKey.Calls);
        }
 public void CallsInnerJustOnce() {
     var innerMapper = new MReadOnlyMappingManager();
     innerMapper.getFields += t => {
         Assert.AreEqual(typeof (TestDocument), t);
         return new Dictionary<string, SolrFieldModel> {
             {"id", new SolrFieldModel (property : typeof (TestDocument).GetProperty("Id"), fieldName : "id")},
         };
     };
     var mapper = new MemoizingMappingManager(innerMapper);
     mapper.GetFields(typeof (TestDocument));
     mapper.GetFields(typeof (TestDocument));
     Assert.AreEqual(1, innerMapper.getFields.Calls);
 }
Пример #7
0
 public void FixtureSetup() {
     var nhConfig = ConfigurationExtensions.GetNhConfig();
     mockSolr = new MSolrOperations<Entity>();
     var mapper = new MReadOnlyMappingManager();
     var provider = new MServiceProvider();
     provider.getService += t => {
         if (t == typeof(IReadOnlyMappingManager))
             return mapper;
         throw new ArgumentException("Unexpected");
     };
     NHHelper.SetListener(nhConfig, GetSolrNetListener(mockSolr));
     new SchemaExport(nhConfig).Execute(false, true, false);
     sessionFactory = nhConfig.BuildSessionFactory();
 }
Пример #8
0
        public void AddWithBoost_single_doc_calls_operations_with_null_add_parameters() {
            var basicServer = new MSolrBasicOperations<TestDocument>();
            basicServer.addWithBoost += (a,b) => {
                Assert.IsNull(b);
                return null;
            };

            var mapper = new MReadOnlyMappingManager();
            var validationManager = new MMappingValidator();

            var s = new SolrServer<TestDocument>(basicServer, mapper, validationManager);
            var t = new TestDocument();
            s.AddWithBoost(t, 2.1);

            Assert.AreEqual(1, basicServer.addWithBoost.Calls);
        }
Пример #9
0
        public void Add_single_doc_calls_operations_with_null_add_parameters() {
            var basicServer = new MSolrBasicOperations<TestDocument>();
            basicServer.addWithBoost += (docs, param) => {
                Assert.IsNull(param);
                return null;
            };
            basicServer.addWithBoost &= x => x.Expect(1);

            var mapper = new MReadOnlyMappingManager();
            var validationManager = new MMappingValidator();

            var s = new SolrServer<TestDocument>(basicServer, mapper, validationManager);
            var t = new TestDocument();
            s.Add(t);
            basicServer.addWithBoost.Verify();
        }
Пример #10
0
        public void Add_single_doc_with_add_parameters_calls_operations_with_same_add_parameters() {
            var parameters = new AddParameters { CommitWithin = 4343 };
            var basicServer = new MSolrBasicOperations<TestDocument>();
            basicServer.addWithBoost += (_, p) => {
                Assert.AreEqual(parameters, p);
                return null;
            };

            var mapper = new MReadOnlyMappingManager();
            var validationManager = new MMappingValidator();

            var s = new SolrServer<TestDocument>(basicServer, mapper, validationManager);
            var t = new TestDocument();
            s.Add(t, parameters);

            Assert.AreEqual(1, basicServer.addWithBoost.Calls);
        }
Пример #11
0
        public void Configure_with_addparameters() {
            var nhConfig = ConfigurationExtensions.GetNhConfig();
            var mapper = new MReadOnlyMappingManager();
            mapper.getRegisteredTypes += () => new[] {typeof (Entity)};
            var solr = new MSolrOperations<Entity>();

            var provider = new MServiceProvider();
            provider.getService += MServiceLocator.Table(new Dictionary<System.Type, object> {
                {typeof(IReadOnlyMappingManager), mapper},
                {typeof(ISolrOperations<Entity>), solr},
            });

            var addParameters = new AddParameters {CommitWithin = 4343};
            var helper = new CfgHelper(provider);
            helper.Configure(nhConfig, true, addParameters);
            var listener = nhConfig.EventListeners.PostInsertEventListeners[0];
            Assert.IsInstanceOfType<SolrNetListener<Entity>>(listener);
            Assert.AreEqual(addParameters, ((IListenerSettings)listener).AddParameters);
        }
Пример #12
0
        public void Configure_from_servicelocator() {
            var mapper = new MReadOnlyMappingManager();
            mapper.getRegisteredTypes += () => new[] {typeof (Entity)};

            var serviceLocator = new MServiceLocator();
            serviceLocator.getInstance += MServiceLocator.One<IReadOnlyMappingManager>(mapper);

            var solr = new MSolrOperations<Entity>();
            serviceLocator.getService += MServiceLocator.One<ISolrOperations<Entity>>(solr);
            ServiceLocator.SetLocatorProvider(() => serviceLocator);
            var nhConfig = ConfigurationExtensions.GetNhConfig();
            var helper = new CfgHelper();
            helper.Configure(nhConfig, true);
            Assert.GreaterThan(nhConfig.EventListeners.PostInsertEventListeners.Length, 0);
            Assert.GreaterThan(nhConfig.EventListeners.PostUpdateEventListeners.Length, 0);
            Assert.GreaterThan(nhConfig.EventListeners.PostDeleteEventListeners.Length, 0);
            var listener = nhConfig.EventListeners.PostInsertEventListeners[0];
            Assert.IsInstanceOfType<SolrNetListener<Entity>>(listener);
        }
Пример #13
0
        public void Configure_from_serviceprovider() {
            var nhConfig = ConfigurationExtensions.GetNhConfig();

            var provider = new MServiceProvider();
            var mapper = new MReadOnlyMappingManager();
            mapper.getRegisteredTypes += () => new[] {typeof (Entity)};

            var solr = new MSolrOperations<Entity>();
            provider.getService += MServiceLocator.Table(new Dictionary<System.Type, object> {
                {typeof (IReadOnlyMappingManager), mapper},
                {typeof (ISolrOperations<Entity>), solr},
            });
            var helper = new CfgHelper(provider);
            helper.Configure(nhConfig, true);
            Assert.GreaterThan(nhConfig.EventListeners.PostInsertEventListeners.Length, 0);
            Assert.GreaterThan(nhConfig.EventListeners.PostUpdateEventListeners.Length, 0);
            Assert.GreaterThan(nhConfig.EventListeners.PostDeleteEventListeners.Length, 0);
            var listener = nhConfig.EventListeners.PostInsertEventListeners[0];
            Assert.IsInstanceOfType<SolrNetListener<Entity>>(listener);
        }
Пример #14
0
        public void Does_not_override_existing_listeners() {
            var nhConfig = ConfigurationExtensions.GetNhConfig();

            var mockListener = new MPostInsertEventListener();
            nhConfig.SetListener(ListenerType.PostInsert, mockListener);

            var mapper = new MReadOnlyMappingManager();
            mapper.getRegisteredTypes += () => new[] {typeof (Entity)};

            var solr = new MSolrOperations<Entity>();

            var provider = new MServiceProvider();
            provider.getService += MServiceLocator.Table(new Dictionary<System.Type, object> {
                {typeof(IReadOnlyMappingManager), mapper},
                {typeof(ISolrOperations<Entity>), solr},
            });

            var helper = new CfgHelper(provider);
            helper.Configure(nhConfig, true);
            Assert.AreEqual(2, nhConfig.EventListeners.PostInsertEventListeners.Length);
        }
Пример #15
0
 public void DeleteDocumentWithUniqueKey()
 {
     var mapper = new MReadOnlyMappingManager();
     mapper.getUniqueKey += t => {
         Assert.AreEqual(typeof(TestDocumentWithUniqueKey), t);
         return new SolrFieldModel {
             Property = typeof (TestDocumentWithUniqueKey).GetProperty("id"),
             FieldName = "id",
         };
     };
     var basicServer = new MSolrBasicOperations<TestDocumentWithUniqueKey>();
     basicServer.delete &= x => x.Stub();
     var ops = new SolrServer<TestDocumentWithUniqueKey>(basicServer, mapper, null);
     ops.Delete(new TestDocumentWithUniqueKey());
     Assert.AreEqual(1, mapper.getUniqueKey.Calls);
 }
Пример #16
0
 public void DeleteDocumentWithoutUniqueKey_ShouldThrow()
 {
     var mapper = new MReadOnlyMappingManager();
     mapper.getUniqueKey += t => {
         Assert.AreEqual(typeof(TestDocumentWithoutUniqueKey), t);
         return null;
     };
     var ops = new SolrServer<TestDocumentWithoutUniqueKey>(null, mapper, null);
     ops.Delete(new TestDocumentWithoutUniqueKey());
     Assert.AreEqual(1, mapper.getUniqueKey.Calls);
 }