diff --git a/lib/tasks/budgets.rake b/lib/tasks/budgets.rake index 34805c4d1..c53c71103 100644 --- a/lib/tasks/budgets.rake +++ b/lib/tasks/budgets.rake @@ -13,22 +13,4 @@ namespace :budgets do end - namespace :phases do - desc "Generates Phases for existing Budgets without them & migrates description_* attributes" - task generate_missing: :environment do - Budget.where.not(id: Budget::Phase.all.pluck(:budget_id).uniq.compact).each do |budget| - Budget::Phase::PHASE_KINDS.each do |phase| - Budget::Phase.create( - budget: budget, - kind: phase, - description: budget.send("description_#{phase}"), - prev_phase: budget.phases&.last, - starts_at: budget.phases&.last&.ends_at || Date.current, - ends_at: (budget.phases&.last&.ends_at || Date.current) + 1.month - ) - end - end - end - end - end diff --git a/lib/tasks/communities.rake b/lib/tasks/communities.rake deleted file mode 100644 index 261f4dbee..000000000 --- a/lib/tasks/communities.rake +++ /dev/null @@ -1,21 +0,0 @@ -namespace :communities do - - desc "Associate community to proposals and budget investments" - task associate_community: :environment do - - Proposal.all.each do |proposal| - if proposal.community.blank? - community = Community.create - proposal.update(community_id: community.id) - end - end - - Budget::Investment.all.each do |investment| - if investment.community.blank? - community = Community.create - investment.update(community_id: community.id) - end - end - end - -end diff --git a/lib/tasks/globalize.rake b/lib/tasks/globalize.rake deleted file mode 100644 index 5197b0b1d..000000000 --- a/lib/tasks/globalize.rake +++ /dev/null @@ -1,89 +0,0 @@ -namespace :globalize do - def translatable_classes - [ - AdminNotification, - Banner, - Milestone, - I18nContent, - Legislation::DraftVersion, - Legislation::Process, - Legislation::Question, - Legislation::QuestionOption, - Poll, - Poll::Question, - Poll::Question::Answer, - SiteCustomization::Page, - Widget::Card - ] - end - - def migrate_data - @errored = false - - translatable_classes.each do |model_class| - logger.info "Migrating #{model_class} data" - - fields = model_class.translated_attribute_names - - model_class.find_each do |record| - fields.each do |field| - locale = if model_class == SiteCustomization::Page && record.locale.present? - record.locale - else - I18n.locale - end - - translated_field = record.localized_attr_name_for(field, locale) - - if record.send(translated_field).blank? - record.send(:"#{translated_field}=", record.untranslated_attributes[field.to_s]) - end - end - - begin - record.save! - rescue ActiveRecord::RecordInvalid - logger.warn "Failed to save #{model_class} with id #{record.id}" - @errored = true - end - end - end - end - - def logger - @logger ||= Logger.new(STDOUT).tap do |logger| - logger.formatter = proc { |severity, _datetime, _progname, msg| "#{severity} #{msg}\n" } - end - end - - def errored? - @errored - end - - desc "Simulates migrating existing data to translation tables" - task simulate_migrate_data: :environment do - logger.info "Starting migrate data simulation" - - ActiveRecord::Base.transaction do - migrate_data - raise ActiveRecord::Rollback - end - - if errored? - logger.warn "Some database records will not be migrated" - else - logger.info "Migrate data simulation ended successfully" - end - end - - desc "Migrates existing data to translation tables" - task migrate_data: :environment do - logger.info "Starting data migration" - migrate_data - logger.info "Finished data migration" - - if errored? - logger.warn "Some database records couldn't be migrated; please check the log messages" - end - end -end diff --git a/lib/tasks/homepage.rake b/lib/tasks/homepage.rake deleted file mode 100644 index 0a479adf0..000000000 --- a/lib/tasks/homepage.rake +++ /dev/null @@ -1,13 +0,0 @@ -namespace :homepage do - - desc "Initialize feeds available in homepage" - task create_feeds: :environment do - %w(proposals debates processes).each do |kind| - Widget::Feed.create(kind: kind) - - Setting["feature.homepage.widgets.feeds.proposals"] = true - Setting["feature.homepage.widgets.feeds.debates"] = true - Setting["feature.homepage.widgets.feeds.processes"] = true - end - end -end diff --git a/lib/tasks/locales.rake b/lib/tasks/locales.rake deleted file mode 100644 index e7983df42..000000000 --- a/lib/tasks/locales.rake +++ /dev/null @@ -1,22 +0,0 @@ -namespace :locales do - desc "Migrate all localization files to new structure for a given locale name as argument" - task :migrate_structure, [:locale] => [:environment] do |_t, args| - locale = args[:locale] - puts "Moving files for locale: #{locale}" - - # This creates ./config/locales/en/ directory - system "mkdir ./config/locales/#{locale}" - - # This moves from ./config/locales/en.yml to ./config/locales/en/general.yml - system "mv ./config/locales/#{locale}.yml ./config/locales/#{locale}/general.yml" - - # This moves from ./config/locales/admin.en.yml to ./config/locales/en/admin.en.yml - system "mv ./config/locales/*.#{locale}.yml ./config/locales/#{locale}/" - - # This moves from ./config/locales/en/admin.en.yml to ./config/locales/en/admin.yml - system "find ./config/locales/ -name \"*.#{locale}.yml\" -exec sh -c 'mv \"$1\" \"${1%.#{locale}.yml}.yml\"' _ {} \\;" - - puts "Moved!" - end -end - diff --git a/lib/tasks/map_locations.rake b/lib/tasks/map_locations.rake deleted file mode 100644 index 63dc5d0d0..000000000 --- a/lib/tasks/map_locations.rake +++ /dev/null @@ -1,8 +0,0 @@ -namespace :map_locations do - desc "Destroy all empty MapLocation instances found in the database" - task destroy: :environment do - MapLocation.where(longitude: nil, latitude: nil, zoom: nil).each do |map_location| - map_location.destroy - end - end -end diff --git a/lib/tasks/migrate_milestones_and_statuses.rake b/lib/tasks/migrate_milestones_and_statuses.rake deleted file mode 100644 index 6b95f860c..000000000 --- a/lib/tasks/migrate_milestones_and_statuses.rake +++ /dev/null @@ -1,106 +0,0 @@ -namespace :milestones do - - def generate_table_migration_sql(new_table:, old_table:, columns:) - from_cols = ["id", *columns.keys] - to_cols = ["id", *columns.values] - <<~SQL - INSERT INTO #{new_table} (#{to_cols.join(", ")}) - SELECT #{from_cols.join(", ")} FROM #{old_table}; - SQL - end - - def migrate_table!(new_table:, old_table:, columns:) - puts "Migrating data from '#{old_table}' to '#{new_table}'..." - result = ActiveRecord::Base.connection.execute( - generate_table_migration_sql(old_table: old_table, - new_table: new_table, - columns: columns) - - ) - puts "#{result.cmd_tuples} rows affected" - end - - def populate_column!(table:, column:, value:) - puts "Populating column '#{column}' from table '#{table}' with '#{value}'..." - result = ActiveRecord::Base.connection.execute( - "UPDATE #{table} SET #{column} = '#{value}';" - ) - puts "#{result.cmd_tuples} rows affected" - end - - def count_rows(table) - ActiveRecord::Base.connection.query("SELECT COUNT(*) FROM #{table};")[0][0].to_i - end - - desc "Migrate milestones and milestone status data after making the model polymorphic" - task migrate: :environment do - # This script copies all milestone-related data from the old tables to - # the new ones (preserving all primary keys). All 3 of the new tables - # must be empty. - # - # To clear the new tables to test this script: - # - # DELETE FROM milestone_statuses; - # DELETE FROM milestones; - # DELETE FROM milestone_translations; - # - - start = Time.now - - ActiveRecord::Base.transaction do - migrate_table! old_table: "budget_investment_statuses", - new_table: "milestone_statuses", - columns: {"name" => "name", - "description" => "description", - "hidden_at" => "hidden_at", - "created_at" => "created_at", - "updated_at" => "updated_at"} - - migrate_table! old_table: "budget_investment_milestones", - new_table: "milestones", - columns: {"investment_id" => "milestoneable_id", - "title" => "title", - "description" => "description", - "created_at" => "created_at", - "updated_at" => "updated_at", - "publication_date" => "publication_date", - "status_id" => "status_id"} - - populate_column! table: "milestones", - column: "milestoneable_type", - value: "Budget::Investment" - - migrate_table! old_table: "budget_investment_milestone_translations", - new_table: "milestone_translations", - columns: {"budget_investment_milestone_id" => "milestone_id", - "locale" => "locale", - "created_at" => "created_at", - "updated_at" => "updated_at", - "title" => "title", - "description" => "description"} - - Image.where(imageable_type: "Budget::Investment::Milestone"). - update_all(imageable_type: "Milestone") - Document.where(documentable_type: "Budget::Investment::Milestone"). - update_all(documentable_type: "Milestone") - - puts "Verifying that all rows were copied..." - - { - "budget_investment_milestones" => "milestones", - "budget_investment_statuses" => "milestone_statuses", - "budget_investment_milestone_translations" => "milestone_translations" - }.each do |original_table, migrated_table| - ActiveRecord::Base.connection.execute( - "select setval('#{migrated_table}_id_seq', (select max(id) from #{migrated_table}));" - ) - - unless count_rows(original_table) == count_rows(migrated_table) - raise "Number of rows of old and new tables do not match! Rolling back transaction..." - end - end - end - - puts "Finished in %.3f seconds" % (Time.now - start) - end -end diff --git a/lib/tasks/polls.rake b/lib/tasks/polls.rake deleted file mode 100644 index e87e171d3..000000000 --- a/lib/tasks/polls.rake +++ /dev/null @@ -1,6 +0,0 @@ -namespace :polls do - desc "Adds created_at and updated_at values to existing polls" - task initialize_timestamps: :environment do - Poll.update_all(created_at: Time.current, updated_at: Time.current) - end -end diff --git a/lib/tasks/settings.rake b/lib/tasks/settings.rake index 3a241612d..bffddcb51 100644 --- a/lib/tasks/settings.rake +++ b/lib/tasks/settings.rake @@ -1,42 +1,5 @@ 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.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&.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 - 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 - end - - desc "Enable Help page" - task enable_help_page: :environment do - 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 - end - - desc "Create new period to calculate hot_score" - task create_hot_score_period_setting: :environment do - Setting["hot_score_period_in_days"] = 31 - end - desc "Remove deprecated settings" task remove_deprecated_settings: :environment do deprecated_keys = [ diff --git a/lib/tasks/slugs.rake b/lib/tasks/slugs.rake deleted file mode 100644 index 06de12f00..000000000 --- a/lib/tasks/slugs.rake +++ /dev/null @@ -1,8 +0,0 @@ -namespace :slugs do - desc "Generate slug attribute for objects from classes that use Sluggable concern" - task generate: :environment do - %w(Budget Budget::Heading Budget::Group).each do |class_name| - class_name.constantize.find_each(&:generate_slug) - end - end -end diff --git a/lib/tasks/users.rake b/lib/tasks/users.rake deleted file mode 100644 index d447e727c..000000000 --- a/lib/tasks/users.rake +++ /dev/null @@ -1,10 +0,0 @@ -namespace :users do - - desc "Enable recommendations for existing users" - task enable_recommendations: :environment do - User.find_each do |user| - user.update(recommended_debates: true, recommended_proposals: true) - end - end - -end diff --git a/lib/tasks/web_sections.rake b/lib/tasks/web_sections.rake deleted file mode 100644 index 159be63e1..000000000 --- a/lib/tasks/web_sections.rake +++ /dev/null @@ -1,10 +0,0 @@ -namespace :web_sections do - desc "Generate web sections for banners" - task generate: :environment do - WebSection.create(name: "homepage") - WebSection.create(name: "debates") - WebSection.create(name: "proposals") - WebSection.create(name: "budgets") - WebSection.create(name: "help_page") - end -end diff --git a/spec/lib/tasks/communities_spec.rb b/spec/lib/tasks/communities_spec.rb deleted file mode 100644 index 048b69d3b..000000000 --- a/spec/lib/tasks/communities_spec.rb +++ /dev/null @@ -1,43 +0,0 @@ -require "rails_helper" - -describe "Communities Rake" do - - describe "#associate_community" do - - let :run_rake_task do - Rake::Task["communities:associate_community"].reenable - Rake.application.invoke_task "communities:associate_community" - end - - context "Associate community to Proposal" do - - it "When proposal has not community_id" do - proposal = create(:proposal) - proposal.update(community_id: nil) - expect(proposal.community).to be_nil - - run_rake_task - proposal.reload - - expect(proposal.community).to be_present - end - end - - context "Associate community to Budget Investment" do - - it "When budget investment has not community_id" do - investment = create(:budget_investment) - investment.update(community_id: nil) - expect(investment.community).to be_nil - - run_rake_task - investment.reload - - expect(investment.community).to be_present - end - - end - - end - -end diff --git a/spec/lib/tasks/globalize_spec.rb b/spec/lib/tasks/globalize_spec.rb deleted file mode 100644 index 26a24dd8a..000000000 --- a/spec/lib/tasks/globalize_spec.rb +++ /dev/null @@ -1,162 +0,0 @@ -require "rails_helper" - -describe "Globalize tasks" do - - describe "#migrate_data" do - - let :run_rake_task do - Rake::Task["globalize:migrate_data"].reenable - Rake.application.invoke_task "globalize:migrate_data" - end - - context "Original data with no translated data" do - let(:poll) do - create(:poll).tap do |poll| - poll.translations.delete_all - poll.update_column(:name, "Original") - poll.reload - end - end - - it "copies the original data" do - expect(poll.send(:"name_#{I18n.locale}")).to be nil - expect(poll.name).to eq("Original") - - run_rake_task - poll.reload - - expect(poll.name).to eq("Original") - expect(poll.send(:"name_#{I18n.locale}")).to eq("Original") - end - end - - context "Original data with blank translated data" do - let(:banner) do - create(:banner).tap do |banner| - banner.update_column(:title, "Original") - banner.translations.first.update_column(:title, "") - end - end - - it "copies the original data" do - expect(banner.title).to eq("") - - run_rake_task - banner.reload - - expect(banner.title).to eq("Original") - expect(banner.send(:"title_#{I18n.locale}")).to eq("Original") - end - end - - context "Original data with translated data" do - let(:notification) do - create(:admin_notification, title: "Translated").tap do |notification| - notification.update_column(:title, "Original") - end - end - - it "maintains the translated data" do - expect(notification.title).to eq("Translated") - - run_rake_task - notification.reload - - expect(notification.title).to eq("Translated") - expect(notification.send(:"title_#{I18n.locale}")).to eq("Translated") - end - end - - context "Custom page with a different locale and no translations" do - let(:page) do - create(:site_customization_page, locale: :fr).tap do |page| - page.translations.delete_all - page.update_column(:title, "en Français") - page.reload - end - end - - it "copies the original data to both the page's locale" do - expect(page.title).to eq("en Français") - expect(page.title_fr).to be nil - expect(page.send(:"title_#{I18n.locale}")).to be nil - - run_rake_task - page.reload - - expect(page.title).to eq("en Français") - expect(page.title_fr).to eq("en Français") - expect(page.send(:"title_#{I18n.locale}")).to be nil - end - end - - context "Custom page with a different locale and existing translations" do - let(:page) do - create(:site_customization_page, title: "In English", locale: :fr).tap do |page| - page.update_column(:title, "en Français") - end - end - - it "copies the original data to the page's locale" do - expect(page.title_fr).to be nil - expect(page.title).to eq("In English") - - run_rake_task - page.reload - - expect(page.title).to eq("In English") - expect(page.title_fr).to eq("en Français") - expect(page.send(:"title_#{I18n.locale}")).to eq("In English") - end - end - - context "Invalid data" do - let!(:valid_process) do - create(:legislation_process).tap do |process| - process.translations.delete_all - process.update_column(:title, "Title") - process.reload - end - end - - let!(:invalid_process) do - create(:legislation_process).tap do |process| - process.translations.delete_all - process.update_column(:title, "") - process.reload - end - end - - it "ignores invalid data and migrates valid data" do - expect(valid_process).to be_valid - expect(invalid_process).not_to be_valid - - run_rake_task - - expect(valid_process.translations.count).to eq 1 - expect(valid_process.reload.title).to eq "Title" - - expect(invalid_process.translations.count).to eq 0 - expect(invalid_process.reload.title).to eq "" - end - end - - context "locale with non-underscored name" do - before { I18n.locale = :"pt-BR" } - - let!(:milestone) do - create(:milestone).tap do |milestone| - milestone.translations.delete_all - milestone.update_column(:title, "Português") - milestone.reload - end - end - - it "runs the migration successfully" do - run_rake_task - - expect(milestone.reload.title).to eq "Português" - end - end - end -end diff --git a/spec/lib/tasks/map_location_spec.rb b/spec/lib/tasks/map_location_spec.rb deleted file mode 100644 index 61ff2eef2..000000000 --- a/spec/lib/tasks/map_location_spec.rb +++ /dev/null @@ -1,20 +0,0 @@ -require "rails_helper" - -describe "rake map_locations:destroy" do - before do - create(:map_location, :proposal_map_location) - empty_location = create(:map_location, :proposal_map_location) - empty_location.attributes = { longitude: nil, latitude: nil, zoom: nil } - empty_location.save(validate: false) - end - - let :run_rake_task do - Rake.application.invoke_task("map_locations:destroy") - end - - it "destroys empty locations" do - expect(MapLocation.all.size).to eq(2) - run_rake_task - expect(MapLocation.all.size).to eq(1) - end -end diff --git a/spec/lib/tasks/milestones_spec.rb b/spec/lib/tasks/milestones_spec.rb deleted file mode 100644 index f4c9dd052..000000000 --- a/spec/lib/tasks/milestones_spec.rb +++ /dev/null @@ -1,147 +0,0 @@ -require "rails_helper" - -describe "Milestones tasks" do - describe "#migrate" do - let :run_rake_task do - Rake::Task["milestones:migrate"].reenable - Rake.application.invoke_task "milestones:migrate" - end - - let!(:investment) { create(:budget_investment) } - - before do - ActiveRecord::Base.connection.execute( - "INSERT INTO budget_investment_statuses " + - "(name, description, hidden_at, created_at, updated_at) " + - "VALUES ('open', 'Good', NULL, '#{Time.current - 1.day}', '#{Time.current}');" - ) - - status_id = ActiveRecord::Base.connection.execute( - "SELECT MAX(id) FROM budget_investment_statuses;" - ).to_a.first["max"] - - milestone_attributes = { - investment_id: investment.id, - title: "First", - description: "Interesting", - publication_date: Date.yesterday, - status_id: status_id, - created_at: Time.current - 1.day, - updated_at: Time.current - } - - ActiveRecord::Base.connection.execute( - "INSERT INTO budget_investment_milestones " + - "(#{milestone_attributes.keys.join(", ")}) " + - "VALUES (#{milestone_attributes.values.map { |value| "'#{value}'"}.join(", ")})" - ) - end - - it "migrates statuses" do - run_rake_task - - expect(Milestone::Status.count).to be 1 - - status = Milestone::Status.first - expect(status.name).to eq "open" - expect(status.description).to eq "Good" - expect(status.hidden_at).to be nil - expect(status.created_at.to_date).to eq Date.yesterday - expect(status.updated_at.to_date).to eq Date.current - end - - it "migrates milestones" do - run_rake_task - - expect(Milestone.count).to be 1 - - milestone = Milestone.first - expect(milestone.milestoneable_id).to eq investment.id - expect(milestone.milestoneable_type).to eq "Budget::Investment" - expect(milestone.title).to eq "First" - expect(milestone.description).to eq "Interesting" - expect(milestone.publication_date).to eq Date.yesterday - expect(milestone.status_id).to eq Milestone::Status.first.id - expect(milestone.created_at.to_date).to eq Date.yesterday - expect(milestone.updated_at.to_date).to eq Date.current - end - - it "Updates the primary key sequence correctly" do - run_rake_task - expect { create(:milestone) }.not_to raise_exception - end - - context "Milestone has images and documents" do - let(:milestone_id) do - ActiveRecord::Base.connection.execute( - "SELECT MAX(id) FROM budget_investment_milestones;" - ).to_a.first["max"] - end - - let!(:image) do - create(:image, imageable_id: milestone_id).tap do |image| - image.update_column(:imageable_type, "Budget::Investment::Milestone") - end - end - - let!(:document) do - create(:document, documentable_id: milestone_id).tap do |document| - document.update_column(:documentable_type, "Budget::Investment::Milestone") - end - end - - it "migrates images and documents" do - run_rake_task - - expect(Milestone.last.image).to eq image - expect(Milestone.last.documents).to eq [document] - end - end - - context "Statuses had been deleted" do - before do - ActiveRecord::Base.connection.execute( - "INSERT INTO budget_investment_statuses " + - "(name, description, hidden_at, created_at, updated_at) " + - "VALUES ('deleted', 'Del', NULL, '#{Time.current - 1.day}', '#{Time.current}');" - ) - - ActiveRecord::Base.connection.execute( - "DELETE FROM budget_investment_statuses WHERE name='deleted'" - ) - - ActiveRecord::Base.connection.execute( - "INSERT INTO budget_investment_statuses " + - "(name, description, hidden_at, created_at, updated_at) " + - "VALUES ('new', 'New', NULL, '#{Time.current - 1.day}', '#{Time.current}');" - ) - - status_id = ActiveRecord::Base.connection.execute( - "SELECT MAX(id) FROM budget_investment_statuses;" - ).to_a.first["max"] - - milestone_attributes = { - investment_id: investment.id, - title: "Last", - description: "Different", - publication_date: Date.yesterday, - status_id: status_id, - created_at: Time.current - 1.day, - updated_at: Time.current - } - - ActiveRecord::Base.connection.execute( - "INSERT INTO budget_investment_milestones " + - "(#{milestone_attributes.keys.join(", ")}) " + - "VALUES (#{milestone_attributes.values.map { |value| "'#{value}'"}.join(", ")})" - ) - end - - it "migrates the status id correctly" do - run_rake_task - - expect(Milestone.last.status_id).to eq Milestone::Status.last.id - end - end - end -end diff --git a/spec/lib/tasks/settings_spec.rb b/spec/lib/tasks/settings_spec.rb index 0ae74cc07..195ee0565 100644 --- a/spec/lib/tasks/settings_spec.rb +++ b/spec/lib/tasks/settings_spec.rb @@ -35,72 +35,6 @@ describe Setting do end end - describe "#per_page_code_migration" do - - let :run_rake_task do - Rake::Task["settings:per_page_code_migration"].reenable - Rake.application.invoke_task "settings:per_page_code_migration" - end - - context "Neither per_page_code_head or per_page_code Settings exist" do - before do - Setting.where(key: "per_page_code").first&.destroy - Setting.where(key: "per_page_code_head").first&.destroy - run_rake_task - end - - it "has per_page_code_head setting present and no per_page_code" do - expect(Setting.where(key: "per_page_code_head").count).to eq(1) - expect(Setting["per_page_code_head"]).to eq(nil) - expect(Setting.where(key: "per_page_code").count).to eq(0) - end - end - - context "Both per_page_code_head or per_page_code Settings exist" do - before do - Setting["per_page_code"] = "per_page_code" - Setting["per_page_code_head"] = "per_page_code_head" - run_rake_task - end - - it "has per_page_code_head setting present and no per_page_code" do - expect(Setting.where(key: "per_page_code_head").count).to eq(1) - expect(Setting["per_page_code_head"]).to eq("per_page_code_head") - expect(Setting.where(key: "per_page_code").count).to eq(0) - end - end - - context "per_page_code_head exists, but per_page_code does not" do - before do - Setting.where(key: "per_page_code").first&.destroy - Setting["per_page_code_head"] = "per_page_code_head" - run_rake_task - end - - it "has per_page_code_head setting present and no per_page_code" do - expect(Setting.where(key: "per_page_code_head").count).to eq(1) - expect(Setting["per_page_code_head"]).to eq("per_page_code_head") - expect(Setting.where(key: "per_page_code").count).to eq(0) - end - end - - context "per_page_code_head does not exist, but per_page_code does" do - before do - Setting["per_page_code"] = "per_page_code" - Setting.where(key: "per_page_code_head").first&.destroy - run_rake_task - end - - it "has per_page_code_head setting present and no per_page_code" do - expect(Setting.where(key: "per_page_code_head").count).to eq(1) - expect(Setting["per_page_code_head"]).to eq("per_page_code") - expect(Setting.where(key: "per_page_code").count).to eq(0) - end - end - - end - - describe "#rename_setting_keys" do let :run_rake_task do