def setUp(self): super(TicketIndexerTestCase, self).setUp() self.whoosh_backend = WhooshBackend(self.env) self.whoosh_backend.recreate_index() self.ticket_indexer = TicketIndexer(self.env) self.search_api = BloodhoundSearchApi(self.env) self.env.config.set('bhsearch', 'silence_on_error', "False")
def _reindex_endpoints(self, relation): trs = TicketRelationsSpecifics(self.env) ticket_indexer = TicketIndexer(self.env) for resource in map(ResourceIdSerializer.get_resource_by_id, (relation.source, relation.destination)): if resource.realm == 'ticket': ticket = trs._create_ticket_by_full_id(resource) ticket_indexer._index_ticket(ticket)
def test_can_index_ticket(self): ticket = self.create_dummy_ticket() TicketIndexer(self.env).resource_created(ticket, None) results = self.search_api.query("*:*") self.print_result(results) self.assertEqual(1, results.hits)
def _rename_milestone(self, milestone, old_name): try: doc = self.build_doc(milestone) search_api = BloodhoundSearchApi(self.env) with search_api.start_operation() as operation_context: search_api.change_doc_id(doc, old_name, operation_context) TicketIndexer(self.env).reindex_tickets( search_api, operation_context, milestone=milestone.name) except Exception, e: if self.silence_on_error: self.log.error( "Error occurs during renaming milestone from \ %s to %s. The error will not be propagated. Exception: %s", old_name, milestone.name, e) else: raise
class TicketIndexerTestCase(BaseBloodhoundSearchTest): def setUp(self): super(TicketIndexerTestCase, self).setUp() self.whoosh_backend = WhooshBackend(self.env) self.whoosh_backend.recreate_index() self.ticket_indexer = TicketIndexer(self.env) self.search_api = BloodhoundSearchApi(self.env) self.env.config.set('bhsearch', 'silence_on_error', "False") def tearDown(self): pass def test_does_not_raise_exception_by_default(self): self.env.config.set('bhsearch', 'silence_on_error', "True") self.ticket_indexer.resource_created(None, None) def test_raise_exception_if_configured(self): self.env.config.set('bhsearch', 'silence_on_error', "False") self.assertRaises( Exception, self.ticket_indexer.resource_created, None) def test_can_strip_wiki_syntax(self): #act self.insert_ticket("T1", description=" = Header") #assert results = self.search_api.query("*:*") self.print_result(results) self.assertEqual(1, results.hits) self.assertEqual("Header", results.docs[0]["content"]) def test_that_tickets_updated_after_component_renaming(self): #arrange INITIAL_COMPONENT = "initial_name" RENAMED_COMPONENT = "renamed_name" component = self._insert_component(INITIAL_COMPONENT) self.insert_ticket("T1", component=INITIAL_COMPONENT) self.insert_ticket("T2", component=INITIAL_COMPONENT) #act component.name = RENAMED_COMPONENT component.update() #arrange results = self.search_api.query("*") self.print_result(results) for doc in results.docs: self.assertEqual(RENAMED_COMPONENT, doc["component"]) def test_that_ticket_updated_after_changing(self): #arrange ticket = self.insert_ticket("T1", description="some text") #act CHANGED_SUMMARY = "T1 changed" ticket["summary"] = CHANGED_SUMMARY ticket.save_changes() #arrange results = self.search_api.query("*") self.print_result(results) self.assertEqual(CHANGED_SUMMARY, results.docs[0]["summary"]) def test_fills_product_field_if_product_is_set(self): with self.product('p'): self.insert_ticket("T1") results = self.search_api.query("*") self.assertEqual(results.docs[0]["product"], 'p') def test_can_work_if_env_does_not_have_product(self): if 'product' in self.env: del self.env["product"] self.insert_ticket("T1") results = self.search_api.query("*") self.assertEqual(results.hits, 1) self.assertNotIn("product", results.docs[0]) def _insert_component(self, name): component = Component(self.env) component.name = name component.insert() return component
class TicketIndexerTestCase(BaseBloodhoundSearchTest): def setUp(self): super(TicketIndexerTestCase, self).setUp() self.whoosh_backend = WhooshBackend(self.env) self.whoosh_backend.recreate_index() self.ticket_indexer = TicketIndexer(self.env) self.search_api = BloodhoundSearchApi(self.env) self.env.config.set('bhsearch', 'silence_on_error', "False") def tearDown(self): pass def test_does_not_raise_exception_by_default(self): self.env.config.set('bhsearch', 'silence_on_error', "True") self.ticket_indexer.resource_created(None, None) def test_raise_exception_if_configured(self): self.env.config.set('bhsearch', 'silence_on_error', "False") self.assertRaises(Exception, self.ticket_indexer.resource_created, None) def test_can_strip_wiki_syntax(self): #act self.insert_ticket("T1", description=" = Header") #assert results = self.search_api.query("*:*") self.print_result(results) self.assertEqual(1, results.hits) self.assertEqual("Header", results.docs[0]["content"]) def test_that_tickets_updated_after_component_renaming(self): #arrange INITIAL_COMPONENT = "initial_name" RENAMED_COMPONENT = "renamed_name" component = self._insert_component(INITIAL_COMPONENT) self.insert_ticket("T1", component=INITIAL_COMPONENT) self.insert_ticket("T2", component=INITIAL_COMPONENT) #act component.name = RENAMED_COMPONENT component.update() #arrange results = self.search_api.query("*") self.print_result(results) for doc in results.docs: self.assertEqual(RENAMED_COMPONENT, doc["component"]) def test_that_ticket_updated_after_changing(self): #arrange ticket = self.insert_ticket("T1", description="some text") #act CHANGED_SUMMARY = "T1 changed" ticket["summary"] = CHANGED_SUMMARY ticket.save_changes() #arrange results = self.search_api.query("*") self.print_result(results) self.assertEqual(CHANGED_SUMMARY, results.docs[0]["summary"]) def test_fills_product_field_if_product_is_set(self): with self.product('p'): self.insert_ticket("T1") results = self.search_api.query("*") self.assertEqual(results.docs[0]["product"], 'p') def test_can_work_if_env_does_not_have_product(self): if 'product' in self.env: del self.env["product"] self.insert_ticket("T1") results = self.search_api.query("*") self.assertEqual(results.hits, 1) self.assertNotIn("product", results.docs[0]) def _insert_component(self, name): component = Component(self.env) component.name = name component.insert() return component