Sha256: 20ee0dc9d6f26bf5c9119de7d55108e97e1a676b46ae0ab23f73716bcfabcfc8

Contents?: true

Size: 1.88 KB

Versions: 59

Compression:

Stored size: 1.88 KB

Contents

require 'cases/helper'

class MyReader < ActiveRecord::Base
  has_and_belongs_to_many :my_books
end

class MyBook < ActiveRecord::Base
  has_and_belongs_to_many :my_readers
end

class HabtmJoinTableTest < ActiveRecord::TestCase
  def setup
    ActiveRecord::Base.connection.create_table :my_books, :force => true do |t|
      t.string :name
    end
    assert ActiveRecord::Base.connection.table_exists?(:my_books)

    ActiveRecord::Base.connection.create_table :my_readers, :force => true do |t|
      t.string :name
    end
    assert ActiveRecord::Base.connection.table_exists?(:my_readers)

    ActiveRecord::Base.connection.create_table :my_books_my_readers, :force => true do |t|
      t.integer :my_book_id
      t.integer :my_reader_id
    end
    assert ActiveRecord::Base.connection.table_exists?(:my_books_my_readers)
  end

  def teardown
    ActiveRecord::Base.connection.drop_table :my_books
    ActiveRecord::Base.connection.drop_table :my_readers
    ActiveRecord::Base.connection.drop_table :my_books_my_readers
  end

  uses_transaction :test_should_raise_exception_when_join_table_has_a_primary_key
  def test_should_raise_exception_when_join_table_has_a_primary_key
    if ActiveRecord::Base.connection.supports_primary_key?
      assert_raise ActiveRecord::ConfigurationError do
        jaime = MyReader.create(:name=>"Jaime")
        jaime.my_books << MyBook.create(:name=>'Great Expectations')
      end
    end
  end

  uses_transaction :test_should_cache_result_of_primary_key_check
  def test_should_cache_result_of_primary_key_check
    if ActiveRecord::Base.connection.supports_primary_key?
      ActiveRecord::Base.connection.stubs(:primary_key).with('my_books_my_readers').returns(false).once
      weaz = MyReader.create(:name=>'Weaz')

      weaz.my_books << MyBook.create(:name=>'Great Expectations')
      weaz.my_books << MyBook.create(:name=>'Greater Expectations')
    end
  end
end

Version data entries

59 entries across 59 versions & 11 rubygems

Version Path
activerecord-2.3.18 test/cases/associations/habtm_join_table_test.rb
activerecord_csi-2.3.5.p8 test/cases/associations/habtm_join_table_test.rb
activerecord-2.3.17 test/cases/associations/habtm_join_table_test.rb
activerecord_csi-2.3.5.p7 test/cases/associations/habtm_join_table_test.rb
activerecord_csi-2.3.5.p6 test/cases/associations/habtm_join_table_test.rb
activerecord-2.3.16 test/cases/associations/habtm_join_table_test.rb
activerecord-2.3.15 test/cases/associations/habtm_join_table_test.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/activerecord-2.3.14/test/cases/associations/habtm_join_table_test.rb
vanity-1.7.1 vendor/ruby/1.9.1/gems/activerecord-2.3.12/test/cases/associations/habtm_join_table_test.rb
activerecord-2.3.14 test/cases/associations/habtm_join_table_test.rb
kajam-1.0.3.rc2 vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb
activerecord-2.3.12 test/cases/associations/habtm_join_table_test.rb
radiant-1.0.0.rc2 vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb
radiant-1.0.0.rc1 vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb
webroar-0.5.0 src/admin_panel/vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb
activerecord-2.3.11 test/cases/associations/habtm_join_table_test.rb
radiantcms-couchrest_model-0.2.4 vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb
radiantcms-couchrest_model-0.2.2 vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb
radiantcms-couchrest_model-0.2.1 vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb
radiantcms-couchrest_model-0.2 vendor/rails/activerecord/test/cases/associations/habtm_join_table_test.rb