Open
Description
I need assertions for checking database structure.
E.g. I want to check if specific table exists in database.
Proposed assertions:
assertThat(table).exists();
or
assertThat(source).tableExists("name");
Additionally it would be nice to have convinience method isEmpty() for
assertThat(table).hasNumberOfRows(0);
JDBC code to check if table exists ()
public static boolean hasTable(DataSource ds, String name) {
boolean exists = false;
try(Connection c = ds.getConnection();
//table names usually stored in database uppercased
ResultSet rs = c.getMetaData().getTables(null, null, name.toUpperCase(), null)) {
if (rs.next()) {
exists = true; // table exists
}
} catch (Exception e) {
e.printStackTrace();
}
return exists;
}
Or just do some operation and catch jdbc exception: table not exists. Below assertion partially does the trick, but is not elegant.
assertThat(table).hasNumberOfRows(0);