From bae2571ad68c6ab6f3064daecd05391e4e0bd7af Mon Sep 17 00:00:00 2001 From: Ridhwana Date: Tue, 8 Dec 2020 17:50:43 +0200 Subject: [PATCH] Replace the "setup onboarding profile fields" temp rake task with a data update script (#11800) * feat: replace the temp rake task with a data update script * oops we need a user --- ...ding_profile_fields_for_existing_forems.rb | 13 ++++++++ .../temporary/profile_onboarding_fields.rake | 10 ------ ...profile_fields_for_existing_forems_spec.rb | 31 +++++++++++++++++++ 3 files changed, 44 insertions(+), 10 deletions(-) create mode 100644 lib/data_update_scripts/20201208151516_set_onboarding_profile_fields_for_existing_forems.rb delete mode 100644 lib/tasks/temporary/profile_onboarding_fields.rake create mode 100644 spec/lib/data_update_scripts/set_onboarding_profile_fields_for_existing_forems_spec.rb diff --git a/lib/data_update_scripts/20201208151516_set_onboarding_profile_fields_for_existing_forems.rb b/lib/data_update_scripts/20201208151516_set_onboarding_profile_fields_for_existing_forems.rb new file mode 100644 index 000000000..5c5e23f14 --- /dev/null +++ b/lib/data_update_scripts/20201208151516_set_onboarding_profile_fields_for_existing_forems.rb @@ -0,0 +1,13 @@ +module DataUpdateScripts + class SetOnboardingProfileFieldsForExistingForems + def run + return unless User.count.positive? + + ProfileField.where(attribute_name: "summary").update(label: "Bio", show_in_onboarding: true) + ProfileField.where(attribute_name: "location").update(label: "Location", show_in_onboarding: true) + ProfileField.where(attribute_name: "employment_title").update(label: "Employer title", + show_in_onboarding: true) + ProfileField.where(attribute_name: "employer_name").update(label: "Employer name", show_in_onboarding: true) + end + end +end diff --git a/lib/tasks/temporary/profile_onboarding_fields.rake b/lib/tasks/temporary/profile_onboarding_fields.rake deleted file mode 100644 index 9786287da..000000000 --- a/lib/tasks/temporary/profile_onboarding_fields.rake +++ /dev/null @@ -1,10 +0,0 @@ -namespace :profile_onboarding_fields do - desc "Setup Onboarding with previously shown fields" - task update: :environment do - ProfileField.where(attribute_name: "summary").update(label: "Bio", show_in_onboarding: true) - ProfileField.where(attribute_name: "location").update(label: "Location", show_in_onboarding: true) - ProfileField.where(attribute_name: "employment_title").update(label: "Employer title", - show_in_onboarding: true) - ProfileField.where(attribute_name: "employer_name").update(label: "Employer name", show_in_onboarding: true) - end -end diff --git a/spec/lib/data_update_scripts/set_onboarding_profile_fields_for_existing_forems_spec.rb b/spec/lib/data_update_scripts/set_onboarding_profile_fields_for_existing_forems_spec.rb new file mode 100644 index 000000000..9f5357f6e --- /dev/null +++ b/spec/lib/data_update_scripts/set_onboarding_profile_fields_for_existing_forems_spec.rb @@ -0,0 +1,31 @@ +require "rails_helper" +require Rails.root.join( + "lib/data_update_scripts/20201208151516_set_onboarding_profile_fields_for_existing_forems.rb", +) + +describe DataUpdateScripts::SetOnboardingProfileFieldsForExistingForems do + before do + ProfileField.destroy_all + end + + let!(:user) { create(:user) } + let!(:profile_field1) { create(:profile_field, label: "summary") } + let!(:profile_field2) { create(:profile_field, label: "random") } + let(:profile_field3) { create(:profile_field, label: "location") } + + it "toggles show_in_onboarding to true for specific profile fields" do + expect do + described_class.new.run + end.to change { profile_field1.reload.show_in_onboarding }.from(false).to(true) + expect(profile_field2.reload.show_in_onboarding).to be false + end + + it "updates the labels for specific profile fields" do + # note: we update the label manually here because when + # we create the profile field the attribute_name is a + # underscored version of the label. + profile_field3.update(label: "Where are you located?") + described_class.new.run + expect(profile_field3.reload.label).to eq("Location") + end +end