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(); }
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); }
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); }
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(); }
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); }
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(); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }