class ActiveRecord::ConnectionAdapters::Mysql2SchemaTest

Public Class Methods

name() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 21
def self.name; "Post"; end

Public Instance Methods

setup() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 12
def setup
  @connection = ActiveRecord::Base.connection
  db          = Post.connection_pool.spec.config[:database]
  table       = Post.table_name
  @db_name    = db

  @omgpost = Class.new(ActiveRecord::Base) do
    self.inheritance_column = :disabled
    self.table_name = "#{db}.#{table}"
    def self.name; "Post"; end
  end
end
test_data_source_exists?() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 64
def test_data_source_exists?
  name = @omgpost.table_name
  assert @connection.data_source_exists?(name), "#{name} data_source should exist"
end
test_data_source_exists_wrong_schema() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 69
def test_data_source_exists_wrong_schema
  assert(!@connection.data_source_exists?("#{@db_name}.zomg"), "data_source should not exist")
end
test_drop_temporary_table() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 96
def test_drop_temporary_table
  @connection.transaction do
    @connection.create_table(:temp_table, temporary: true)
    # if it doesn't properly say DROP TEMPORARY TABLE, the transaction commit
    # will complain that no transaction is active
    @connection.drop_table(:temp_table, temporary: true)
  end
end
test_dump_indexes() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 73
def test_dump_indexes
  index_a_name = "index_key_tests_on_snack"
  index_b_name = "index_key_tests_on_pizza"
  index_c_name = "index_key_tests_on_awesome"

  table = "key_tests"

  indexes = @connection.indexes(table).sort_by(&:name)
  assert_equal 3, indexes.size

  index_a = indexes.select { |i| i.name == index_a_name }[0]
  index_b = indexes.select { |i| i.name == index_b_name }[0]
  index_c = indexes.select { |i| i.name == index_c_name }[0]
  assert_equal :btree, index_a.using
  assert_nil index_a.type
  assert_equal :btree, index_b.using
  assert_nil index_b.type

  assert_nil index_c.using
  assert_equal :fulltext, index_c.type
end
test_float_limits() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 25
def test_float_limits
  @connection.create_table :mysql_doubles do |t|
    t.float :float_no_limit
    t.float :float_short, limit: 5
    t.float :float_long, limit: 53

    t.float :float_23, limit: 23
    t.float :float_24, limit: 24
    t.float :float_25, limit: 25
  end

  column_no_limit = @connection.columns(:mysql_doubles).find { |c| c.name == "float_no_limit" }
  column_short = @connection.columns(:mysql_doubles).find { |c| c.name == "float_short" }
  column_long = @connection.columns(:mysql_doubles).find { |c| c.name == "float_long" }

  column_23 = @connection.columns(:mysql_doubles).find { |c| c.name == "float_23" }
  column_24 = @connection.columns(:mysql_doubles).find { |c| c.name == "float_24" }
  column_25 = @connection.columns(:mysql_doubles).find { |c| c.name == "float_25" }

  # Mysql floats are precision 0..24, Mysql doubles are precision 25..53
  assert_equal 24, column_no_limit.limit
  assert_equal 24, column_short.limit
  assert_equal 53, column_long.limit

  assert_equal 24, column_23.limit
  assert_equal 24, column_24.limit
  assert_equal 53, column_25.limit
ensure
  @connection.drop_table "mysql_doubles", if_exists: true
end
test_primary_key() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 60
def test_primary_key
  assert_equal "id", @omgpost.primary_key
end
test_schema() click to toggle source
# File activerecord/test/cases/adapters/mysql2/schema_test.rb, line 56
def test_schema
  assert @omgpost.first
end