1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# frozen_string_literal: true
require "test_helper"
require ActionMailbox::Engine.root.join("db/migrate/20180917164000_create_action_mailbox_tables.rb").to_s
class ActionMailbox::MigrationsTest < ActiveSupport::TestCase
setup do
@original_verbose = ActiveRecord::Migration.verbose
ActiveRecord::Migration.verbose = false
@connection = ActiveRecord::Base.lease_connection
@original_options = Rails.configuration.generators.options.deep_dup
end
teardown do
Rails.configuration.generators.options = @original_options
rerun_migration
ActiveRecord::Migration.verbose = @original_verbose
end
test "migration creates tables with default primary key type" do
action_mailbox_tables.each do |table|
assert_equal :integer, primary_key(table).type
end
end
test "migration creates tables with configured primary key type" do
Rails.configuration.generators do |g|
g.orm :active_record, primary_key_type: :string
end
rerun_migration
action_mailbox_tables.each do |table|
assert_equal :string, primary_key(table).type
end
end
private
def rerun_migration
CreateActionMailboxTables.migrate(:down)
CreateActionMailboxTables.migrate(:up)
end
def action_mailbox_tables
@action_mailbox_tables ||= ActionMailbox::Record.descendants.map { |klass| klass.table_name.to_sym }
end
def primary_key(table)
@connection.columns(table).find { |c| c.name == "id" }
end
end
|