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 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("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("name", "bar") self.sq.add_filter("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 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 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 setUp(self): super(SolrSearchQueryTestCase, self).setUp() # Stow. self.old_solr_url = getattr(settings, 'HAYSTACK_SOLR_URL', 'http://localhost:9001/solr/test_default') settings.HAYSTACK_SOLR_URL = 'http://localhost:9001/solr/test_default' self.sq = SearchQuery(backend=SearchBackend())
def setUp(self): super(LiveSolrSearchQueryTestCase, self).setUp() self.sq = SearchQuery(backend=SearchBackend()) # Force indexing of the content. for mock in MockModel.objects.all(): mock.save()
def setUp(self): super(LiveSolrSearchQueryTestCase, self).setUp() # Stow. self.old_solr_url = getattr(settings, "HAYSTACK_SOLR_URL", "http://localhost:9001/solr/test_default") settings.HAYSTACK_SOLR_URL = "http://localhost:9001/solr/test_default" self.sq = SearchQuery(backend=SearchBackend()) # Force indexing of the content. for mock in MockModel.objects.all(): mock.save()
class LiveSolrSearchQueryTestCase(TestCase): fixtures = ['initial_data.json'] def setUp(self): super(LiveSolrSearchQueryTestCase, self).setUp() # Stow. self.old_solr_url = getattr(settings, 'HAYSTACK_SOLR_URL', 'http://localhost:9001/solr/test_default') settings.HAYSTACK_SOLR_URL = 'http://localhost:9001/solr/test_default' self.sq = SearchQuery(backend=SearchBackend()) # Force indexing of the content. for mock in MockModel.objects.all(): mock.save() def tearDown(self): settings.HAYSTACK_SOLR_URL = self.old_solr_url super(LiveSolrSearchQueryTestCase, self).tearDown() def test_get_spelling(self): self.sq.add_filter('content', 'Indx') self.assertEqual(self.sq.get_spelling_suggestion(), u'index')
class LiveSolrSearchQueryTestCase(TestCase): fixtures = ["initial_data.json"] def setUp(self): super(LiveSolrSearchQueryTestCase, self).setUp() # Stow. self.old_solr_url = getattr(settings, "HAYSTACK_SOLR_URL", "http://localhost:9001/solr/test_default") settings.HAYSTACK_SOLR_URL = "http://localhost:9001/solr/test_default" self.sq = SearchQuery(backend=SearchBackend()) # Force indexing of the content. for mock in MockModel.objects.all(): mock.save() def tearDown(self): settings.HAYSTACK_SOLR_URL = self.old_solr_url super(LiveSolrSearchQueryTestCase, self).tearDown() def test_get_spelling(self): self.sq.add_filter("content", "Indx") self.assertEqual(self.sq.get_spelling_suggestion(), u"index") self.assertEqual(self.sq.get_spelling_suggestion("indexy"), u"index") 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("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("name", "bar") self.sq.add_filter("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
class SolrSearchQueryTestCase(TestCase): def setUp(self): super(SolrSearchQueryTestCase, self).setUp() # Stow. self.old_solr_url = getattr(settings, 'HAYSTACK_SOLR_URL', 'http://localhost:9001/solr/test_default') settings.HAYSTACK_SOLR_URL = 'http://localhost:9001/solr/test_default' self.sq = SearchQuery(backend=SearchBackend()) def tearDown(self): settings.HAYSTACK_SOLR_URL = self.old_solr_url super(SolrSearchQueryTestCase, self).tearDown() def test_build_query_all(self): self.assertEqual(self.sq.build_query(), '*:*') def test_build_query_single_word(self): self.sq.add_filter(SQ(content='hello')) self.assertEqual(self.sq.build_query(), 'hello') def test_build_query_boolean(self): self.sq.add_filter(SQ(content=True)) self.assertEqual(self.sq.build_query(), 'true') def test_build_query_datetime(self): self.sq.add_filter(SQ(content=datetime.datetime(2009, 5, 8, 11, 28))) self.assertEqual(self.sq.build_query(), '2009-05-08T11:28:00Z') def test_build_query_multiple_words_and(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_filter(SQ(content='world')) self.assertEqual(self.sq.build_query(), '(hello AND world)') def test_build_query_multiple_words_not(self): self.sq.add_filter(~SQ(content='hello')) self.sq.add_filter(~SQ(content='world')) self.assertEqual(self.sq.build_query(), '(NOT (hello) AND NOT (world))') def test_build_query_multiple_words_or(self): self.sq.add_filter(~SQ(content='hello')) self.sq.add_filter(SQ(content='hello'), use_or=True) self.assertEqual(self.sq.build_query(), '(NOT (hello) OR hello)') def test_build_query_multiple_words_mixed(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(content='hello'), use_or=True) self.sq.add_filter(~SQ(content='world')) self.assertEqual(self.sq.build_query(), u'((why OR hello) AND NOT (world))') def test_build_query_phrase(self): self.sq.add_filter(SQ(content='hello world')) self.assertEqual(self.sq.build_query(), '"hello world"') def test_build_query_boost(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_boost('world', 5) self.assertEqual(self.sq.build_query(), "hello world^5") def test_build_query_multiple_filter_types(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(pub_date__lte='2009-02-10 01:59:00')) self.sq.add_filter(SQ(author__gt='daniel')) self.sq.add_filter(SQ(created__lt='2009-02-12 12:13:00')) self.sq.add_filter(SQ(title__gte='B')) self.sq.add_filter(SQ(id__in=[1, 2, 3])) self.assertEqual(self.sq.build_query(), u'(why AND pub_date:[* TO "2009-02-10 01:59:00"] AND author:{daniel TO *} AND created:{* TO "2009-02-12 12:13:00"} AND title:[B TO *] AND (id:"1" OR id:"2" OR id:"3"))') def test_build_query_in_filter_multiple_words(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(title__in=["A Famous Paper", "An Infamous Article"])) self.assertEqual(self.sq.build_query(), u'(why AND (title:"A Famous Paper" OR title:"An Infamous Article"))') def test_build_query_in_filter_datetime(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(pub_date__in=[datetime.datetime(2009, 7, 6, 1, 56, 21)])) self.assertEqual(self.sq.build_query(), u'(why AND (pub_date:"2009-07-06T01:56:21Z"))') def test_build_query_wildcard_filter_types(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(title__startswith='haystack')) self.assertEqual(self.sq.build_query(), u'(why AND title:haystack*)') def test_clean(self): self.assertEqual(self.sq.clean('hello world'), 'hello world') self.assertEqual(self.sq.clean('hello AND world'), 'hello and world') self.assertEqual(self.sq.clean('hello AND OR NOT TO + - && || ! ( ) { } [ ] ^ " ~ * ? : \ world'), 'hello and or not to \\+ \\- \\&& \\|| \\! \\( \\) \\{ \\} \\[ \\] \\^ \\" \\~ \\* \\? \\: \\\\ world') self.assertEqual(self.sq.clean('so please NOTe i am in a bAND and bORed'), 'so please NOTe i am in a bAND and bORed') def test_build_query_with_models(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_model(MockModel) self.assertEqual(self.sq.build_query(), '(hello) AND (django_ct:core.mockmodel)') self.sq.add_model(AnotherMockModel) self.assertEqual(self.sq.build_query(), '(hello) AND (django_ct:core.mockmodel OR django_ct:core.anothermockmodel)')
class SolrSearchQueryTestCase(TestCase): def setUp(self): super(SolrSearchQueryTestCase, self).setUp() self.sq = SearchQuery(backend=SearchBackend()) def test_build_query_all(self): self.assertEqual(self.sq.build_query(), '*:*') def test_build_query_single_word(self): self.sq.add_filter(SQ(content='hello')) self.assertEqual(self.sq.build_query(), 'hello') def test_build_query_boolean(self): self.sq.add_filter(SQ(content=True)) self.assertEqual(self.sq.build_query(), 'true') def test_build_query_datetime(self): self.sq.add_filter(SQ(content=datetime.datetime(2009, 5, 8, 11, 28))) self.assertEqual(self.sq.build_query(), '2009-05-08T11:28:00Z') def test_build_query_multiple_words_and(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_filter(SQ(content='world')) self.assertEqual(self.sq.build_query(), '(hello AND world)') def test_build_query_multiple_words_not(self): self.sq.add_filter(~SQ(content='hello')) self.sq.add_filter(~SQ(content='world')) self.assertEqual(self.sq.build_query(), '(NOT (hello) AND NOT (world))') def test_build_query_multiple_words_or(self): self.sq.add_filter(~SQ(content='hello')) self.sq.add_filter(SQ(content='hello'), use_or=True) self.assertEqual(self.sq.build_query(), '(NOT (hello) OR hello)') def test_build_query_multiple_words_mixed(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(content='hello'), use_or=True) self.sq.add_filter(~SQ(content='world')) self.assertEqual(self.sq.build_query(), u'((why OR hello) AND NOT (world))') def test_build_query_phrase(self): self.sq.add_filter(SQ(content='hello world')) self.assertEqual(self.sq.build_query(), '"hello world"') def test_build_query_boost(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_boost('world', 5) self.assertEqual(self.sq.build_query(), "hello world^5") def test_build_query_multiple_filter_types(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(pub_date__lte='2009-02-10 01:59:00')) self.sq.add_filter(SQ(author__gt='daniel')) self.sq.add_filter(SQ(created__lt='2009-02-12 12:13:00')) self.sq.add_filter(SQ(title__gte='B')) self.sq.add_filter(SQ(id__in=[1, 2, 3])) self.sq.add_filter(SQ(rating__range=[3, 5])) self.assertEqual(self.sq.build_query(), u'(why AND pub_date:[* TO "2009-02-10 01:59:00"] AND author:{daniel TO *} AND created:{* TO "2009-02-12 12:13:00"} AND title:[B TO *] AND (id:"1" OR id:"2" OR id:"3") AND rating:[3 TO 5])') def test_build_query_in_filter_multiple_words(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(title__in=["A Famous Paper", "An Infamous Article"])) self.assertEqual(self.sq.build_query(), u'(why AND (title:"A Famous Paper" OR title:"An Infamous Article"))') def test_build_query_in_filter_datetime(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(pub_date__in=[datetime.datetime(2009, 7, 6, 1, 56, 21)])) self.assertEqual(self.sq.build_query(), u'(why AND (pub_date:"2009-07-06T01:56:21Z"))') def test_build_query_wildcard_filter_types(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(title__startswith='haystack')) self.assertEqual(self.sq.build_query(), u'(why AND title:haystack*)') def test_clean(self): self.assertEqual(self.sq.clean('hello world'), 'hello world') self.assertEqual(self.sq.clean('hello AND world'), 'hello and world') self.assertEqual(self.sq.clean('hello AND OR NOT TO + - && || ! ( ) { } [ ] ^ " ~ * ? : \ world'), 'hello and or not to \\+ \\- \\&& \\|| \\! \\( \\) \\{ \\} \\[ \\] \\^ \\" \\~ \\* \\? \\: \\\\ world') self.assertEqual(self.sq.clean('so please NOTe i am in a bAND and bORed'), 'so please NOTe i am in a bAND and bORed') def test_build_query_with_models(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_model(MockModel) self.assertEqual(self.sq.build_query(), '(hello) AND (django_ct:core.mockmodel)') self.sq.add_model(AnotherMockModel) self.assertEqual(self.sq.build_query(), u'(hello) AND (django_ct:core.anothermockmodel OR django_ct:core.mockmodel)') def test_set_result_class(self): # Assert that we're defaulting to ``SearchResult``. self.assertTrue(issubclass(self.sq.result_class, SearchResult)) # Custom class. class IttyBittyResult(object): pass self.sq.set_result_class(IttyBittyResult) self.assertTrue(issubclass(self.sq.result_class, IttyBittyResult)) # Reset to default. self.sq.set_result_class(None) self.assertTrue(issubclass(self.sq.result_class, SearchResult))
class SolrSearchQueryTestCase(TestCase): def setUp(self): super(SolrSearchQueryTestCase, self).setUp() self.sq = SearchQuery(backend=SearchBackend()) def test_build_query_all(self): self.assertEqual(self.sq.build_query(), '*:*') def test_build_query_single_word(self): self.sq.add_filter(SQ(content='hello')) self.assertEqual(self.sq.build_query(), 'hello') def test_build_query_boolean(self): self.sq.add_filter(SQ(content=True)) self.assertEqual(self.sq.build_query(), 'true') def test_build_query_datetime(self): self.sq.add_filter(SQ(content=datetime.datetime(2009, 5, 8, 11, 28))) self.assertEqual(self.sq.build_query(), '2009-05-08T11:28:00Z') def test_build_query_multiple_words_and(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_filter(SQ(content='world')) self.assertEqual(self.sq.build_query(), '(hello AND world)') def test_build_query_multiple_words_not(self): self.sq.add_filter(~SQ(content='hello')) self.sq.add_filter(~SQ(content='world')) self.assertEqual(self.sq.build_query(), '(NOT (hello) AND NOT (world))') def test_build_query_multiple_words_or(self): self.sq.add_filter(~SQ(content='hello')) self.sq.add_filter(SQ(content='hello'), use_or=True) self.assertEqual(self.sq.build_query(), '(NOT (hello) OR hello)') def test_build_query_multiple_words_mixed(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(content='hello'), use_or=True) self.sq.add_filter(~SQ(content='world')) self.assertEqual(self.sq.build_query(), u'((why OR hello) AND NOT (world))') def test_build_query_phrase(self): self.sq.add_filter(SQ(content='hello world')) self.assertEqual(self.sq.build_query(), '"hello world"') def test_build_query_boost(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_boost('world', 5) self.assertEqual(self.sq.build_query(), "hello world^5") def test_build_query_multiple_filter_types(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(pub_date__lte='2009-02-10 01:59:00')) self.sq.add_filter(SQ(author__gt='daniel')) self.sq.add_filter(SQ(created__lt='2009-02-12 12:13:00')) self.sq.add_filter(SQ(title__gte='B')) self.sq.add_filter(SQ(id__in=[1, 2, 3])) self.sq.add_filter(SQ(rating__range=[3, 5])) self.assertEqual(self.sq.build_query(), u'(why AND pub_date:[* TO "2009-02-10 01:59:00"] AND author:{daniel TO *} AND created:{* TO "2009-02-12 12:13:00"} AND title:[B TO *] AND (id:"1" OR id:"2" OR id:"3") AND rating:[3 TO 5])') def test_build_query_in_filter_multiple_words(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(title__in=["A Famous Paper", "An Infamous Article"])) self.assertEqual(self.sq.build_query(), u'(why AND (title:"A Famous Paper" OR title:"An Infamous Article"))') def test_build_query_in_filter_datetime(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(pub_date__in=[datetime.datetime(2009, 7, 6, 1, 56, 21)])) self.assertEqual(self.sq.build_query(), u'(why AND (pub_date:"2009-07-06T01:56:21Z"))') def test_build_query_wildcard_filter_types(self): self.sq.add_filter(SQ(content='why')) self.sq.add_filter(SQ(title__startswith='haystack')) self.assertEqual(self.sq.build_query(), u'(why AND title:haystack*)') def test_clean(self): self.assertEqual(self.sq.clean('hello world'), 'hello world') self.assertEqual(self.sq.clean('hello AND world'), 'hello and world') self.assertEqual(self.sq.clean('hello AND OR NOT TO + - && || ! ( ) { } [ ] ^ " ~ * ? : \ world'), 'hello and or not to \\+ \\- \\&& \\|| \\! \\( \\) \\{ \\} \\[ \\] \\^ \\" \\~ \\* \\? \\: \\\\ world') self.assertEqual(self.sq.clean('so please NOTe i am in a bAND and bORed'), 'so please NOTe i am in a bAND and bORed') def test_build_query_with_models(self): self.sq.add_filter(SQ(content='hello')) self.sq.add_model(MockModel) self.assertEqual(self.sq.build_query(), '(hello) AND (django_ct:core.mockmodel)') self.sq.add_model(AnotherMockModel) self.assertEqual(self.sq.build_query(), u'(hello) AND (django_ct:core.anothermockmodel OR django_ct:core.mockmodel)')
class SolrSearchQueryTestCase(TestCase): def setUp(self): super(SolrSearchQueryTestCase, self).setUp() # Stow. self.old_solr_url = getattr(settings, 'HAYSTACK_SOLR_URL', 'http://localhost:9001/solr/test_default') settings.HAYSTACK_SOLR_URL = 'http://localhost:9001/solr/test_default' self.sq = SearchQuery(backend=SearchBackend()) def tearDown(self): settings.HAYSTACK_SOLR_URL = self.old_solr_url super(SolrSearchQueryTestCase, self).tearDown() def test_build_query_all(self): self.assertEqual(self.sq.build_query(), '*:*') def test_build_query_single_word(self): self.sq.add_filter('content', 'hello') self.assertEqual(self.sq.build_query(), 'hello') def test_build_query_multiple_words_and(self): self.sq.add_filter('content', 'hello') self.sq.add_filter('content', 'world') self.assertEqual(self.sq.build_query(), 'hello AND world') def test_build_query_multiple_words_not(self): self.sq.add_filter('content', 'hello', use_not=True) self.sq.add_filter('content', 'world', use_not=True) self.assertEqual(self.sq.build_query(), 'NOT hello NOT world') def test_build_query_multiple_words_or(self): self.sq.add_filter('content', 'hello', use_or=True) self.sq.add_filter('content', 'world', use_or=True) self.assertEqual(self.sq.build_query(), 'hello OR world') def test_build_query_multiple_words_mixed(self): self.sq.add_filter('content', 'why') self.sq.add_filter('content', 'hello', use_or=True) self.sq.add_filter('content', 'world', use_not=True) self.assertEqual(self.sq.build_query(), 'why OR hello NOT world') def test_build_query_phrase(self): self.sq.add_filter('content', 'hello world') self.assertEqual(self.sq.build_query(), '"hello world"') def test_build_query_boost(self): self.sq.add_filter('content', 'hello') self.sq.add_boost('world', 5) self.assertEqual(self.sq.build_query(), "hello world^5") def test_build_query_multiple_filter_types(self): self.sq.add_filter('content', 'why') self.sq.add_filter('pub_date__lte', '2009-02-10 01:59:00') self.sq.add_filter('author__gt', 'daniel') self.sq.add_filter('created__lt', '2009-02-12 12:13:00') self.sq.add_filter('title__gte', 'B') self.sq.add_filter('id__in', [1, 2, 3]) self.assertEqual(self.sq.build_query(), 'why AND pub_date:[* TO "2009-02-10 01:59:00"] AND author:{daniel TO *} AND created:{* TO "2009-02-12 12:13:00"} AND title:[B TO *] AND (id:1 OR id:2 OR id:3)') def test_clean(self): self.assertEqual(self.sq.clean('hello world'), 'hello world') self.assertEqual(self.sq.clean('hello AND world'), 'hello and world') self.assertEqual(self.sq.clean('hello AND OR NOT TO + - && || ! ( ) { } [ ] ^ " ~ * ? : \ world'), 'hello and or not to \\+ \\- \\&& \\|| \\! \\( \\) \\{ \\} \\[ \\] \\^ \\" \\~ \\* \\? \\: \\\\ world') self.assertEqual(self.sq.clean('so please NOTe i am in a bAND and bORed'), 'so please NOTe i am in a bAND and bORed') def test_build_query_with_models(self): self.sq.add_filter('content', 'hello') self.sq.add_model(MockModel) self.assertEqual(self.sq.build_query(), '(hello) AND (django_ct_s:core.mockmodel)') self.sq.add_model(AnotherMockModel) self.assertEqual(self.sq.build_query(), '(hello) AND (django_ct_s:core.mockmodel OR django_ct_s:core.anothermockmodel)')
class LiveSolrSearchQueryTestCase(TestCase): fixtures = ['initial_data.json'] def setUp(self): super(LiveSolrSearchQueryTestCase, self).setUp() self.sq = SearchQuery(backend=SearchBackend()) # Force indexing of the content. for mock in MockModel.objects.all(): mock.save() def test_get_spelling(self): self.sq.add_filter(SQ(content='Indexy')) self.assertEqual(self.sq.get_spelling_suggestion(), u'index') self.assertEqual(self.sq.get_spelling_suggestion('indexy'), u'index') 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(SolrSearchQueryTestCase, self).setUp() self.sq = SearchQuery(backend=SearchBackend())
class LiveSolrSearchQueryTestCase(TestCase): fixtures = ['initial_data.json'] 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_get_spelling(self): self.sq.add_filter(SQ(content='Indexy')) self.assertEqual(self.sq.get_spelling_suggestion(), u'index') self.assertEqual(self.sq.get_spelling_suggestion('indexy'), u'index') 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