Skip to content

Add assertions for database structure #12

Open
@aartiPl

Description

@aartiPl

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);

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions