def test_more_like_this(self): mock = MockModel() mock.id = 1 msq = MockSearchQuery(backend=MockSearchBackend()) msq.more_like_this(mock) self.assertEqual(msq.get_count(), 100) self.assertEqual(msq.get_results()[0], MOCK_SEARCH_RESULTS[0])
def test_run(self): # Stow. old_site = haystack.site test_site = SearchSite() test_site.register(MockModel) haystack.site = test_site msq = MockSearchQuery(backend=MockSearchBackend()) self.assertEqual(len(msq.get_results()), 100) self.assertEqual(msq.get_results()[0], MOCK_SEARCH_RESULTS[0]) # Restore. haystack.site = old_site
def test_log_query(self): backends.reset_search_queries() self.assertEqual(len(backends.queries), 0) # Stow. old_site = haystack.site old_debug = settings.DEBUG test_site = SearchSite() test_site.register(MockModel) haystack.site = test_site settings.DEBUG = False msq = MockSearchQuery(backend=MockSearchBackend()) self.assertEqual(len(msq.get_results()), 100) self.assertEqual(len(backends.queries), 0) settings.DEBUG = True # Redefine it to clear out the cached results. msq2 = MockSearchQuery(backend=MockSearchBackend()) self.assertEqual(len(msq2.get_results()), 100) self.assertEqual(len(backends.queries), 1) self.assertEqual(backends.queries[0]['query_string'], '') msq3 = MockSearchQuery(backend=MockSearchBackend()) msq3.add_filter(SQ(foo='bar')) len(msq3.get_results()) self.assertEqual(len(backends.queries), 2) self.assertEqual(backends.queries[0]['query_string'], '') self.assertEqual(backends.queries[1]['query_string'], '') # Restore. haystack.site = old_site settings.DEBUG = old_debug
def setUp(self): super(PickleSearchQuerySetTestCase, self).setUp() self.bsqs = SearchQuerySet(query=DummySearchQuery(backend=DummySearchBackend())) self.msqs = SearchQuerySet(query=MockSearchQuery(backend=MockSearchBackend())) self.mmsqs = SearchQuerySet(query=MockSearchQuery(backend=MixedMockSearchBackend())) # Stow. self.old_debug = settings.DEBUG settings.DEBUG = True self.old_site = haystack.site test_site = SearchSite() test_site.register(MockModel) test_site.register(CharPKMockModel) haystack.site = test_site backends.reset_search_queries()
def test_regression_site_kwarg(self): # Stow. test_site = SearchSite() test_site.register(MockModel) msq = MockSearchQuery(site=test_site) self.assertEqual(msq.backend.site.get_indexed_models(), [MockModel])
def test_load_all(self): # Models with character primary keys sqs = SearchQuerySet(query=MockSearchQuery(backend=CharPKMockSearchBackend())) results = sqs.load_all().all() self.assertEqual(len(results._result_cache), 0) results._fill_cache(0, 2) self.assertEqual(len([result for result in results._result_cache if result is not None]), 2) # If nothing is registered, you get nothing. haystack.site.unregister(MockModel) haystack.site.unregister(CharPKMockModel) sqs = self.msqs.load_all() self.assert_(isinstance(sqs, SearchQuerySet)) self.assertEqual(len(sqs), 0)
def test_more_like_this(self): mock = MockModel() mock.id = 1 msq = MockSearchQuery() msq.backend = MockSearchBackend('mlt') ui = connections['default'].get_unified_index() bmmsi = BasicMockModelSearchIndex() ui.build(indexes=[bmmsi]) bmmsi.update() msq.more_like_this(mock) self.assertEqual(msq.get_count(), 23) self.assertEqual(int(msq.get_results()[0].pk), MOCK_SEARCH_RESULTS[0].pk)
def test_load_all_read_queryset(self): # stow old_site = haystack.site test_site = SearchSite() # Register a default SearchIndex first (without the SoftDeleteMangaer as the read_queryset) test_site.register(AFifthMockModel) haystack.site = test_site sqs = SearchQuerySet(query=MockSearchQuery( backend=ReadQuerySetMockSearchBackend())) results = sqs.load_all().all() results._fill_cache(0, 2) # The deleted result isn't returned self.assertEqual( len([ result for result in results._result_cache if result is not None ]), 1) test_site.unregister(AFifthMockModel) # Register a SearchIndex with a read_queryset that returns deleted items test_site.register(AFifthMockModel, ReadQuerySetTestSearchIndex) sqs = SearchQuerySet(query=MockSearchQuery( backend=ReadQuerySetMockSearchBackend())) results = sqs.load_all().all() results._fill_cache(0, 2) # Both the deleted and not deleted items are returned self.assertEqual( len([ result for result in results._result_cache if result is not None ]), 2) # restore haystack.site = old_site
def test_run(self): msq = MockSearchQuery(backend=MockSearchBackend()) self.assertEqual(len(msq.get_results()), 100) self.assertEqual(msq.get_results()[0], MOCK_SEARCH_RESULTS[0])