"""
Tests for specialised conenction and cursor classes.
"""
import pytest

from nominatim.db.connection import connect

@pytest.fixture
def db(temp_db):
    conn = connect('dbname=' + temp_db)
    yield conn
    conn.close()


def test_connection_table_exists(db, temp_db_cursor):
    assert db.table_exists('foobar') == False

    temp_db_cursor.execute('CREATE TABLE foobar (id INT)')

    assert db.table_exists('foobar') == True


def test_cursor_scalar(db, temp_db_cursor):
    temp_db_cursor.execute('CREATE TABLE dummy (id INT)')

    with db.cursor() as cur:
        assert cur.scalar('SELECT count(*) FROM dummy') == 0

def test_cursor_scalar_many_rows(db):
    with db.cursor() as cur:
        with pytest.raises(RuntimeError):
            cur.scalar('SELECT * FROM pg_tables')
