def test_delete_ignores_documents_that_do_not_exist(self) -> None: elastic_search_services.add_documents_to_index([{ 'id': 'doc_id' }], 'index1') # The doc does not exist, but no exception is thrown. elastic_search_services.delete_documents_from_index(['not_a_real_id'], 'index1')
def test_search_returns_the_right_number_of_docs_even_if_more_exist( self) -> None: elastic_search_services.add_documents_to_index([{ 'id': 'doc_id1', 'title': 'hello world' }, { 'id': 'doc_id2', 'title': 'hello me' }], 'index') results, new_offset = elastic_search_services.search('hello', 'index', [], [], size=1) self.assertEqual(len(results), 1) # Letting mypy know that results[0] is a dict. assert isinstance(results[0], dict) self.assertEqual(results[0]['id'], 'doc_id1') self.assertEqual(new_offset, '1') results, new_offset = elastic_search_services.search('hello', 'index', [], [], offset='1', size=1) self.assertEqual(len(results), 1) # Letting mypy know that results[0] is a dict. assert isinstance(results[0], dict) self.assertEqual(results[0]['id'], 'doc_id2') self.assertIsNone(new_offset)
def test_create_index_raises_exception_when_insertion_fails(self) -> None: correct_index_name = 'index1' correct_id = 'id' def mock_index( index: str, body: Dict[str, str], id: str # pylint: disable=redefined-builtin ) -> Dict[str, Dict[str, int]]: self.assertEqual(index, correct_index_name) self.assertEqual(id, correct_id) self.assertEqual(body, { 'id': correct_id }) return { '_shards': { 'failed': 2 } } documents = [ { 'id': correct_id } ] assert_raises_ctx = self.assertRaisesRegexp( # type: ignore[no-untyped-call] Exception, 'Failed to add document to index.') with assert_raises_ctx, self.swap( elastic_search_services.ES, 'index', mock_index): elastic_search_services.add_documents_to_index( documents, correct_index_name)
def test_search_returns_full_response(self) -> None: correct_index_name = 'index1' elastic_search_services.add_documents_to_index([{ 'id': 1, 'source': { 'param1': 1, 'param2': 2 } }, { 'id': 12, 'source': { 'param1': 3, 'param2': 4 } }], correct_index_name) result, new_offset = elastic_search_services.search( '', correct_index_name, [], [], offset='0', size=50, ids_only=False) self.assertEqual(result, [{ 'id': 1, 'source': { 'param1': 1, 'param2': 2 } }, { 'id': 12, 'source': { 'param1': 3, 'param2': 4 } }]) self.assertIsNone(new_offset)
def test_delete_succeeds_when_document_exists(self) -> None: elastic_search_services.add_documents_to_index([{ 'id': 'doc_id', 'title': 'hello' }], 'index1') results, _ = elastic_search_services.search('hello', 'index1', [], []) self.assertEqual(len(results), 1) # Successful deletion. elastic_search_services.delete_documents_from_index(['doc_id'], 'index1') results, _ = elastic_search_services.search('hello', 'index1', [], []) self.assertEqual(len(results), 0)
def test_create_index_with_correct_input(self): correct_index_name = 'index1' correct_id = 'id' def mock_index(index, body, id): # pylint: disable=redefined-builtin self.assertEqual(index, correct_index_name) self.assertEqual(id, correct_id) self.assertEqual(body, {'id': correct_id}) return {'_shards': {'failed': 0}} documents = [{'id': correct_id}] with self.swap(elastic_search_services.ES, 'index', mock_index): elastic_search_services.add_documents_to_index( documents, correct_index_name)
def test_create_index_raises_exception_when_insertion_fails(self): correct_index_name = 'index1' correct_id = 'id' def mock_index(index, body, id): # pylint: disable=redefined-builtin self.assertEqual(index, correct_index_name) self.assertEqual(id, correct_id) self.assertEqual(body, {'id': correct_id}) return {'_shards': {'failed': 2}} documents = [{'id': correct_id}] assert_raises_ctx = self.assertRaisesRegexp( Exception, 'Failed to add document to index.') with assert_raises_ctx, self.swap(elastic_search_services.ES, 'index', mock_index): elastic_search_services.add_documents_to_index( documents, correct_index_name)
def test_create_index_with_correct_input(self) -> None: correct_index_name = 'index1' correct_id = 'id' def mock_index( index: str, body: Dict[str, str], id: str # pylint: disable=redefined-builtin ) -> Dict[str, Dict[str, int]]: self.assertEqual(index, correct_index_name) self.assertEqual(id, correct_id) self.assertEqual(body, {'id': correct_id}) return {'_shards': {'failed': 0}} with self.swap(elastic_search_services.ES, 'index', mock_index): elastic_search_services.add_documents_to_index([{ 'id': correct_id }], correct_index_name)