Sha256: d8bcd7fa223876d4b6bbbf2cbad692cbedee227204bea2fec36e2ced65f9bc43

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 KB

Contents

module MultisertSpec
  class MrClean
    attr_accessor :connection, :database, :create_table_schemas

    def initialize attrs = {}
      @connection           = attrs[:connection]
      @database             = attrs[:database]
      @create_table_schemas = attrs[:create_table_schemas] || []
      yield self if block_given?
    end

    def ensure_clean_database! opts = {}
      clean_database! !!opts[:teardown_tables]
      ensure_tables!
    end

  private

    def database_exists?
      @connection.query('show databases').to_a.map { |database|
        database['Database']
      }.include?(@database)
    end

    def ensure_database!
      @connection.query "create database if not exists #{@database}"
    end

    def clean_database! teardown_tables
      return unless database_exists?
      @connection.query("show tables in #{@database}").to_a.each do |table|
        if teardown_tables
          @connection.query("drop table if exists #{@database}.#{table["Tables_in_#{@database}"]}")
        else
          @connection.query("truncate #{@database}.#{table["Tables_in_#{@database}"]}")
        end
      end
    end

    def ensure_tables!
      ensure_database!
      @create_table_schemas.each do |create_table_schema|
        @connection.query create_table_schema
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
multisert-0.0.5 spec/spec_helper.rb
multisert-0.0.4 spec/spec_helper.rb
multisert-0.0.3 spec/spec_helper.rb
multisert-0.0.2 spec/spec_helper.rb