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__