class MySQLExpectations::Matchers::DatabaseOnlyHaveTables

A matcher that checks what tables are in a database

Attributes

actual_table_names[R]
database[R]
expected_table_names[R]

Public Class Methods

new(*expected_table_names) click to toggle source
# File lib/mysql_expectations/matchers/database_only_have_tables.rb, line 16
def initialize(*expected_table_names)
  @expected_table_names = expected_table_names.flatten
  @database = nil
end

Public Instance Methods

additional_tables_message() click to toggle source
# File lib/mysql_expectations/matchers/database_only_have_tables.rb, line 38
def additional_tables_message
  message = ''
  unless (actual_table_names - expected_table_names).empty?
    message << ' but had additional tables: '
    message <<
      (actual_table_names - expected_table_names).to_sentence
  end
  message
end
description() click to toggle source
# File lib/mysql_expectations/matchers/database_only_have_tables.rb, line 34
def description
  "only have tables #{expected_table_names.to_sentence}"
end
failure_message() click to toggle source
# File lib/mysql_expectations/matchers/database_only_have_tables.rb, line 58
def failure_message
  message = "expected '#{database.name}' "
  message << 'database to only have tables '
  message << expected_table_names.to_sentence
  message << additional_tables_message
  message << missing_tables_message
  message
end
liquibase_tables() click to toggle source
# File lib/mysql_expectations/matchers/database_only_have_tables.rb, line 21
def liquibase_tables
  %w(DATABASECHANGELOG DATABASECHANGELOGLOCK)
end
matches?(database) click to toggle source
# File lib/mysql_expectations/matchers/database_only_have_tables.rb, line 29
def matches?(database)
  @database = database
  actual_table_names.sort == expected_table_names.sort
end
missing_tables_message() click to toggle source
# File lib/mysql_expectations/matchers/database_only_have_tables.rb, line 48
def missing_tables_message
  message = ''
  unless (expected_table_names - actual_table_names).empty?
    message << ' but was missing tables: '
    message <<
      (expected_table_names - actual_table_names).to_sentence
  end
  message
end