def ask_grandpy(self, message): """Parse and clean the question sent by the user to grandpy message : string object""" grandpy_information = dict() parser = Parser() #Clean the message message = parser.clean_message(message) message = parser.parse_message(message) #Getting coordinates of location from Google Maps API maps = Maps(message) coordinates = maps.get_coordinates_from_locations() if "error_message" in coordinates.keys(): return {"error_message" : self.error_message()} else: grandpy_information.update({"coordinates" : coordinates}) #Getting information from Wikipedia Page wiki = Wikipedia(coordinates) wiki.get_pageid_from_coordinates() wiki.get_content_from_pageid() grandpy_information.update({"content" : wiki.content}) return grandpy_information
def test_clean_accent(): """Test about the method Parser.clean_accent(message)""" message_to_test = "éèêëàâäïîôöûü" parser_to_test = Parser() message_to_test = parser_to_test.clean_accent(message_to_test) final_message = "eeeeaaaiioouu" assert message_to_test == final_message
def test_clean_message(): """Test the method clean_message from the class Parser""" message_to_test = "Je--voudrais\\connaître les Informations sur Parïs+Marseille-Caen." parser_to_test = Parser() message_to_test = parser_to_test.clean_message(message_to_test) final_message = "je voudrais connaitre les informations sur paris marseille caen" assert message_to_test == final_message
def test_clean_special_character(): """Test about the method Parser.clean_special_character(message)""" message_to_test = "Je voudrais savoir si c'est possible, d'obtenir les coordonnées et informations sur Paris." parser_to_test = Parser() message_to_test = parser_to_test.clean_special_character(message_to_test) final_message = "Je voudrais savoir si c est possible d obtenir les coordonnées et informations sur Paris" assert message_to_test == final_message
def test_parser_remove_extra_space(self): sentence_test = "one test extra space beetween words" parser = Parser(sentence_test) parser.clean_input() assert " " not in parser.text assert " " not in parser.text assert " " not in parser.text assert " " not in parser.text
def test_parser_remove_capital_letters(self): sentence_test = "Texte Avec Des Majuscules A Transformer En Minuscule" parser = Parser(sentence_test) parser.clean_input() assert "T" not in parser.text assert "A" not in parser.text assert "D" not in parser.text assert "M" not in parser.text assert "E" not in parser.text
def test_parser_remove_accents(self): sentence_test = "à é î ö ù è" parser = Parser(sentence_test) parser.clean_input() assert "à" not in parser.text assert "é" not in parser.text assert "î" not in parser.text assert "ö" not in parser.text assert "ù" not in parser.text assert "è" not in parser.text
def setup(self): self.parser = Parser() self.parsing_requests_test = [ ("Où se trouve Marseille ?", "marseille"), ("Tu pourrais me dire où se situe Cannes ?", "cannes"), ("Papy ! Parle moi de Toulon !", "toulon"), ("Qu'est-ce que tu peux me dire sur Lyon ?", "lyon"), ("Tu pourrais me parler d'Arles ?", "arles"), ("Où est Montpellier ??", "montpellier"), ("Raconte moi l'histoire d'Avignon.", "avignon"), ("Qu'est-ce que tu peux me dire à propos de Nice?", "nice"), ("Adresse de la Poste à Arles", "la poste a arles"), ("Salut Grandpy", None) ]
class TestParser: def setup(self): self.parser = Parser() self.parsing_requests_test = [ ("Où se trouve Marseille ?", "marseille"), ("Tu pourrais me dire où se situe Cannes ?", "cannes"), ("Papy ! Parle moi de Toulon !", "toulon"), ("Qu'est-ce que tu peux me dire sur Lyon ?", "lyon"), ("Tu pourrais me parler d'Arles ?", "arles"), ("Où est Montpellier ??", "montpellier"), ("Raconte moi l'histoire d'Avignon.", "avignon"), ("Qu'est-ce que tu peux me dire à propos de Nice?", "nice"), ("Adresse de la Poste à Arles", "la poste a arles"), ("Salut Grandpy", None) ] def test_parse_request(self): """Check that the parser returns meaningful information""" for request, result in self.parsing_requests_test: assert self.parser.parse_request(request) == result
def grandpy(self): # error list list_error = [ "Je suis un peu dur de la feuille, peux tu reformuler ?", "Je ne suis pas sur de comprendre, peux tu le dire autrement ?", "Argh, Alzheimer quand tu nous tiens.. reformules veux tu ?" ] # Answer list list_answer = [ "Bien sur mon enfant, voici l'adresse:", "Pas de souci, je te donne l'adresse mon enfant:", "Il n'y a pas de probleme mon enfant, voila l'adresse:" ] # Anecdote list list_anecdote = [ "Tiens d'ailleurs, j'ai une anecdote interessante:", "A ce propos, j'ai une petite info pour toi:", "Le savais-tu ?" ] # Parser parser = Parser(self.raw_question) clean_question = parser.clean_input() # Here here = Here(clean_question) sorted_informations = here.getting_sorted_informations() if here.error: return { "grandpyerror": random.choice(list_error) } else: title = sorted_informations[0] latitude = sorted_informations[1][0] longitude = sorted_informations[1][1] address = sorted_informations[3] # Wiki wiki = Wiki(latitude, longitude) page_id = wiki.article_id_from_sorted_raw_info() full_extract = wiki.getting_extract_and_url_from_closest_wiki_page( page_id ) article_extract = full_extract[0] url = full_extract[1] return { "title": title, "latitude": latitude, "longitude": longitude, "address": address.replace('<br/>', ', '), "mapapi": HERE_JS_MAP, "articleextract": article_extract, "urlarticle": url, "grandpyanecdote": random.choice(list_anecdote), "grandpyanswer": title + "? " + random.choice(list_answer) + " " + address.replace('<br/>', ', ') }
def test_parser_extract_location_from_a_question(self): sentence_test = "ou se situe la tour eiffel ?" parser = Parser(sentence_test) parser.clean_input() assert parser.text == "la tour eiffel"
def test_parser_remove_spaces_in_beggining_and_the_end(self): sentence_test = " a b " parser = Parser(sentence_test) parser.clean_input() assert parser.text == "a b"
def test_remove_accents(): parser = Parser("éèâ") expected_result = "eea" assert parser.remove_accents().text == expected_result
def test_remove_capitals(): parser = Parser("Salut") expected_result = "salut" assert parser.remove_capitals().text == expected_result
def test_parser_text(): parser = Parser( "Salut, comment vas-tu? Pourrais-tu par hasard m'indiquer quelle est l'adresse de la tour eiffel, s'il te plait ?") expected_result = "la tour eiffel" assert parser.parser_text().text == expected_result