From 8b063a1bc1eee6757d1233cdcb32ff492ac357fe Mon Sep 17 00:00:00 2001 From: Bertocq Date: Wed, 31 May 2017 14:42:05 +0200 Subject: [PATCH 1/2] Create spec for the new settings migration rake task --- spec/lib/tasks/settings_spec.rb | 80 +++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 spec/lib/tasks/settings_spec.rb diff --git a/spec/lib/tasks/settings_spec.rb b/spec/lib/tasks/settings_spec.rb new file mode 100644 index 000000000..1311763bf --- /dev/null +++ b/spec/lib/tasks/settings_spec.rb @@ -0,0 +1,80 @@ +require 'rails_helper' +require 'rake' + +describe 'Settings Rake' do + + describe '#per_page_code_migration' do + + before do + Rake.application.rake_require "tasks/settings" + Rake::Task.define_task(:environment) + end + + let :run_rake_task do + Rake::Task['settings:per_page_code_migration'].reenable + Rake.application.invoke_task 'settings:per_page_code_migration' + end + + after(:all) do + Setting['per_page_code_head'] = '' + 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 'should have 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 'should have 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 'should have 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 'should have 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 + +end From 20d57d4d461131a7b29925e2e34cfed8d34d17a1 Mon Sep 17 00:00:00 2001 From: Bertocq Date: Wed, 31 May 2017 14:42:26 +0200 Subject: [PATCH 2/2] Create rake task to migrate Setting key from per_page_code to per_page_code_head --- lib/tasks/settings.rake | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 lib/tasks/settings.rake diff --git a/lib/tasks/settings.rake b/lib/tasks/settings.rake new file mode 100644 index 000000000..29dc256bb --- /dev/null +++ b/lib/tasks/settings.rake @@ -0,0 +1,11 @@ +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 + + 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? + end + +end