diff --git a/lib/migrations/reports.rb b/lib/migrations/reports.rb deleted file mode 100644 index 31a57eade..000000000 --- a/lib/migrations/reports.rb +++ /dev/null @@ -1,29 +0,0 @@ -class Migrations::Reports - def migrate - migrate_polls - migrate_budgets - end - - private - - def migrate_polls - Poll.find_each do |poll| - next unless poll.report.new_record? - - poll.report.update!( - results: poll.read_attribute(:results_enabled), - stats: poll.read_attribute(:stats_enabled), - advanced_stats: poll.read_attribute(:stats_enabled), - ) - end - - end - - def migrate_budgets - Budget.find_each do |budget| - next unless budget.report.new_record? - - budget.report.update!(results: true, stats: true, advanced_stats: true) - end - end -end diff --git a/lib/tasks/budgets.rake b/lib/tasks/budgets.rake index 2059bca4b..eb4d49b7c 100644 --- a/lib/tasks/budgets.rake +++ b/lib/tasks/budgets.rake @@ -1,14 +1,4 @@ namespace :budgets do - desc "Regenerate ballot_lines_count cache" - task calculate_ballot_lines: :environment do - ApplicationLogger.new.info "Calculating ballot lines" - - Budget::Ballot.find_each.with_index do |ballot, index| - Budget::Ballot.reset_counters ballot.id, :lines - print "." if (index % 10_000).zero? - end - end - namespace :email do desc "Sends emails to authors of selected investments" @@ -25,12 +15,13 @@ namespace :budgets do desc "Update investments original_heading_id with current heading_id" task set_original_heading_id: :environment do - puts "Starting" + ApplicationLogger.new.info "Setting original_heading_id to investments" Budget::Investment.find_each do |investment| - investment.update_column(:original_heading_id, investment.heading_id) + unless investment.original_heading_id.present? + investment.update_column(:original_heading_id, investment.heading_id) + end print "." end - puts "Finished" end end diff --git a/lib/tasks/consul.rake b/lib/tasks/consul.rake index 21acf1638..1763575e5 100644 --- a/lib/tasks/consul.rake +++ b/lib/tasks/consul.rake @@ -1,15 +1,9 @@ namespace :consul do desc "Runs tasks needed to upgrade to the latest version" - task execute_release_tasks: "execute_release_1.0.0_tasks" + task execute_release_tasks: ["settings:add_new_settings", "execute_release_1.1.0_tasks"] - desc "Runs tasks needed to upgrade from 1.0.0-beta to 1.0.0" - task "execute_release_1.0.0_tasks": [ - "poll:generate_slugs", - "stats_and_results:migrate_to_reports", - "budgets:calculate_ballot_lines", - "settings:remove_deprecated_settings", - "settings:rename_setting_keys", - "settings:add_new_settings", - "stats:generate" + desc "Runs tasks needed to upgrade from 1.0.0 to 1.1.0" + task "execute_release_1.1.0_tasks": [ + "budgets:set_original_heading_id" ] end diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 1d350a4bd..0c036c609 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -4,9 +4,4 @@ namespace :db do @avoid_log = args[:print_log] == "avoid_log" load(Rails.root.join("db", "dev_seeds.rb")) end - - desc "populate the default pages manually" - task pages: :environment do - load(Rails.root.join("db", "pages.rb")) - end end diff --git a/lib/tasks/legislation_proposals.rake b/lib/tasks/legislation_proposals.rake deleted file mode 100644 index ad2b7729e..000000000 --- a/lib/tasks/legislation_proposals.rake +++ /dev/null @@ -1,10 +0,0 @@ -namespace :legislation_proposals do - desc "Calculate cached votes score for existing legislation proposals" - task calculate_cached_votes_score: :environment do - Legislation::Proposal.find_each do |p| - p.update_column(:cached_votes_score, p.cached_votes_up - p.cached_votes_down) - print "." - end - puts "\nTask finished 🎉" - end -end diff --git a/lib/tasks/polls.rake b/lib/tasks/polls.rake deleted file mode 100644 index 2bd16c46f..000000000 --- a/lib/tasks/polls.rake +++ /dev/null @@ -1,10 +0,0 @@ -namespace :poll do - desc "Generate slugs polls" - task generate_slugs: :environment do - ApplicationLogger.new.info "Generating poll slugs" - - Poll.find_each do |poll| - poll.update_columns(slug: poll.generate_slug, updated_at: Time.current) if poll.generate_slug? - end - end -end diff --git a/lib/tasks/proposal_actions.rake b/lib/tasks/proposal_actions.rake index c84f86797..29aa69d7e 100644 --- a/lib/tasks/proposal_actions.rake +++ b/lib/tasks/proposal_actions.rake @@ -12,29 +12,6 @@ namespace :proposal_actions do end end - desc "Initialize proposal settings" - task initialize_settings: :environment do - %w[ - proposals.successful_proposal_id - proposals.poll_short_title - proposals.poll_description - proposals.poll_link - proposals.email_short_title - proposals.email_description - proposals.poster_short_title - proposals.poster_description - ].each do |key| - Setting[key] = nil if Setting.find_by(key: key).nil? - end - end - - desc "Publish all proposals" - task publish_all: :environment do - Proposal.draft.find_each do |proposal| - proposal.update_columns(published_at: proposal.created_at, updated_at: Time.current) - end - end - desc "Simulate successful proposal" task create_successful_proposal: :environment do expected_supports = [ diff --git a/lib/tasks/proposals.rake b/lib/tasks/proposals.rake deleted file mode 100644 index 6658b3cc1..000000000 --- a/lib/tasks/proposals.rake +++ /dev/null @@ -1,27 +0,0 @@ -namespace :proposals do - - desc "Move external_url to description" - task move_external_url_to_description: :environment do - include ActionView::Helpers::SanitizeHelper - include TextWithLinksHelper - - models = [Proposal, Legislation::Proposal] - - models.each do |model| - print "Move external_url to description for #{model}s" - model.find_each do |resource| - if resource.external_url.present? - Globalize.with_locale(I18n.default_locale) do - new_description = "#{resource.description}

#{sanitize_and_auto_link(resource.external_url)}

" - resource.description = new_description - resource.external_url = "" - resource.updated_at = Time.current - resource.save(validate: false) - print "." - end - end - end - puts " ✅ " - end - end -end diff --git a/lib/tasks/settings.rake b/lib/tasks/settings.rake index ad800abb5..c434180ba 100644 --- a/lib/tasks/settings.rake +++ b/lib/tasks/settings.rake @@ -1,58 +1,7 @@ namespace :settings do - - desc "Remove deprecated settings" - task remove_deprecated_settings: :environment do - ApplicationLogger.new.info "Removing deprecated settings" - - 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", - "feature.spending_proposals", - "feature.spending_proposal_features.phase1", - "feature.spending_proposal_features.phase2", - "feature.spending_proposal_features.phase3", - "feature.spending_proposal_features.voting_allowed", - "feature.spending_proposal_features.final_voting_allowed", - "feature.spending_proposal_features.open_results_page", - "feature.spending_proposal_features.valuation_allowed" - ] - - deprecated_keys.each do |key| - Setting.where(key: key).first&.destroy - end - end - - desc "Rename existing settings" - task rename_setting_keys: :environment do - ApplicationLogger.new.info "Renaming existing settings" - Setting.rename_key from: "map_latitude", to: "map.latitude" - Setting.rename_key from: "map_longitude", to: "map.longitude" - Setting.rename_key from: "map_zoom", to: "map.zoom" - - Setting.rename_key from: "feature.debates", to: "process.debates" - Setting.rename_key from: "feature.proposals", to: "process.proposals" - Setting.rename_key from: "feature.polls", to: "process.polls" - Setting.rename_key from: "feature.budgets", to: "process.budgets" - Setting.rename_key from: "feature.legislation", to: "process.legislation" - - Setting.rename_key from: "per_page_code_head", to: "html.per_page_code_head" - Setting.rename_key from: "per_page_code_body", to: "html.per_page_code_body" - - Setting.rename_key from: "feature.homepage.widgets.feeds.proposals", to: "homepage.widgets.feeds.proposals" - Setting.rename_key from: "feature.homepage.widgets.feeds.debates", to: "homepage.widgets.feeds.debates" - Setting.rename_key from: "feature.homepage.widgets.feeds.processes", to: "homepage.widgets.feeds.processes" - end - desc "Add new settings" task add_new_settings: :environment do ApplicationLogger.new.info "Adding new settings" Setting.add_new_settings end - end diff --git a/lib/tasks/stats_and_results.rake b/lib/tasks/stats_and_results.rake deleted file mode 100644 index bc4cdacca..000000000 --- a/lib/tasks/stats_and_results.rake +++ /dev/null @@ -1,7 +0,0 @@ -namespace :stats_and_results do - desc "Migrates stats_enabled and results_enabled data to enabled reports" - task migrate_to_reports: :environment do - ApplicationLogger.new.info "Migrating stats and results" - Migrations::Reports.new.migrate - end -end diff --git a/spec/lib/migrations/reports_spec.rb b/spec/lib/migrations/reports_spec.rb deleted file mode 100644 index 6a746c4f9..000000000 --- a/spec/lib/migrations/reports_spec.rb +++ /dev/null @@ -1,53 +0,0 @@ -require "rails_helper" - -describe Migrations::Reports do - describe "#migrate" do - it "ignores polls with existing reports" do - create(:poll, results_enabled: true, stats_enabled: true) do |poll| - poll.write_attribute(:results_enabled, false) - poll.write_attribute(:stats_enabled, false) - poll.save - end - - Migrations::Reports.new.migrate - - expect(Poll.last.results_enabled).to be true - expect(Poll.last.stats_enabled).to be true - expect(Poll.last.advanced_stats_enabled).to be nil - end - - it "migrates polls with no reports" do - create(:poll) do |poll| - poll.write_attribute(:results_enabled, true) - poll.write_attribute(:stats_enabled, true) - poll.save - end - - Migrations::Reports.new.migrate - - expect(Poll.last.results_enabled).to be true - expect(Poll.last.stats_enabled).to be true - expect(Poll.last.advanced_stats_enabled).to be true - end - - it "ignores budgets with existing reports" do - create(:budget, results_enabled: false, stats_enabled: false, advanced_stats_enabled: false) - - Migrations::Reports.new.migrate - - expect(Budget.last.results_enabled).to be false - expect(Budget.last.stats_enabled).to be false - expect(Budget.last.advanced_stats_enabled).to be false - end - - it "enables results and stats for every budget" do - create(:budget) - - Migrations::Reports.new.migrate - - expect(Budget.last.results_enabled).to be true - expect(Budget.last.stats_enabled).to be true - expect(Budget.last.advanced_stats_enabled).to be true - end - end -end diff --git a/spec/lib/tasks/budgets_spec.rb b/spec/lib/tasks/budgets_spec.rb index 67ec3e63c..58848a267 100644 --- a/spec/lib/tasks/budgets_spec.rb +++ b/spec/lib/tasks/budgets_spec.rb @@ -3,6 +3,7 @@ require "rails_helper" describe Budget do let(:run_rake_task) do + Rake::Task["budgets:set_original_heading_id"].reenable Rake.application.invoke_task("budgets:set_original_heading_id") end @@ -19,4 +20,17 @@ describe Budget do expect(investment.original_heading_id).to equal(heading.id) end + it "does not overwrite original_heading_id when already present" do + original_heading = create(:budget_heading) + new_heading = create(:budget_heading) + investment = create(:budget_investment, heading: original_heading) + investment.update(heading: new_heading) + + expect(investment.original_heading_id).to eq original_heading.id + + run_rake_task + investment.reload + + expect(investment.original_heading_id).to eq original_heading.id + end end diff --git a/spec/lib/tasks/db_spec.rb b/spec/lib/tasks/db_spec.rb deleted file mode 100644 index 6c7b1d960..000000000 --- a/spec/lib/tasks/db_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -require "rails_helper" - -describe "rake db:pages" do - let :run_rake_task do - Rake.application.invoke_task("db:pages") - end - - it "seeds the database with the default custom pages" do - SiteCustomization::Page.destroy_all - expect(SiteCustomization::Page.count).to be 0 - - run_rake_task - expect(SiteCustomization::Page.count).to be 7 - end -end diff --git a/spec/lib/tasks/settings_spec.rb b/spec/lib/tasks/settings_spec.rb deleted file mode 100644 index 195ee0565..000000000 --- a/spec/lib/tasks/settings_spec.rb +++ /dev/null @@ -1,112 +0,0 @@ -require "rails_helper" - -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 "#rename_setting_keys" do - - let :run_rake_task do - Rake::Task["settings:rename_setting_keys"].reenable - Rake.application.invoke_task "settings:rename_setting_keys" - end - - let :old_keys do - %w[map_latitude map_longitude map_zoom feature.debates feature.proposals feature.polls - feature.budgets feature.legislation per_page_code_head per_page_code_body - feature.homepage.widgets.feeds.proposals feature.homepage.widgets.feeds.debates - feature.homepage.widgets.feeds.processes] - end - - let :new_keys do - %w[map.latitude map.longitude map.zoom process.debates process.proposals process.polls - process.budgets process.legislation html.per_page_code_head html.per_page_code_body - homepage.widgets.feeds.proposals homepage.widgets.feeds.debates - homepage.widgets.feeds.processes] - end - - context "with existing old settings" do - it "rename all settings keys keeping the same value" do - Setting.destroy_all - old_keys.each { |old_key| Setting[old_key] = "old value" } - - run_rake_task - - new_keys.each do |new_key| - expect(Setting[new_key]).to eq "old value" - end - - old_keys.each do |old_key| - expect(Setting.where(key: old_key)).not_to exist - end - end - end - - context "without existing old settings" do - it "initializes all settings with null value" do - Setting.destroy_all - - run_rake_task - - new_keys.each do |new_key| - expect(Setting[new_key]).to eq nil - end - - old_keys.each do |old_key| - expect(Setting.where(key: old_key)).not_to exist - end - end - end - - context "with already existing new settings" do - it "does not change the value of the new settings even if the old setting exist" do - Setting.destroy_all - old_keys.each { |old_key| Setting[old_key] = "old value" } - new_keys.each { |new_key| Setting[new_key] = "new value" } - - run_rake_task - - new_keys.each do |new_key| - expect(Setting[new_key]).to eq "new value" - end - - old_keys.each do |old_key| - expect(Setting.where(key: old_key)).not_to exist - end - end - end - - end - -end