Exemplo n.º 1
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.IsType <SolrNetListener <Entity> >(listener);
            Assert.Equal(addParameters, ((IListenerSettings)listener).AddParameters);
        }
Exemplo n.º 2
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.True(nhConfig.EventListeners.PostInsertEventListeners.Length > 0);
            Assert.True(nhConfig.EventListeners.PostUpdateEventListeners.Length > 0);
            Assert.True(nhConfig.EventListeners.PostDeleteEventListeners.Length > 0);
            var listener = nhConfig.EventListeners.PostInsertEventListeners[0];

            Assert.IsType <SolrNetListener <Entity> >(listener);
        }
Exemplo n.º 3
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.True(nhConfig.EventListeners.PostInsertEventListeners.Length > 0);
            Assert.True(nhConfig.EventListeners.PostUpdateEventListeners.Length > 0);
            Assert.True(nhConfig.EventListeners.PostDeleteEventListeners.Length > 0);
            var listener = nhConfig.EventListeners.PostInsertEventListeners[0];

            Assert.IsType <SolrNetListener <Entity> >(listener);
        }
Exemplo n.º 4
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.Equal(2, nhConfig.EventListeners.PostInsertEventListeners.Length);
        }
Exemplo n.º 5
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.True(e.Message.Contains("property 'Id'"));
                Console.WriteLine(e.Message);
            }

            mapper.getFields.Verify();
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
 public void DeleteDocumentWithoutUniqueKey_ShouldThrow()
 {
     Assert.Throws <SolrNetException>(() => {
         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);
     });
 }
Exemplo n.º 8
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);
        }
Exemplo n.º 9
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.Same(m, mapper);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
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);
        }
Exemplo n.º 13
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();
        }
Exemplo n.º 14
0
        public void AddWithBoost_single_doc_calls_operations_with_null_add_parameters()
        {
            var basicServer = new MSolrBasicOperations <TestDocument>();

            basicServer.addWithBoost += (a, b) => {
                Assert.Null(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.Equal(1, basicServer.addWithBoost.Calls);
        }
Exemplo n.º 15
0
        public void Add_single_doc_calls_operations_with_null_add_parameters()
        {
            var basicServer = new MSolrBasicOperations <TestDocument>();

            basicServer.addWithBoost += (docs, param) => {
                Assert.Null(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();
        }
Exemplo n.º 16
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.Equal(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.Equal(1, basicServer.addWithBoost.Calls);
        }