def setUp(self): if not self.__class__.__name__ in profile: profile[self.__class__.__name__] = {} profile[self.__class__.__name__][self.id().split(".")[-1]] = time.time() self.base = declarative_base(bind=self.engine) self.session = scoped_session(sessionmaker(bind=self.engine)) self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session)) self.base.metadata.create_all() self.datadir = os.path.join(os.path.dirname(__file__), "data")
def setUp(self): app = Flask("test") db = FlaskSQLAlchemy(app) self.session = db.session self.osmalchemy = OSMAlchemy(db) db.create_all() OSMAlchemyModelTests.setUp(self)
def setUp(self): self.engine = create_engine("sqlite:///:memory:") self.base = declarative_base(bind=self.engine) self.session = scoped_session(sessionmaker(bind=self.engine)) self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session)) self.base.metadata.create_all() OSMAlchemyModelTests.setUp(self)
def test_instantiate_with_flask_sqlalchemy(self): app = Flask("test") db = FlaskSQLAlchemy(app) osmalchemy = OSMAlchemy(db) self.assertIsInstance(osmalchemy, OSMAlchemy) self.assertIs(osmalchemy._engine, db.engine) self.assertIs(osmalchemy._base, db.Model) self.assertIs(osmalchemy._session, db.session)
def test_instantiate_with_engine_and_base(self): engine = create_engine("sqlite:///:memory:") base = declarative_base(bind=engine) osmalchemy = OSMAlchemy((engine, base)) self.assertIsInstance(osmalchemy, OSMAlchemy) self.assertIs(osmalchemy._engine, engine) self.assertIs(osmalchemy._base, base) engine.dispose()
def setUp(self): self.mysql = Mysqld() self.engine = create_engine(self.mysql.url() + "?charset=utf8mb4") self.base = declarative_base(bind=self.engine) self.session = scoped_session(sessionmaker(bind=self.engine)) self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session)) self.base.metadata.create_all() OSMAlchemyModelTests.setUp(self)
def setUp(self): self.postgresql = Postgresql() self.engine = create_engine(self.postgresql.url()) self.base = declarative_base(bind=self.engine) self.session = scoped_session(sessionmaker(bind=self.engine)) self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session)) self.base.metadata.create_all() OSMAlchemyModelTests.setUp(self)
from osmalchemy import OSMAlchemy # Get a basic Flask application APP = Flask(__name__) # Default configuration # FIXME allow modification after module import APP.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:' APP.config['PASSWORD_SCHEMES'] = ['pbkdf2_sha512', 'md5_crypt'] APP.config['BASIC_REALM'] = "Veripeditus" # Load configuration from a list of text files CFGLIST = ['/var/lib/veripeditus/dbconfig.cfg', '/etc/veripeditus/server.cfg'] for cfg in CFGLIST: APP.config.from_pyfile(cfg, silent=True) # Initialise SQLAlchemy and OSMAlchemy DB = SQLAlchemy(APP) OA = OSMAlchemy(DB, overpass=True) # Import model and create tables import veripeditus.server.model DB.create_all() # Run initialisation code from veripeditus.server.control import init init() # Import REST API last import veripeditus.server.rest
def test_instantiate_with_engine(self): engine = create_engine("sqlite:///:memory:") osmalchemy = OSMAlchemy(engine) self.assertIsInstance(osmalchemy, OSMAlchemy) self.assertIs(osmalchemy._engine, engine) engine.dispose()
class OSMAlchemyUtilTests(object): """ Incomplete base class for common test routines. Subclassed in engine-dependent test classes. """ def setUp(self): if not self.__class__.__name__ in profile: profile[self.__class__.__name__] = {} profile[self.__class__.__name__][self.id().split(".")[-1]] = time.time() self.base = declarative_base(bind=self.engine) self.session = scoped_session(sessionmaker(bind=self.engine)) self.osmalchemy = OSMAlchemy((self.engine, self.base, self.session)) self.base.metadata.create_all() self.datadir = os.path.join(os.path.dirname(__file__), "data") def tearDown(self): self.session.remove() self.engine.dispose() profile[self.__class__.__name__][self.id().split(".")[-1]] -= time.time() profile[self.__class__.__name__][self.id().split(".")[-1]] *= -1 def test_import_osm_file(self): # Construct path to test data file path = os.path.join(self.datadir, "schwarzrheindorf.osm") # Import data into model self.osmalchemy.import_osm_file(path) # Ensure removal of everything from ORM self.session.remove() # Check number of elements nodes = self.session.query(self.osmalchemy.node).all() ways = self.session.query(self.osmalchemy.way).all() relations = self.session.query(self.osmalchemy.relation).all() self.assertGreaterEqual(len(nodes), 7518) self.assertGreaterEqual(len(ways), 1559) self.assertGreaterEqual(len(relations), 33) # Try to retrieve some node and make checks on it haltestelle = self.session.query(self.osmalchemy.node).filter_by(id=252714572).one() # Check metadata self.assertEqual(haltestelle.id, 252714572) self.assertEqual(haltestelle.latitude, 50.7509314) self.assertEqual(haltestelle.longitude, 7.1173853) # Check tags self.assertEqual(haltestelle.tags["VRS:gemeinde"], "BONN") self.assertEqual(haltestelle.tags["VRS:ref"], "65248") self.assertEqual(haltestelle.tags["name"], "Schwarzrheindorf Kirche") # Check node on a street wittestr = self.session.query(self.osmalchemy.way).filter_by(id=23338279).one() self.assertIn(haltestelle, wittestr.nodes) # Try to retrieve some way and do checks on it doppelkirche = self.session.query(self.osmalchemy.way).filter_by(id=83296962).one() # Verify metadata self.assertEqual(doppelkirche.id, 83296962) self.assertEqual(doppelkirche.visible, True) # Verify some tags self.assertEqual(doppelkirche.tags["name"], u"St. Maria und St. Clemens Doppelkirche") self.assertEqual(doppelkirche.tags["historic"], u"church") self.assertEqual(doppelkirche.tags["wheelchair"], u"limited") self.assertEqual(doppelkirche.tags["addr:street"], u"Dixstraße") # verify nodes on way nodes = (969195704, 969195706, 1751820961, 969195708, 969195710, 969195712, 969195714, 969195719, 969195720, 969195721, 969195722, 969218813, 969218815, 969218817, 969218819, 969218820, 969218821, 969218822, 969195740, 969195742, 969195745, 969195750, 969195751, 969195752, 969195753, 1751858766, 969195754, 969195759, 969218844, 969195704) for ref in nodes: nd = self.session.query(self.osmalchemy.node).filter_by(id=ref).one() # Verify existence self.assertIn(nd, doppelkirche.nodes) # Verify ordering self.assertIs(doppelkirche.nodes[nodes.index(ref)], nd) # Cross-check other nodes are not in way for ref in (26853096, 26853100, 247056873): nd = self.session.query(self.osmalchemy.node).filter_by(id=ref).one() self.assertNotIn(nd, doppelkirche.nodes) # Try to retrieve some relation and make checks on it buslinie = self.session.query(self.osmalchemy.relation).filter_by(id=1823975).one() # Check metadata self.assertEqual(buslinie.id, 1823975) self.assertEqual(buslinie.changeset, 40638463) # Check tags self.assertEqual(buslinie.tags["name"], u"VRS 640 Siegburg") self.assertEqual(buslinie.tags["ref"], u"640") self.assertEqual(buslinie.tags["type"], u"route") self.assertEqual(buslinie.tags["route"], u"bus") # Check members self.assertIn((haltestelle, "stop"), buslinie.members) self.assertEqual(list(buslinie.members).index((haltestelle, u"stop")), 16) self.assertIn((wittestr, ""), buslinie.members) self.assertEqual(list(buslinie.members).index((wittestr, "")), 109)