def test_log_query(self): from django.conf import settings from haystack import backends backends.reset_search_queries() self.assertEqual(len(backends.queries), 0) # Stow. old_debug = settings.DEBUG settings.DEBUG = False len(self.sq.get_results()) self.assertEqual(len(backends.queries), 0) settings.DEBUG = True # Redefine it to clear out the cached results. self.sq = SearchQuery(backend=SearchBackend()) self.sq.add_filter(SQ(name='bar')) len(self.sq.get_results()) self.assertEqual(len(backends.queries), 1) self.assertEqual(backends.queries[0]['query_string'], 'name:bar') # And again, for good measure. self.sq = SearchQuery(backend=SearchBackend()) self.sq.add_filter(SQ(name='bar')) self.sq.add_filter(SQ(text='moof')) len(self.sq.get_results()) self.assertEqual(len(backends.queries), 2) self.assertEqual(backends.queries[0]['query_string'], 'name:bar') self.assertEqual(backends.queries[1]['query_string'], u'(name:bar AND text:moof)') # Restore. settings.DEBUG = old_debug
def setUp(self): super(SolrSearchBackendTestCase, self).setUp() # Wipe it clean. self.raw_solr = pysolr.Solr(settings.HAYSTACK_SOLR_URL) clear_solr_index() self.site = SearchSite() self.sb = SearchBackend(site=self.site) self.smmi = SolrMockSearchIndex(MockModel, backend=self.sb) self.smtmmi = SolrMaintainTypeMockSearchIndex(MockModel, backend=self.sb) self.site.register(MockModel, SolrMockSearchIndex) # Stow. import haystack self.old_site = haystack.site haystack.site = self.site self.sample_objs = [] for i in xrange(1, 4): mock = MockModel() mock.id = i mock.author = 'daniel%s' % i mock.pub_date = datetime.date(2009, 2, 25) - datetime.timedelta(days=i) self.sample_objs.append(mock)
def setUp(self): super(SolrBoostBackendTestCase, self).setUp() # Wipe it clean. self.raw_solr = pysolr.Solr(settings.HAYSTACK_SOLR_URL) clear_solr_index() self.site = SearchSite() self.sb = SearchBackend(site=self.site) self.smmi = SolrBoostMockSearchIndex(AFourthMockModel, backend=self.sb) self.site.register(AFourthMockModel, SolrBoostMockSearchIndex) # Stow. import haystack self.old_site = haystack.site haystack.site = self.site self.sample_objs = [] for i in xrange(1, 5): mock = AFourthMockModel() mock.id = i if i % 2: mock.author = 'daniel' mock.editor = 'david' else: mock.author = 'david' mock.editor = 'daniel' mock.pub_date = datetime.date(2009, 2, 25) - datetime.timedelta(days=i) self.sample_objs.append(mock)
def test_altered_names(self): sq = SearchQuery(backend=SearchBackend()) sq.add_filter(SQ(content='hello')) sq.add_model(MockModel) self.assertEqual(sq.build_query(), u'(hello) AND (my_django_ct:core.mockmodel)') sq.add_model(AnotherMockModel) self.assertEqual( sq.build_query(), u'(hello) AND (my_django_ct:core.anothermockmodel OR my_django_ct:core.mockmodel)' )
def setUp(self): super(LiveSolrSearchQueryTestCase, self).setUp() # Wipe it clean. clear_solr_index() site = SearchSite() site.register(MockModel, SolrMockSearchIndex) sb = SearchBackend(site=site) smmi = SolrMockSearchIndex(MockModel, backend=sb) self.sq = SearchQuery(backend=sb) # Force indexing of the content. mockmodel_index = site.get_index(MockModel) mockmodel_index.update()
def test_all_cases(self): self.sample_objs = [] for i in xrange(1, 4): mock = MockModel() mock.id = i mock.author = 'daniel%s' % i mock.pub_date = datetime.date(2009, 2, 25) - datetime.timedelta(days=i) self.sample_objs.append(mock) # Stow. # Point the backend at a URL that doesn't exist so we can watch the # sparks fly. old_solr_url = settings.HAYSTACK_SOLR_URL settings.HAYSTACK_SOLR_URL = "%s/foo/" % settings.HAYSTACK_SOLR_URL cap = CaptureHandler() logging.getLogger('haystack').addHandler(cap) import haystack logging.getLogger('haystack').removeHandler(haystack.stream) # Setup the rest of the bits. site = SearchSite() site.register(MockModel, SolrMockSearchIndex) sb = SearchBackend(site=site) smmi = SolrMockSearchIndex(MockModel, backend=sb) # Prior to the addition of the try/except bits, these would all fail miserably. self.assertEqual(len(CaptureHandler.logs_seen), 0) sb.update(smmi, self.sample_objs) self.assertEqual(len(CaptureHandler.logs_seen), 1) sb.remove(self.sample_objs[0]) self.assertEqual(len(CaptureHandler.logs_seen), 2) sb.search('search') self.assertEqual(len(CaptureHandler.logs_seen), 3) sb.more_like_this(self.sample_objs[0]) self.assertEqual(len(CaptureHandler.logs_seen), 4) sb.clear([MockModel]) self.assertEqual(len(CaptureHandler.logs_seen), 5) sb.clear() self.assertEqual(len(CaptureHandler.logs_seen), 6) # Restore. settings.HAYSTACK_SOLR_URL = old_solr_url logging.getLogger('haystack').removeHandler(cap) logging.getLogger('haystack').addHandler(haystack.stream)
def setUp(self): super(MoreLikeThisTagTestCase, self).setUp() self.raw_solr = pysolr.Solr(settings.HAYSTACK_SOLR_URL) self.raw_solr.delete(q='*:*') self.site = SearchSite() self.sb = SearchBackend(site=self.site) self.smmi = MLTSearchIndex(MockModel, backend=self.sb) self.site.register(MockModel, MLTSearchIndex) # Stow. import haystack self.old_site = haystack.site haystack.site = self.site # Force indexing of the content. for mock in MockModel.objects.all(): mock.save()
def setUp(self): super(LiveSolrRoundTripTestCase, self).setUp() # Wipe it clean. clear_solr_index() # With the models registered, you get the proper bits. import haystack from haystack.sites import SearchSite # Stow. self.old_site = haystack.site test_site = SearchSite() test_site.register(MockModel, SolrRoundTripSearchIndex) haystack.site = test_site self.sqs = SearchQuerySet() # Fake indexing. sb = SearchBackend(site=test_site) srtsi = SolrRoundTripSearchIndex(MockModel) mock = MockModel() mock.id = 1 sb.update(srtsi, [mock])
def setUp(self): super(SolrSearchQueryTestCase, self).setUp() self.sq = SearchQuery(backend=SearchBackend())