Class: MySQLExpectations::Matchers::DatabaseOnlyHaveTables

Inherits:
Object
  • Object
show all
Defined in:
lib/mysql_expectations/matchers/database_only_have_tables.rb

Overview

A matcher that checks what tables are in a database

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*expected_table_names) ⇒ DatabaseOnlyHaveTables

Returns a new instance of DatabaseOnlyHaveTables.



16
17
18
19
# 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

Instance Attribute Details

#actual_table_namesObject (readonly)

Returns the value of attribute actual_table_names.



14
15
16
# File 'lib/mysql_expectations/matchers/database_only_have_tables.rb', line 14

def actual_table_names
  @actual_table_names
end

#databaseObject (readonly)

Returns the value of attribute database.



14
15
16
# File 'lib/mysql_expectations/matchers/database_only_have_tables.rb', line 14

def database
  @database
end

#expected_table_namesObject (readonly)

Returns the value of attribute expected_table_names.



14
15
16
# File 'lib/mysql_expectations/matchers/database_only_have_tables.rb', line 14

def expected_table_names
  @expected_table_names
end

Instance Method Details

#additional_tables_messageObject



38
39
40
41
42
43
44
45
46
# 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

#descriptionObject



34
35
36
# File 'lib/mysql_expectations/matchers/database_only_have_tables.rb', line 34

def description
  "only have tables #{expected_table_names.to_sentence}"
end

#failure_messageObject



58
59
60
61
62
63
64
65
# 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_tablesObject



21
22
23
# File 'lib/mysql_expectations/matchers/database_only_have_tables.rb', line 21

def liquibase_tables
  %w(DATABASECHANGELOG DATABASECHANGELOGLOCK)
end

#matches?(database) ⇒ Boolean

Returns:

  • (Boolean)


29
30
31
32
# 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_messageObject



48
49
50
51
52
53
54
55
56
# 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