From 5d01c4171990c4fe7b9b0977b05ce14a98209e53 Mon Sep 17 00:00:00 2001 From: "Adeynack (David)" Date: Thu, 30 Nov 2023 04:48:30 +0100 Subject: [PATCH] Make `with_comment_column` work with `Annotate.set_defaults` (#999) --- .../templates/auto_annotate_models.rake | 3 +- lib/tasks/annotate_models.rake | 1 + spec/lib/tasks/annotate_models_spec.rb | 36 +++++++++++++++++++ 3 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 spec/lib/tasks/annotate_models_spec.rb diff --git a/lib/generators/annotate/templates/auto_annotate_models.rake b/lib/generators/annotate/templates/auto_annotate_models.rake index 78b75eb51..61cdcd7a1 100644 --- a/lib/generators/annotate/templates/auto_annotate_models.rake +++ b/lib/generators/annotate/templates/auto_annotate_models.rake @@ -52,7 +52,8 @@ if Rails.env.development? 'trace' => 'false', 'wrapper_open' => nil, 'wrapper_close' => nil, - 'with_comment' => 'true' + 'with_comment' => 'true', + 'with_comment_column' => 'false' ) end diff --git a/lib/tasks/annotate_models.rake b/lib/tasks/annotate_models.rake index 448fa80b5..776f97ba3 100644 --- a/lib/tasks/annotate_models.rake +++ b/lib/tasks/annotate_models.rake @@ -52,6 +52,7 @@ task annotate_models: :environment do options[:hide_limit_column_types] = Annotate::Helpers.fallback(ENV['hide_limit_column_types'], '') options[:hide_default_column_types] = Annotate::Helpers.fallback(ENV['hide_default_column_types'], '') options[:with_comment] = Annotate::Helpers.true?(ENV['with_comment']) + options[:with_comment_column] = Annotate::Helpers.true?(ENV['with_comment_column']) options[:ignore_unknown_models] = Annotate::Helpers.true?(ENV.fetch('ignore_unknown_models', 'false')) AnnotateModels.do_annotations(options) diff --git a/spec/lib/tasks/annotate_models_spec.rb b/spec/lib/tasks/annotate_models_spec.rb new file mode 100644 index 000000000..03f82391f --- /dev/null +++ b/spec/lib/tasks/annotate_models_spec.rb @@ -0,0 +1,36 @@ +require_relative '../../spec_helper' + +describe 'Annotate annotate_models rake task and Annotate.set_defaults' do # rubocop:disable RSpec/DescribeClass + before do + Rake.application = Rake::Application.new + Rake::Task.define_task('environment') + Rake.load_rakefile('tasks/annotate_models.rake') + end + + after do + Annotate.instance_variable_set('@has_set_defaults', false) + end + + let(:annotate_models_argument) do + argument = nil + allow(AnnotateModels).to receive(:do_annotations) { |arg| argument = arg } + Rake::Task['annotate_models'].invoke + argument + end + + describe 'with_comment_column' do + subject { annotate_models_argument[:with_comment_column] } + + after { ENV.delete('with_comment_column') } + + context 'when Annotate.set_defaults is not called (defaults)' do + it { is_expected.to be_falsey } + end + + context 'when Annotate.set_defaults sets it to "true"' do + before { Annotate.set_defaults('with_comment_column' => 'true') } + + it { is_expected.to be_truthy } + end + end +end