Esempio n. 1
0
 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)."
Esempio n. 2
0
 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
Esempio n. 3
0
 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"
Esempio n. 4
0
 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"
Esempio n. 5
0
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
Esempio n. 6
0
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)
Esempio n. 7
0
 def setup(self):
     self.mt_st_michel = WikiRequest(48.636063, -1.511457)