class ActiveRecord::Migration::CreateJoinTableTest

Attributes

connection[R]

Public Instance Methods

setup() click to toggle source
Calls superclass method
# File activerecord/test/cases/migration/create_join_table_test.rb, line 10
def setup
  super
  @connection = ActiveRecord::Base.connection
end
test_create_and_drop_join_table_with_common_prefix() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 136
def test_create_and_drop_join_table_with_common_prefix
  with_table_cleanup do
    connection.create_join_table "audio_artists", "audio_musics"
    assert connection.table_exists?("audio_artists_musics")

    connection.drop_join_table "audio_artists", "audio_musics"
    assert !connection.table_exists?("audio_artists_musics"), "Should have dropped join table, but didn't"
  end
end
test_create_join_table() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 21
def test_create_join_table
  connection.create_join_table :artists, :musics

  assert_equal %w(artist_id music_id), connection.columns(:artists_musics).map(&:name).sort
end
test_create_join_table_respects_reference_key_type() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 83
def test_create_join_table_respects_reference_key_type
  connection.create_join_table :artists, :musics do |t|
    t.references :video
  end

  artist_id, music_id, video_id = connection.columns(:artists_musics).sort_by(&:name)

  assert_equal video_id.sql_type, artist_id.sql_type
  assert_equal video_id.sql_type, music_id.sql_type
end
test_create_join_table_set_not_null_by_default() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 27
def test_create_join_table_set_not_null_by_default
  connection.create_join_table :artists, :musics

  assert_equal [false, false], connection.columns(:artists_musics).map(&:null)
end
test_create_join_table_with_column_options() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 63
def test_create_join_table_with_column_options
  connection.create_join_table :artists, :musics, column_options: { null: true }

  assert_equal [true, true], connection.columns(:artists_musics).map(&:null)
end
test_create_join_table_with_index() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 75
def test_create_join_table_with_index
  connection.create_join_table :artists, :musics do |t|
    t.index [:artist_id, :music_id]
  end

  assert_equal [%w(artist_id music_id)], connection.indexes(:artists_musics).map(&:columns)
end
test_create_join_table_with_strings() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 33
def test_create_join_table_with_strings
  connection.create_join_table "artists", "musics"

  assert_equal %w(artist_id music_id), connection.columns(:artists_musics).map(&:name).sort
end
test_create_join_table_with_symbol_and_string() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 39
def test_create_join_table_with_symbol_and_string
  connection.create_join_table :artists, "musics"

  assert_equal %w(artist_id music_id), connection.columns(:artists_musics).map(&:name).sort
end
test_create_join_table_with_the_proper_order() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 45
def test_create_join_table_with_the_proper_order
  connection.create_join_table :videos, :musics

  assert_equal %w(music_id video_id), connection.columns(:musics_videos).map(&:name).sort
end
test_create_join_table_with_the_table_name() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 51
def test_create_join_table_with_the_table_name
  connection.create_join_table :artists, :musics, table_name: :catalog

  assert_equal %w(artist_id music_id), connection.columns(:catalog).map(&:name).sort
end
test_create_join_table_with_the_table_name_as_string() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 57
def test_create_join_table_with_the_table_name_as_string
  connection.create_join_table :artists, :musics, table_name: "catalog"

  assert_equal %w(artist_id music_id), connection.columns(:catalog).map(&:name).sort
end
test_create_join_table_with_uuid() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 147
def test_create_join_table_with_uuid
  connection.create_join_table :artists, :musics, column_options: { type: :uuid }
  assert_equal [:uuid, :uuid], connection.columns(:artists_musics).map(&:type)
end
test_create_join_table_without_indexes() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 69
def test_create_join_table_without_indexes
  connection.create_join_table :artists, :musics

  assert connection.indexes(:artists_musics).blank?
end
test_drop_join_table() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 94
def test_drop_join_table
  connection.create_join_table :artists, :musics
  connection.drop_join_table :artists, :musics

  assert !connection.table_exists?("artists_musics")
end
test_drop_join_table_with_column_options() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 129
def test_drop_join_table_with_column_options
  connection.create_join_table :artists, :musics, column_options: { null: true }
  connection.drop_join_table :artists, :musics, column_options: { null: true }

  assert !connection.table_exists?("artists_musics")
end
test_drop_join_table_with_strings() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 101
def test_drop_join_table_with_strings
  connection.create_join_table :artists, :musics
  connection.drop_join_table "artists", "musics"

  assert !connection.table_exists?("artists_musics")
end
test_drop_join_table_with_the_proper_order() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 108
def test_drop_join_table_with_the_proper_order
  connection.create_join_table :videos, :musics
  connection.drop_join_table :videos, :musics

  assert !connection.table_exists?("musics_videos")
end
test_drop_join_table_with_the_table_name() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 115
def test_drop_join_table_with_the_table_name
  connection.create_join_table :artists, :musics, table_name: :catalog
  connection.drop_join_table :artists, :musics, table_name: :catalog

  assert !connection.table_exists?("catalog")
end
test_drop_join_table_with_the_table_name_as_string() click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 122
def test_drop_join_table_with_the_table_name_as_string
  connection.create_join_table :artists, :musics, table_name: "catalog"
  connection.drop_join_table :artists, :musics, table_name: "catalog"

  assert !connection.table_exists?("catalog")
end

Private Instance Methods

with_table_cleanup() { || ... } click to toggle source
# File activerecord/test/cases/migration/create_join_table_test.rb, line 155
def with_table_cleanup
  tables_before = connection.data_sources

  yield
ensure
  tables_after = connection.data_sources - tables_before

  tables_after.each do |table|
    connection.drop_table table
  end
end