Sha256: c95f053d29f344705d16def83c9a19b66b30d874afab703ebb4b7d2718b39b1c

Contents?: true

Size: 1.65 KB

Versions: 2

Compression:

Stored size: 1.65 KB

Contents

require 'db/mysql'

class MySQLConnectionTest < Test::Unit::TestCase

  def test_mysql_default_in_strict_mode
    assert_equal [["STRICT_ALL_TABLES"]], select_rows("SELECT @@SESSION.sql_mode")
  end if ar_version('4.0')

  def test_mysql_strict_mode_disabled
    run_without_connection do |orig_connection|
      ActiveRecord::Base.establish_connection(orig_connection.merge({:strict => false}))
      assert_equal [['']], select_rows("SELECT @@SESSION.sql_mode")
    end
  end
  
  def test_mysql_set_session_variable
    run_without_connection do |orig_connection|
      ActiveRecord::Base.establish_connection(orig_connection.deep_merge({:variables => {:default_week_format => 3}}))
      rows = select_rows("SELECT @@SESSION.DEFAULT_WEEK_FORMAT")
      assert_equal 3, rows.first.first.to_i
    end
  end

  def test_mysql_set_session_variable_to_default
    run_without_connection do |orig_connection|
      ActiveRecord::Base.establish_connection(orig_connection.deep_merge({:variables => {:default_week_format => :default}}))
      global_mode_rows = select_rows "SELECT @@GLOBAL.DEFAULT_WEEK_FORMAT"
      session_mode_rows = select_rows "SELECT @@SESSION.DEFAULT_WEEK_FORMAT"
      assert_equal global_mode_rows, session_mode_rows
    end
  end
  
  protected
  
  def select_rows(sql)
    result = ActiveRecord::Base.connection.exec_query(sql)
    result.respond_to?(:rows) ? result.rows : [ result.first.map { |_,value| value } ]
  end
  
  private

  def run_without_connection
    original_connection = ActiveRecord::Base.remove_connection
    begin
      yield original_connection
    ensure
      ActiveRecord::Base.establish_connection(original_connection)
    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activerecord-jdbc-adapter-1.3.0.beta2 test/db/mysql/connection_test.rb
activerecord-jdbc-adapter-1.3.0.beta1 test/db/mysql/connection_test.rb