From cfad56b872e2dd9a8cf81fcfe73e1403fa3aa805 Mon Sep 17 00:00:00 2001 From: decabeza Date: Wed, 13 Mar 2019 15:39:58 +0100 Subject: [PATCH] Add rake to remove deprecated settings --- lib/tasks/settings.rake | 41 ++++++++++++++++++++++++--------- spec/lib/tasks/settings_spec.rb | 35 +++++++++++++++++++++++++++- 2 files changed, 64 insertions(+), 12 deletions(-) diff --git a/lib/tasks/settings.rake b/lib/tasks/settings.rake index bf5ccdcc3..12f7e1385 100644 --- a/lib/tasks/settings.rake +++ b/lib/tasks/settings.rake @@ -2,38 +2,57 @@ namespace :settings do desc "Changes Setting key per_page_code for per_page_code_head" task per_page_code_migration: :environment do - per_page_code_setting = Setting.where(key: 'per_page_code').first + per_page_code = Setting.where(key: "per_page_code").first + per_page_code_head = Setting.where(key: "per_page_code_head").first - Setting['per_page_code_head'] = per_page_code_setting&.value.to_s if Setting.where(key: 'per_page_code_head').first.blank? - per_page_code_setting.destroy if per_page_code_setting.present? + Setting["per_page_code_head"] = per_page_code&.value.to_s if per_page_code_head.blank? + per_page_code.destroy if per_page_code.present? end desc "Create new Attached Documents feature setting" task create_attached_documents_setting: :environment do - Setting['feature.allow_attached_documents'] = true + Setting["feature.allow_attached_documents"] = true end desc "Enable recommendations settings" task enable_recommendations: :environment do - Setting['feature.user.recommendations'] = true - Setting['feature.user.recommendations_on_debates'] = true - Setting['feature.user.recommendations_on_proposals'] = true + Setting["feature.user.recommendations"] = true + Setting["feature.user.recommendations_on_debates"] = true + Setting["feature.user.recommendations_on_proposals"] = true end desc "Enable Help page" task enable_help_page: :environment do - Setting['feature.help_page'] = true + Setting["feature.help_page"] = true end desc "Enable Featured proposals" task enable_featured_proposals: :environment do - Setting['feature.featured_proposals'] = true - Setting['featured_proposals_number'] = 3 + Setting["feature.featured_proposals"] = true + Setting["featured_proposals_number"] = 3 end desc "Create new period to calculate hot_score" task create_hot_score_period_setting: :environment do - Setting['hot_score_period_in_days'] = 31 + Setting["hot_score_period_in_days"] = 31 + end + + desc "Remove deprecated settings" + task remove_deprecated_settings: :environment do + deprecated_keys = [ + "place_name", + "banner-style.banner-style-one", + "banner-style.banner-style-two", + "banner-style.banner-style-three", + "banner-img.banner-img-one", + "banner-img.banner-img-two", + "banner-img.banner-img-three", + "verification_offices_url" + ] + + deprecated_keys.each do |key| + Setting.where(key: key).first&.destroy + end end end diff --git a/spec/lib/tasks/settings_spec.rb b/spec/lib/tasks/settings_spec.rb index 9e84bca33..fbcc98d41 100644 --- a/spec/lib/tasks/settings_spec.rb +++ b/spec/lib/tasks/settings_spec.rb @@ -1,6 +1,39 @@ require "rails_helper" -describe "Settings Rake" do +describe Setting do + + context "Remove deprecated settings" do + + let :run_remove_deprecated_settings_task do + Rake::Task["settings:remove_deprecated_settings"].reenable + Rake.application.invoke_task "settings:remove_deprecated_settings" + end + + before do + Setting.create(key: "place_name", value: "City") + Setting.create(key: "banner-style.banner-style-one", value: "Style one") + Setting.create(key: "banner-style.banner-style-two", value: "Style two") + Setting.create(key: "banner-style.banner-style-three", value: "Style three") + Setting.create(key: "banner-img.banner-img-one", value: "Image 1") + Setting.create(key: "banner-img.banner-img-two", value: "Image 2") + Setting.create(key: "banner-img.banner-img-three", value: "Image 3") + Setting.create(key: "verification_offices_url", value: "http://offices.url") + Setting.create(key: "not_deprecated", value: "Setting not deprecated") + run_remove_deprecated_settings_task + end + + it "Rake only removes deprecated settings" do + expect(Setting.where(key: "place_name").count).to eq(0) + expect(Setting.where(key: "banner-style.banner-style-one").count).to eq(0) + expect(Setting.where(key: "banner-style.banner-style-two").count).to eq(0) + expect(Setting.where(key: "banner-style.banner-style-three").count).to eq(0) + expect(Setting.where(key: "banner-img.banner-img-one").count).to eq(0) + expect(Setting.where(key: "banner-img.banner-img-two").count).to eq(0) + expect(Setting.where(key: "banner-img.banner-img-three").count).to eq(0) + expect(Setting.where(key: "verification_offices_url").count).to eq(0) + expect(Setting.where(key: "not_deprecated").count).to eq(1) + end + end describe "#per_page_code_migration" do