require 'test_helper' require 'generators/audited/upgrade_generator' class UpgradeGeneratorTest < Rails::Generators::TestCase destination File.expand_path('../../tmp', __FILE__) setup :prepare_destination tests Audited::Generators::UpgradeGenerator if Rails::VERSION::MAJOR == 4 self.use_transactional_fixtures = false else self.use_transactional_tests = false end test "should add 'comment' to audits table" do load_schema 1 run_generator %w(upgrade) assert_migration "db/migrate/add_comment_to_audits.rb" do |content| assert_match(/add_column :audits, :comment, :string/, content) end assert_migration "db/migrate/rename_changes_to_audited_changes.rb" end test "should rename 'changes' to 'audited_changes'" do load_schema 2 run_generator %w(upgrade) assert_no_migration "db/migrate/add_comment_to_audits.rb" assert_migration "db/migrate/rename_changes_to_audited_changes.rb" do |content| assert_match(/rename_column :audits, :changes, :audited_changes/, content) end end test "should add a 'remote_address' to audits table" do load_schema 3 run_generator %w(upgrade) assert_migration "db/migrate/add_remote_address_to_audits.rb" do |content| assert_match(/add_column :audits, :remote_address, :string/, content) end end test "should add 'association_id' and 'association_type' to audits table" do load_schema 4 run_generator %w(upgrade) assert_migration "db/migrate/add_association_to_audits.rb" do |content| assert_match(/add_column :audits, :association_id, :integer/, content) assert_match(/add_column :audits, :association_type, :string/, content) end end test "should rename 'association_id' to 'associated_id' and 'association_type' to 'associated_type'" do load_schema 5 run_generator %w(upgrade) assert_migration "db/migrate/rename_association_to_associated.rb" do |content| assert_match(/rename_column :audits, :association_id, :associated_id/, content) assert_match(/rename_column :audits, :association_type, :associated_type/, content) end end test "should add 'request_uuid' to audits table" do load_schema 6 run_generator %w(upgrade) assert_migration "db/migrate/add_request_uuid_to_audits.rb" do |content| assert_match(/add_column :audits, :request_uuid, :string/, content) assert_match(/add_index :audits, :request_uuid/, content) end end test "generate migration with correct AR migration parent" do load_schema 1 run_generator %w(upgrade) assert_migration "db/migrate/add_comment_to_audits.rb" do |content| parent = Rails::VERSION::MAJOR == 4 ? 'ActiveRecord::Migration' : "ActiveRecord::Migration[#{ActiveRecord::Migration.current_version}]" assert_includes(content, "class AddCommentToAudits < #{parent}\n") end end end