def find_statements_fn(request): """ Receives search requests, queries database to find all occurrences and returns these results with the correct URL to get directly access to the location in the discussion. :param request: :return: json conform dictionary of all occurrences """ api_data = dict() api_data["issue"] = request.matchdict["issue"] api_data["mode"] = request.matchdict["type"] api_data["value"] = request.matchdict["value"] results = dbas.fuzzy_search(request, api_data=api_data) issue_uid = api_data["issue"] return_dict = dict() return_dict["distance_name"] = results["distance_name"] return_dict["values"] = [] for statement in results["values"]: statement_uid = statement["statement_uid"] statement["issue"] = { "uid": issue_uid, "slug": resolve_issue_uid_to_slug(issue_uid) } statement["url"] = url_to_statement( api_data["issue"], statement_uid) # TODO I think I do not use this any more statement["arguments"] = get_all_arguments_with_text_by_statement_id( statement_uid) return_dict["values"].append(statement) return return_dict
def test_fuzzy_search_failure_mode(self): request = testing.DummyRequest(json_body={ 'value': 'cat', 'type': '6', 'statement_uid': 0, 'issue': 2 }) response = fuzzy_search(request) self.assertIsNotNone(response) self.assertTrue(400, response.status_code)
def test_fuzzy_search_mode_6(self): request = construct_dummy_request( json_body={ 'value': 'cat', 'type': self.fuzzy_mode.FIND_MERGESPLIT, 'statement_uid': 0, 'issue': 2 }) response = fuzzy_search(request) self.assertIsNotNone(response) self.assertIn('values', response)
def test_fuzzy_search_mode_1(self): request = construct_dummy_request( json_body={ 'value': 'cat', 'type': self.fuzzy_mode.EDIT_STATEMENT, 'statement_uid': 1, 'issue': 2 }) response = fuzzy_search(request) self.assertIsNotNone(response) self.assertIn('values', response)
def test_fuzzy_search_mode_4(self): request = testing.DummyRequest( json_body={ 'value': 'cat', 'type': self.fuzzy_mode.FIND_DUPLICATE, 'statement_uid': 0, 'issue': 2 }) response = fuzzy_search(request) self.assertIsNotNone(response) self.assertIn('values', response)