remove empty value in drop_down_list in db

This commit is contained in:
simon lehericey 2024-09-17 17:07:43 +02:00
parent 061c9cc6f3
commit d3667bbd6c
No known key found for this signature in database
GPG key ID: CDE670D827C7B3C5
2 changed files with 57 additions and 0 deletions

View file

@ -0,0 +1,22 @@
# frozen_string_literal: true
namespace :after_party do
desc 'Deployment task: remove_empty_options_from_drop_down_list'
task remove_empty_options_from_drop_down_list: :environment do
ids = TypeDeChamp
.where(type_champ: ['drop_down_list', 'multiple_drop_down_list', 'linked_drop_down_list'])
.where("options->'drop_down_options' @> '[\"\"]'::jsonb").ids
progress = ProgressReport.new(ids.count)
TypeDeChamp.where(id: ids).select(:id, :options, :type_champ).find_each do |drop_down_list|
drop_down_list.drop_down_options.delete('')
drop_down_list.save!(validate: false)
progress.inc
end
AfterParty::TaskRecord
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
end
end

View file

@ -0,0 +1,35 @@
# frozen_string_literal: true
describe '20240917131034_remove_empty_options_from_drop_down_list.rake' do
let(:rake_task) { Rake::Task['after_party:remove_empty_options_from_drop_down_list'] }
let!(:drop_down_list_with_empty_option) do
create(:type_de_champ_drop_down_list, drop_down_options: ['', '1', '2'])
end
let!(:drop_down_list_with_other_empty_option) do
create(:type_de_champ_drop_down_list, drop_down_options: ['1', '', '2', ''])
end
let!(:witness_drop_down_list) do
create(:type_de_champ_drop_down_list, drop_down_options: ['1', '2'])
end
before do
rake_task.invoke
[
drop_down_list_with_empty_option,
drop_down_list_with_other_empty_option,
witness_drop_down_list
].each(&:reload)
end
after { rake_task.reenable }
it 'removes the empty option' do
expect(drop_down_list_with_empty_option.drop_down_options).to eq(['1', '2'])
expect(drop_down_list_with_other_empty_option.drop_down_options).to eq(['1', '2'])
expect(witness_drop_down_list.drop_down_options).to eq(['1', '2'])
end
end