Sha256: 34a30e61a3d1f0ed092df943b7c26e2b46bccb981c8780ddaa2ebd2d9d146f4d

Contents?: true

Size: 1.89 KB

Versions: 7

Compression:

Stored size: 1.89 KB

Contents

# Setups the test database with the schema_migrations table that ActiveRecord
# requires for the migrations, plus a table for the Comment model used throught
# the tests.
#
class TestDatabase

  # Constructor
  #
  # @param config [Hash]
  def initialize(config)
    @config = config
  end

  # Creates the test database, the schema_migrations and the comments tables.
  # It drops any of them if they already exist
  def setup
    setup_test_database
    drop_and_create_schema_migrations_table
  end

  # Creates the percona_migrator_test database and the comments table in it.
  # Before, it drops both if they already exist
  def setup_test_database
    drop_and_create_test_database
    drop_and_create_comments_table
  end

  # Creates the ActiveRecord's schema_migrations table required for
  # migrations to work. Before, it drops the table if it already exists
  def drop_and_create_schema_migrations_table
    %x(#{mysql_command} "USE percona_migrator_test; DROP TABLE IF EXISTS schema_migrations; CREATE TABLE schema_migrations ( version varchar(255) COLLATE utf8_unicode_ci NOT NULL, UNIQUE KEY unique_schema_migrations (version)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci")
  end

  private

  attr_reader :config

  def drop_and_create_test_database
    %x(#{mysql_command} "DROP DATABASE IF EXISTS percona_migrator_test; CREATE DATABASE percona_migrator_test DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci;")
  end

  def drop_and_create_comments_table
    %x(#{mysql_command} "USE percona_migrator_test; DROP TABLE IF EXISTS comments; CREATE TABLE comments ( id int(12) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;")
  end

  # Returns the command to run the mysql client. It uses the crendentials from
  # the provided config
  def mysql_command
    "mysql --user=#{config['username']} --password=#{config['password']} -e"
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
percona_migrator-3.0.0 test_database.rb
percona_migrator-1.1.0 test_database.rb
percona_migrator-0.1.1 test_database.rb
percona_migrator-1.0.0 test_database.rb
percona_migrator-0.1.0.rc.7 test_database.rb
percona_migrator-0.1.0.rc.6 test_database.rb
percona_migrator-0.1.0.rc.5 test_database.rb