def test_get_extract(self): """ Mock request in order to get an extract from wikipedia page, wikipedia page id is included """ with requests_mock.Mocker() as mocker: mt_st_michel = WikiRequest(48.636063, -1.511457) result = '{"batchcomplete":"","warnings":{"extracts":{"*":""}},' \ '"query":{"pages":{"1187468":{"pageid":1187468,"ns":0,"title":"Le Mont-Saint-Michel",' \ '"extract":"Le Mont-Saint-Michel est une commune française située dans le département de la ' \ 'Manche en Normandie. Elle tire son nom de l\'îlot rocheux consacré à saint Michel où ' \ 's’élève aujourd’hui l’abbaye du Mont-Saint-Michel. L’architecture du Mont-Saint-Michel et ' \ 'sa baie en font le site touristique le plus fréquenté de Normandie et l\'un des dix plus ' \ 'fréquentés en France — premier site après ceux d\'Île-de-France — avec près de deux millions ' \ 'et demi de visiteurs chaque année (3 250 000 en 2006, 2 300 000 en 2014)."}}}}' url_extract = "https://fr.wikipedia.org/w/api.php?action=query&pageids=1187468" \ "&prop=extracts&explaintext=true&exsectionformat=plain&exsentences=3&format=json" page_id_result = '{"query": {"geosearch": [{"pageid": 1187468}]}}' mocker.get(mt_st_michel.url_geoloc, text=page_id_result) mocker.get(url_extract, text=result) assert mt_st_michel.get_extract() == "Le Mont-Saint-Michel est une commune française située " \ "dans le département de la Manche en Normandie. Elle tire " \ "son nom de l'îlot rocheux consacré à saint Michel où s’élève " \ "aujourd’hui l’abbaye du Mont-Saint-Michel. L’architecture " \ "du Mont-Saint-Michel et sa baie en font le site touristique" \ " le plus fréquenté de Normandie et l'un des dix plus " \ "fréquentés en France — premier site après ceux " \ "d'Île-de-France — avec près de deux millions et " \ "demi de visiteurs chaque année (3 250 000 en 2006, " \ "2 300 000 en 2014)."
def test_get_page_id(self): """ Mock request to get a given wikipedia page id """ with requests_mock.Mocker() as mocker: mt_st_michel = WikiRequest(48.636063, -1.511457) result = '{"query": {"geosearch": [{"pageid": 1187468}]}}' mocker.get(mt_st_michel.url_geoloc, text=result) assert mt_st_michel.get_page_id() == 1187468
def test_get_page_title(self): """ Mock request to get a given wikipedia page title """ with requests_mock.Mocker() as mocker: mt_st_michel = WikiRequest(48.636063, -1.511457) result = '{"query": {"geosearch": [{"title": ' \ '"Le Mont-Saint-Michel"}]}}' mocker.get(mt_st_michel.url_geoloc, text=result) assert mt_st_michel.get_page_title() == "Le Mont-Saint-Michel"
def test_get_url(self): """ Mock request to get a given wikipedia page url """ with requests_mock.Mocker() as mocker: mt_st_michel = WikiRequest(48.636063, -1.511457) result = '{"query": {"pages": [{"fullurl": ' \ '"https://fr.wikipedia.org/wiki/Le_Mont-Saint-Michel"}]}}' mocker.get('http://fr.wikipedia.org/w/api.php?action=query&prop=' 'extracts|info&exsentences=3&inprop=url&explaintext=&' 'titles={}&format=json&formatversion=2'.format( "Le Mont-Saint-Michel"), text=result) assert mt_st_michel.get_page_full_url( "Le Mont-Saint-Michel" ) == "https://fr.wikipedia.org/wiki/Le_Mont-Saint-Michel"
class TestWikiRequest: """ 'Real' requests using Wikipedia API and real responses """ def setup(self): self.mt_st_michel = WikiRequest(48.636063, -1.511457) def test_get_extract(self): """ Get an extract of a given wikipedia page """ assert self.mt_st_michel.get_extract() == "Le Mont-Saint-Michel est une commune française située dans " \ "le département de la Manche en Normandie. Elle tire son nom de " \ "l'îlot rocheux consacré à saint Michel où s’élève aujourd’hui " \ "l’abbaye du Mont-Saint-Michel.\nL’architecture " \ "du Mont-Saint-Michel et sa baie en font le site " \ "touristique le plus fréquenté de Normandie et l'un " \ "des dix plus fréquentés en France — premier site après ceux " \ "d'Île-de-France — avec près de deux millions et demi de " \ "visiteurs chaque année (3 250 000 en 2006, 2 300 000 en 2014)." def test_get_page_title(self): """ Test to get a giwen wikipedia page title """ assert self.mt_st_michel.get_page_title() == "Le Mont-Saint-Michel" def test_get_url(self): """ Test to get a given wikipedia page url """ assert self.mt_st_michel.get_page_full_url("Le Mont-Saint-Michel") == \ "https://fr.wikipedia.org/wiki/Le_Mont-Saint-Michel" def test_get_page_id(self): """ Test to get a given wikipedia page id """ assert self.mt_st_michel.get_page_id() == 1187468
def ajax_request(): """ Store user request, call the parser on it and get coordinates from GoogleMaps. Then call MediaWiki API to extract its description. """ # get query form form and parse it user_query = decode_request() cleaned_query = clean_user_query(user_query) # give the query to Google Maps API and store response gmaps_request = GoogleMapRequest(cleaned_query) results = gmaps_request.get_data() # if there is a status, store the coordinates and address if check_if_status(results): coords = results['results'][0]['geometry']['location'] address = results['results'][0]['formatted_address'] # if there is coordinates, give it to Wikipedia API # in order to extract needed information if coords: wiki_request = WikiRequest(coords['lat'], coords['lng']) extract = wiki_request.get_extract() title = wiki_request.get_page_title() url = wiki_request.get_page_full_url(title) response = {'extract': extract, 'coords': coords, 'address': address, 'url': url} # return response in Json format return jsonify(response) # if there is no coordinates, send an empty response else: response = "" return jsonify(response) # if there is no positive status, send an empty response else: response = "" return jsonify(response)
def setup(self): self.mt_st_michel = WikiRequest(48.636063, -1.511457)