1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
# Copyright 2015-2018 Martijn van Exel.
# This file is part of the overpass-api-python-wrapper project
# which is licensed under Apache 2.0.
# See LICENSE.txt for the full license text.
import overpass
import geojson
import pickle
import os
def test_initialize_api():
api = overpass.API()
assert isinstance(api, overpass.API)
assert api.debug is False
def test_geojson():
api = overpass.API(debug=True)
map_query = overpass.MapQuery(37.86517, -122.31851, 37.86687, -122.31635)
osm_geo = api.get(map_query)
assert len(osm_geo["features"]) > 1
osm_geo = api.get("node(area:3602758138)[amenity=cafe]")
assert len(osm_geo["features"]) > 1
def test_geojson_extended():
class API(overpass.API):
def _get_from_overpass(self, query):
return pickle.load(open(os.path.join(os.path.dirname(__file__), "example.response"), "rb"))
# The commented code should only be executed once when major changes to the Overpass API and/or to this wrapper are
# introduced. One than has to manually verify that the date in the example.response file from the Overpass API
# matches the data in the example.json file generated by this wrapper.
#
# The reason for this approach is the following: It is not safe to make calls to the actual API in this test as the
# API might momentarily be unavailable and the underlying data can also change at any moment. The commented code is
# needed to create the example.response and example.json files. The example.response file is subsequently used to
# fake the _get_from_overpass method during the tests and the example.json file is the reference that we are
# asserting against.
#
# api = overpass.API()
# osm_geo = api.get("rel(6518385);out body geom;way(10322303);out body geom;node(4927326183);", verbosity='body geom')
# pickle.dump(api._get_from_overpass("[out:json];rel(6518385);out body geom;way(10322303);out body geom;node(4927326183);out body geom;"),
# open(os.path.join(os.path.dirname(__file__), "example.response"), "wb"),
# protocol=2)
# geojson.dump(osm_geo, open(os.path.join(os.path.dirname(__file__), "example.json"), "w"))
api = API()
osm_geo = api.get("rel(6518385);out body geom;way(10322303);out body geom;node(4927326183);", verbosity='body geom')
ref_geo = geojson.load(open(os.path.join(os.path.dirname(__file__), "example.json"), "r"))
assert osm_geo==ref_geo
|