From c7c8309ad19ae60cd08b36173bdb2c01e93500d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sen=C3=A9n=20Rodero=20Rodr=C3=ADguez?= Date: Wed, 11 Nov 2020 17:12:06 +0100 Subject: [PATCH] Add rake task to load sdg This task should be useful for existing installations that are going to upgrade the app and want to load SDG data into an already existing database. --- lib/tasks/consul.rake | 8 +++++++- lib/tasks/db.rake | 6 ++++++ spec/lib/tasks/load_sdg_spec.rb | 28 ++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 spec/lib/tasks/load_sdg_spec.rb diff --git a/lib/tasks/consul.rake b/lib/tasks/consul.rake index b831c59f4..911460c68 100644 --- a/lib/tasks/consul.rake +++ b/lib/tasks/consul.rake @@ -1,5 +1,11 @@ namespace :consul do desc "Runs tasks needed to upgrade to the latest version" task execute_release_tasks: ["settings:rename_setting_keys", - "settings:add_new_settings"] + "settings:add_new_settings", + "execute_release_1.3.0_tasks"] + + desc "Runs tasks needed to upgrade from 1.2.0 to 1.3.0" + task "execute_release_1.3.0_tasks": [ + "db:load_sdg" + ] end diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 0c036c609..a64643adc 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -4,4 +4,10 @@ namespace :db do @avoid_log = args[:print_log] == "avoid_log" load(Rails.root.join("db", "dev_seeds.rb")) end + + desc "Load SDG content into database" + task load_sdg: :environment do + ApplicationLogger.new.info "Adding Sustainable Development Goals content" + load(Rails.root.join("db", "sdg.rb")) + end end diff --git a/spec/lib/tasks/load_sdg_spec.rb b/spec/lib/tasks/load_sdg_spec.rb new file mode 100644 index 000000000..095406001 --- /dev/null +++ b/spec/lib/tasks/load_sdg_spec.rb @@ -0,0 +1,28 @@ +require "rails_helper" + +describe "rake db:load_sdg" do + before { Rake::Task["db:load_sdg"].reenable } + + let :run_rake_task do + Rake.application.invoke_task("db:load_sdg") + end + + it "populates empty databases correctly" do + SDG::Goal.destroy_all + + run_rake_task + + expect(SDG::Goal.count).to eq 17 + end + + it "does not create additional records on populated databases" do + expect(SDG::Goal.count).to eq 17 + + goal_id = SDG::Goal.last.id + + run_rake_task + + expect(SDG::Goal.count).to eq 17 + expect(SDG::Goal.last.id).to eq goal_id + end +end