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