3
class MyReader < ActiveRecord::Base
4
has_and_belongs_to_many :my_books
7
class MyBook < ActiveRecord::Base
8
has_and_belongs_to_many :my_readers
11
class HabtmJoinTableTest < ActiveRecord::TestCase
13
ActiveRecord::Base.connection.create_table :my_books, :force => true do |t|
16
assert ActiveRecord::Base.connection.table_exists?(:my_books)
18
ActiveRecord::Base.connection.create_table :my_readers, :force => true do |t|
21
assert ActiveRecord::Base.connection.table_exists?(:my_readers)
23
ActiveRecord::Base.connection.create_table :my_books_my_readers, :force => true do |t|
25
t.integer :my_reader_id
27
assert ActiveRecord::Base.connection.table_exists?(:my_books_my_readers)
31
ActiveRecord::Base.connection.drop_table :my_books
32
ActiveRecord::Base.connection.drop_table :my_readers
33
ActiveRecord::Base.connection.drop_table :my_books_my_readers
36
uses_transaction :test_should_raise_exception_when_join_table_has_a_primary_key
37
def test_should_raise_exception_when_join_table_has_a_primary_key
38
if ActiveRecord::Base.connection.supports_primary_key?
39
assert_raise ActiveRecord::ConfigurationError do
40
jaime = MyReader.create(:name=>"Jaime")
41
jaime.my_books << MyBook.create(:name=>'Great Expectations')
46
uses_transaction :test_should_cache_result_of_primary_key_check
47
def test_should_cache_result_of_primary_key_check
48
if ActiveRecord::Base.connection.supports_primary_key?
49
ActiveRecord::Base.connection.stubs(:primary_key).with('my_books_my_readers').returns(false).once
50
weaz = MyReader.create(:name=>'Weaz')
52
weaz.my_books << MyBook.create(:name=>'Great Expectations')
53
weaz.my_books << MyBook.create(:name=>'Greater Expectations')