X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/f6e894a53af83a69f553555cb4a6248d57a58391..49ee7505ed6d41cce466f8f1e57c12f5c1150f96:/test/python/test_db_connection.py diff --git a/test/python/test_db_connection.py b/test/python/test_db_connection.py index dcbfb8bf..5de68618 100644 --- a/test/python/test_db_connection.py +++ b/test/python/test_db_connection.py @@ -2,6 +2,7 @@ Tests for specialised conenction and cursor classes. """ import pytest +import psycopg2 from nominatim.db.connection import connect, get_pg_env @@ -11,10 +12,10 @@ def db(temp_db): yield conn -def test_connection_table_exists(db, temp_db_cursor): +def test_connection_table_exists(db, table_factory): assert db.table_exists('foobar') == False - temp_db_cursor.execute('CREATE TABLE foobar (id INT)') + table_factory('foobar') assert db.table_exists('foobar') == True @@ -30,6 +31,22 @@ def test_connection_index_exists(db, temp_db_cursor): assert db.index_exists('some_index', table='bar') == False +def test_drop_table_existing(db, table_factory): + table_factory('dummy') + assert db.table_exists('dummy') + + db.drop_table('dummy') + assert not db.table_exists('dummy') + + +def test_drop_table_non_existsing(db): + db.drop_table('dfkjgjriogjigjgjrdghehtre') + + +def test_drop_table_non_existing_force(db): + with pytest.raises(psycopg2.ProgrammingError, match='.*does not exist.*'): + db.drop_table('dfkjgjriogjigjgjrdghehtre', if_exists=False) + def test_connection_server_version_tuple(db): ver = db.server_version_tuple() @@ -48,8 +65,8 @@ def test_connection_postgis_version_tuple(db, temp_db_cursor): assert ver[0] >= 2 -def test_cursor_scalar(db, temp_db_cursor): - temp_db_cursor.execute('CREATE TABLE dummy (id INT)') +def test_cursor_scalar(db, table_factory): + table_factory('dummy') with db.cursor() as cur: assert cur.scalar('SELECT count(*) FROM dummy') == 0 @@ -61,6 +78,14 @@ def test_cursor_scalar_many_rows(db): cur.scalar('SELECT * FROM pg_tables') +def test_cursor_scalar_no_rows(db, table_factory): + table_factory('dummy') + + with db.cursor() as cur: + with pytest.raises(RuntimeError): + cur.scalar('SELECT id FROM dummy') + + def test_get_pg_env_add_variable(monkeypatch): monkeypatch.delenv('PGPASSWORD', raising=False) env = get_pg_env('user=fooF')