migrate procedure_presentation to column
This commit is contained in:
parent
0abee08329
commit
a7ebe23504
2 changed files with 109 additions and 0 deletions
|
@ -0,0 +1,49 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
namespace :after_party do
|
||||
desc 'Deployment task: migrate_procedure_presentation_to_columns'
|
||||
task migrate_procedure_presentation_to_columns: :environment do
|
||||
total = ProcedurePresentation.count
|
||||
|
||||
progress = ProgressReport.new(total)
|
||||
|
||||
ProcedurePresentation.find_each do |presentation|
|
||||
procedure_id = presentation.procedure.id
|
||||
|
||||
presentation.displayed_columns = presentation.displayed_fields
|
||||
.filter(&:present?)
|
||||
.map { Column.new(**_1.deep_symbolize_keys.merge(procedure_id:)) }
|
||||
.map(&:h_id)
|
||||
|
||||
sort = presentation.sort
|
||||
|
||||
presentation.sorted_column = {
|
||||
'order' => sort['order'],
|
||||
'id' => make_id(procedure_id, sort['table'], sort['column'])
|
||||
}
|
||||
|
||||
presentation.filters.each do |key, filters|
|
||||
raw_columns = filters.map do
|
||||
{
|
||||
id: make_id(procedure_id, _1['table'], _1['column']),
|
||||
filter: _1['value']
|
||||
}
|
||||
end
|
||||
|
||||
presentation.send("#{presentation.filters_name_for(key)}=", raw_columns)
|
||||
end
|
||||
|
||||
presentation.save!(validate: false)
|
||||
progress.inc
|
||||
end
|
||||
|
||||
AfterParty::TaskRecord
|
||||
.create version: AfterParty::TaskRecorder.new(__FILE__).timestamp
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def make_id(procedure_id, table, column)
|
||||
{ procedure_id:, column_id: "#{table}/#{column}" }
|
||||
end
|
||||
end
|
|
@ -0,0 +1,60 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
describe '20240920130741_migrate_procedure_presentation_to_columns.rake' do
|
||||
let(:rake_task) { Rake::Task['after_party:migrate_procedure_presentation_to_columns'] }
|
||||
|
||||
let(:procedure) { create(:procedure, types_de_champ_public: [{ type: :text }]) }
|
||||
let(:instructeur) { create(:instructeur) }
|
||||
let(:assign_to) { create(:assign_to, procedure: procedure, instructeur: instructeur) }
|
||||
let(:stable_id) { procedure.active_revision.types_de_champ.first.stable_id }
|
||||
let!(:procedure_presentation) do
|
||||
displayed_fields = [
|
||||
{ "table" => "etablissement", "column" => "entreprise_raison_sociale" },
|
||||
{ "table" => "type_de_champ", "column" => stable_id.to_s }
|
||||
]
|
||||
|
||||
sort = { "order" => "desc", "table" => "self", "column" => "en_construction_at" }
|
||||
|
||||
filters = {
|
||||
"tous" => [],
|
||||
"suivis" => [],
|
||||
"traites" => [{ "label" => "Libellé NAF", "table" => "etablissement", "value" => "Administration publique générale", "column" => "libelle_naf", "value_column" => "value" }],
|
||||
"a-suivre" => [],
|
||||
"archives" => [],
|
||||
"expirant" => [],
|
||||
"supprimes" => [],
|
||||
"supprimes_recemment" => []
|
||||
}
|
||||
|
||||
create(:procedure_presentation, assign_to:, displayed_fields:, filters:, sort:)
|
||||
end
|
||||
|
||||
before do
|
||||
rake_task.invoke
|
||||
|
||||
procedure_presentation.reload
|
||||
end
|
||||
|
||||
it 'populates the columns' do
|
||||
procedure_id = procedure.id
|
||||
|
||||
expect(procedure_presentation.displayed_columns).to eq([
|
||||
{ "procedure_id" => procedure_id, "column_id" => "etablissement/entreprise_raison_sociale" },
|
||||
{ "procedure_id" => procedure_id, "column_id" => "type_de_champ/#{stable_id}" }
|
||||
])
|
||||
|
||||
order, column_id = procedure_presentation
|
||||
.sorted_column
|
||||
.then { |sorted| [sorted['order'], sorted['id']] }
|
||||
|
||||
expect(order).to eq('desc')
|
||||
expect(column_id).to eq("procedure_id" => procedure_id, "column_id" => "self/en_construction_at")
|
||||
|
||||
expect(procedure_presentation.tous_filters).to eq([])
|
||||
|
||||
traites = procedure_presentation.traites_filters
|
||||
.map { [_1['id'], _1['filter']] }
|
||||
|
||||
expect(traites).to eq([[{ "column_id" => "etablissement/libelle_naf", "procedure_id" => procedure_id }, "Administration publique générale"]])
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue