require 'test_helper' require 'generators/audited/install_generator' class InstallGeneratorTest < Rails::Generators::TestCase destination File.expand_path('../../tmp', __FILE__) setup :prepare_destination tests Audited::Generators::InstallGenerator test "generate migration with 'text' type for audited_changes column" do run_generator assert_migration "db/migrate/install_audited.rb" do |content| assert_includes(content, 'class InstallAudited') assert_includes(content, 't.column :audited_changes, :text') end end test "generate migration with 'jsonb' type for audited_changes column" do run_generator %w(--audited-changes-column-type jsonb) assert_migration "db/migrate/install_audited.rb" do |content| assert_includes(content, 'class InstallAudited') assert_includes(content, 't.column :audited_changes, :jsonb') end end test "generate migration with 'json' type for audited_changes column" do run_generator %w(--audited-changes-column-type json) assert_migration "db/migrate/install_audited.rb" do |content| assert_includes(content, 'class InstallAudited') assert_includes(content, 't.column :audited_changes, :json') end end test "generate migration with 'string' type for user_id column" do run_generator %w(--audited-user-id-column-type string) assert_migration "db/migrate/install_audited.rb" do |content| assert_includes(content, 'class InstallAudited') assert_includes(content, 't.column :user_id, :string') end end test "generate migration with 'uuid' type for user_id column" do run_generator %w(--audited-user-id-column-type uuid) assert_migration "db/migrate/install_audited.rb" do |content| assert_includes(content, 'class InstallAudited') assert_includes(content, 't.column :user_id, :uuid') end end test "generate migration with correct AR migration parent" do run_generator assert_migration "db/migrate/install_audited.rb" do |content| parent = Rails::VERSION::MAJOR == 4 ? 'ActiveRecord::Migration' : "ActiveRecord::Migration[#{ActiveRecord::Migration.current_version}]" assert_includes(content, "class InstallAudited < #{parent}\n") end end end