ooze/tests/test_04_database_introspect...

62 lines
2.1 KiB
Python

import pytest
def test_table_existence(config, database):
class DBIntrospectionTableExistence(database.Model):
id = database.UUID(constraints=[database.PrimaryKey()], default=database.Call('gen_random_uuid'))
a = database.Integer()
b = database.CharacterVarying()
DBIntrospectionTableExistence.create_table().execute()
rows = database.introspection.Tables.select().where(
database.introspection.Tables.table_name == DBIntrospectionTableExistence.__sql_name__()
).execute().fetchall()
assert len(rows) == 1
assert rows[0].table_catalog == config['database']['dbname']
assert rows[0].table_name == DBIntrospectionTableExistence.__sql_name__()
def test_column_existence(config, database):
class DBIntrospectionColumnExistence(database.Model):
id = database.UUID(constraints=[database.PrimaryKey()], default=database.Call('gen_random_uuid'))
a = database.Integer()
b = database.CharacterVarying()
DBIntrospectionColumnExistence.create_table().execute()
rows = database.introspection.Columns.select().where(
database.introspection.Columns.table_name == DBIntrospectionColumnExistence.__sql_name__()
).execute().fetchall()
all_column_names = [row.column_name for row in rows]
assert len(all_column_names) == 3
assert 'id' in all_column_names
assert 'a' in all_column_names
assert 'b' in all_column_names
def test_column_types(config, database):
class DBIntrospectionColumnType(database.Model):
id = database.UUID(constraints=[database.PrimaryKey()], default=database.Call('gen_random_uuid'))
a = database.Integer()
b = database.CharacterVarying()
DBIntrospectionColumnType.create_table().execute()
rows = database.introspection.Columns.select().where(
database.introspection.Columns.table_name == DBIntrospectionColumnType.__sql_name__()
).execute().fetchall()
for row in rows:
assert row.column_name in DBIntrospectionColumnType.__columns__
column = getattr(DBIntrospectionColumnType, row.column_name)
assert row.data_type == column.__type__