aboutsummaryrefslogblamecommitdiffstats
path: root/activerecord/test/cases/migration/create_join_table_test.rb
blob: 0428d9ba766ba10c576c729a8b07a9217244af7b (plain) (tree)





































































                                                                                                 
require 'cases/helper'

module ActiveRecord
  class Migration
    class CreateJoinTableTest < ActiveRecord::TestCase
      attr_reader :connection

      def setup
        super
        @connection = ActiveRecord::Base.connection
      end

      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
      ensure
        connection.drop_table :artists_musics
      end

      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)
      ensure
        connection.drop_table :artists_musics
      end

      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
      ensure
        connection.drop_table :artists_musics
      end

      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
      ensure
        connection.drop_table :musics_videos
      end

      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
      ensure
        connection.drop_table :catalog
      end

      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
      ensure
        connection.drop_table :catalog
      end

      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)
      ensure
        connection.drop_table :artists_musics
      end
    end
  end
end