Créé la liste de nouveaux tags en base et les associe aux démarches
This commit is contained in:
parent
953ccbcfb6
commit
2c85757289
2 changed files with 142 additions and 0 deletions
110
app/tasks/maintenance/create_procedure_tags_task.rb
Normal file
110
app/tasks/maintenance/create_procedure_tags_task.rb
Normal file
|
@ -0,0 +1,110 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# this task is used to create the procedure_tags and backfill the procedures that have the tag in their tags array
|
||||
|
||||
module Maintenance
|
||||
class CreateProcedureTagsTask < MaintenanceTasks::Task
|
||||
include RunnableOnDeployConcern
|
||||
include StatementsHelpersConcern
|
||||
run_on_first_deploy
|
||||
|
||||
def collection
|
||||
[
|
||||
"Aap",
|
||||
"Accompagnement",
|
||||
"Action sociale",
|
||||
"Adeli",
|
||||
"Affectation",
|
||||
"Agrément",
|
||||
"Agriculture",
|
||||
"agroécologie",
|
||||
"Aide aux entreprises",
|
||||
"Aide financière",
|
||||
"Appel à manifestation d'intérêt",
|
||||
"AMI",
|
||||
"Animaux",
|
||||
"Appel à projets",
|
||||
"Association",
|
||||
"Auto-école",
|
||||
"Autorisation",
|
||||
"Autorisation d'exercer",
|
||||
"Bilan",
|
||||
"Biodiversité",
|
||||
"Candidature",
|
||||
"Cerfa",
|
||||
"Chasse",
|
||||
"Cinéma",
|
||||
"Cmg",
|
||||
"Collectivé territoriale",
|
||||
"Collège",
|
||||
"Convention",
|
||||
"Covid",
|
||||
"Culture",
|
||||
"Dérogation",
|
||||
"Diplôme",
|
||||
"Drone",
|
||||
"DSDEN",
|
||||
"Eau",
|
||||
"Ecoles",
|
||||
"Education",
|
||||
"Elections",
|
||||
"Energie",
|
||||
"Enseignant",
|
||||
"ENT",
|
||||
"Environnement",
|
||||
"Étrangers",
|
||||
"Formation",
|
||||
"FPRNM",
|
||||
"Funéraire",
|
||||
"Handicap",
|
||||
"Hygiène",
|
||||
"Industrie",
|
||||
"innovation",
|
||||
"Inscription",
|
||||
"Logement",
|
||||
"Lycée",
|
||||
"Manifestation",
|
||||
"Médicament",
|
||||
"Micro-crèche",
|
||||
"MODELE DS",
|
||||
"Numérique",
|
||||
"Permis",
|
||||
"Pompiers",
|
||||
"Préfecture",
|
||||
"Professionels de santé",
|
||||
"Recrutement",
|
||||
"Rh",
|
||||
"Santé",
|
||||
"Scolaire",
|
||||
"SDIS",
|
||||
"Sécurité",
|
||||
"Sécurité routière",
|
||||
"Sécurité sociale",
|
||||
"Séjour",
|
||||
"Service civique",
|
||||
"Subvention",
|
||||
"Supérieur",
|
||||
"Taxi",
|
||||
"Télétravail",
|
||||
"Tirs",
|
||||
"Transition écologique",
|
||||
"Transport",
|
||||
"Travail",
|
||||
"Université",
|
||||
"Urbanisme"
|
||||
]
|
||||
end
|
||||
|
||||
def process(tag)
|
||||
procedure_tag = ProcedureTag.find_or_create_by(name: tag)
|
||||
|
||||
Procedure.where("? ILIKE ANY(tags)", tag).find_each(batch_size: 500) do |procedure|
|
||||
procedure.procedure_tags << procedure_tag unless procedure.procedure_tags.include?(procedure_tag)
|
||||
end
|
||||
end
|
||||
|
||||
def count
|
||||
collection.size
|
||||
end
|
||||
end
|
||||
end
|
32
spec/tasks/maintenance/create_procedure_tags_task_spec.rb
Normal file
32
spec/tasks/maintenance/create_procedure_tags_task_spec.rb
Normal file
|
@ -0,0 +1,32 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require "rails_helper"
|
||||
|
||||
module Maintenance
|
||||
RSpec.describe CreateProcedureTagsTask do
|
||||
describe "#process" do
|
||||
subject(:process) { described_class.new.process(tag) }
|
||||
|
||||
let(:tag) { "Accompagnement" }
|
||||
let!(:procedure) { create(:procedure, tags: ["Accompagnement"]) }
|
||||
|
||||
it "creates the ProcedureTag if it does not exist" do
|
||||
expect { process }.to change { ProcedureTag.count }.by(1)
|
||||
expect(ProcedureTag.last.name).to eq(tag)
|
||||
end
|
||||
|
||||
context "when the ProcedureTag already exists" do
|
||||
let!(:procedure_tag) { ProcedureTag.create(name: tag) }
|
||||
|
||||
it "does not create a duplicate ProcedureTag" do
|
||||
expect { process }.not_to change { ProcedureTag.count }
|
||||
end
|
||||
end
|
||||
|
||||
it "associates procedures with the ProcedureTag" do
|
||||
process
|
||||
expect(procedure.reload.procedure_tags.map(&:name)).to include(tag)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue