def load_test_data(self): # Reset the index self.backend.reset_index() self.backend.add_type(models.SearchTest) self.backend.add_type(models.SearchTestChild) # Create a test database testa = models.SearchTest() testa.title = "Hello World" testa.save() self.backend.add(testa) self.testa = testa testb = models.SearchTest() testb.title = "Hello" testb.live = True testb.save() self.backend.add(testb) testc = models.SearchTestChild() testc.title = "Hello" testc.live = True testc.save() self.backend.add(testc) testd = models.SearchTestChild() testd.title = "World" testd.save() self.backend.add(testd) # Refresh the index self.backend.refresh_index()
def test_query_analyser(self): """ This is testing that fields that use edgengram_analyzer as their index analyser do not have it also as their query analyser """ # Reset the index self.backend.reset_index() self.backend.add_type(models.SearchTest) self.backend.add_type(models.SearchTestChild) # Add some test data obj = models.SearchTest() obj.title = "Hello" obj.live = True obj.save() self.backend.add(obj) # Refresh the index self.backend.refresh_index() # Test search for "Hello" results = self.backend.search("Hello", models.SearchTest.objects.all()) # Should find the result self.assertEqual(len(results), 1) # Test search for "Horse" results = self.backend.search("Horse", models.SearchTest.objects.all()) # Even though they both start with the letter "H". This should not be considered a match self.assertEqual(len(results), 0)
def test_search_with_hyphen(self): """ This tests that punctuation characters are treated the same way in both indexing and querying. See: https://github.com/torchbox/wagtail/issues/937 """ # Reset the index self.backend.reset_index() self.backend.add_type(models.SearchTest) self.backend.add_type(models.SearchTestChild) # Add some test data obj = models.SearchTest() obj.title = "Hello-World" obj.live = True obj.save() self.backend.add(obj) # Refresh the index self.backend.refresh_index() # Test search for "Hello-World" results = self.backend.search("Hello-World", models.SearchTest.objects.all()) # Should find the result self.assertEqual(len(results), 1)
def test_gets_instance(self): obj = models.SearchTest( title="Hello", live=True, ) obj.save() # Should just return the object indexed_instance = signal_handlers.get_indexed_instance(obj) self.assertEqual(indexed_instance, obj)
def setUp(self): # Import using a try-catch block to prevent crashes if the elasticsearch-py # module is not installed try: from wagtail.wagtailsearch.backends.elasticsearch import ElasticSearchMapping from elasticsearch.serializer import JSONSerializer except ImportError: raise unittest.SkipTest("elasticsearch-py not installed") self.JSONSerializer = JSONSerializer # Create ES mapping self.es_mapping = ElasticSearchMapping(models.SearchTest) # Create ES document self.obj = models.SearchTest(title="Hello") self.obj.save()
def test_ascii_folding(self): # Reset the index self.backend.reset_index() self.backend.add_type(models.SearchTest) self.backend.add_type(models.SearchTestChild) # Add some test data obj = models.SearchTest() obj.title = "Ĥéỻø" obj.live = True obj.save() self.backend.add(obj) # Refresh the index self.backend.refresh_index() # Search and check results = self.backend.search("Hello", models.SearchTest.objects.all()) self.assertEqual(len(results), 1) self.assertEqual(results[0].id, obj.id)