X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/4cb6dc01f382e9fb748efbe4517442af2274f210..c7fd0a7af4ce261e61feb0e63d0a6db736280081:/test/python/conftest.py diff --git a/test/python/conftest.py b/test/python/conftest.py index 8b0ba145..40b611c0 100644 --- a/test/python/conftest.py +++ b/test/python/conftest.py @@ -36,6 +36,14 @@ class _TestingCursor(psycopg2.extras.DictCursor): return set((tuple(row) for row in self)) + def table_exists(self, table): + """ Check that a table with the given name exists in the database. + """ + num = self.scalar("""SELECT count(*) FROM pg_tables + WHERE tablename = %s""", (table, )) + return num == 1 + + @pytest.fixture def temp_db(monkeypatch): """ Create an empty database for the test. The database name is also @@ -63,6 +71,12 @@ def temp_db(monkeypatch): conn.close() + +@pytest.fixture +def dsn(temp_db): + return 'dbname=' + temp_db + + @pytest.fixture def temp_db_with_extensions(temp_db): conn = psycopg2.connect(database=temp_db) @@ -77,9 +91,8 @@ def temp_db_with_extensions(temp_db): def temp_db_conn(temp_db): """ Connection to the test database. """ - conn = connection.connect('dbname=' + temp_db) - yield conn - conn.close() + with connection.connect('dbname=' + temp_db) as conn: + yield conn @pytest.fixture @@ -94,10 +107,21 @@ def temp_db_cursor(temp_db): conn.close() +@pytest.fixture +def table_factory(temp_db_cursor): + def mk_table(name, definition='id INT'): + temp_db_cursor.execute('CREATE TABLE {} ({})'.format(name, definition)) + + return mk_table + + @pytest.fixture def def_config(): return Configuration(None, SRC_DIR.resolve() / 'settings') +@pytest.fixture +def src_dir(): + return SRC_DIR.resolve() @pytest.fixture def status_table(temp_db_conn): @@ -153,3 +177,48 @@ def place_row(place_table, temp_db_cursor): geom or 'SRID=4326;POINT(0 0 )')) return _insert + +@pytest.fixture +def placex_table(temp_db_with_extensions, temp_db_conn): + """ Create an empty version of the place table. + """ + with temp_db_conn.cursor() as cur: + cur.execute("""CREATE TABLE placex ( + place_id BIGINT NOT NULL, + parent_place_id BIGINT, + linked_place_id BIGINT, + importance FLOAT, + indexed_date TIMESTAMP, + geometry_sector INTEGER, + rank_address SMALLINT, + rank_search SMALLINT, + partition SMALLINT, + indexed_status SMALLINT, + osm_id int8, + osm_type char(1), + class text, + type text, + name hstore, + admin_level smallint, + address hstore, + extratags hstore, + geometry Geometry(Geometry,4326), + wikipedia TEXT, + country_code varchar(2), + housenumber TEXT, + postcode TEXT, + centroid GEOMETRY(Geometry, 4326)) + """) + temp_db_conn.commit() + + +@pytest.fixture +def osm2pgsql_options(temp_db): + return dict(osm2pgsql='echo', + osm2pgsql_cache=10, + osm2pgsql_style='style.file', + threads=1, + dsn='dbname=' + temp_db, + flatnode_file='', + tablespaces=dict(slim_data='', slim_index='', + main_data='', main_index=''))