[fix #3268] Jobs: use automatic_operation

This commit is contained in:
simon lehericey 2019-01-16 10:47:32 +01:00
parent 6ab2d124f9
commit 99bfd19b41
5 changed files with 45 additions and 44 deletions

View file

@ -3,11 +3,10 @@ class AutoArchiveProcedureJob < ApplicationJob
def perform(*args) def perform(*args)
Procedure.publiees.where("auto_archive_on <= ?", Date.today).each do |procedure| Procedure.publiees.where("auto_archive_on <= ?", Date.today).each do |procedure|
gestionnaire = procedure.gestionnaire_for_cron_job procedure
.dossiers
procedure.dossiers.state_en_construction.find_each do |dossier| .state_en_construction
dossier.passer_en_instruction!(gestionnaire) .find_each(&:passer_automatiquement_en_instruction!)
end
procedure.archive! procedure.archive!
end end

View file

@ -3,17 +3,18 @@ class AutoReceiveDossiersForProcedureJob < ApplicationJob
def perform(procedure_id, state) def perform(procedure_id, state)
procedure = Procedure.find(procedure_id) procedure = Procedure.find(procedure_id)
gestionnaire = procedure.gestionnaire_for_cron_job
case state case state
when Dossier.states.fetch(:en_instruction) when Dossier.states.fetch(:en_instruction)
procedure.dossiers.state_en_construction.find_each do |dossier| procedure
dossier.passer_en_instruction!(gestionnaire) .dossiers
end .state_en_construction
.find_each(&:passer_automatiquement_en_instruction!)
when Dossier.states.fetch(:accepte) when Dossier.states.fetch(:accepte)
procedure.dossiers.state_en_construction.find_each do |dossier| procedure
dossier.accepter!(gestionnaire, '') .dossiers
end .state_en_construction
.find_each(&:accepter_automatiquement!)
else else
raise "Receiving Procedure##{procedure_id} in invalid state \"#{state}\"" raise "Receiving Procedure##{procedure_id} in invalid state \"#{state}\""
end end

View file

@ -350,12 +350,6 @@ class Procedure < ApplicationRecord
where.not(aasm_state: :archivee).where("path LIKE ?", "%#{path}%") where.not(aasm_state: :archivee).where("path LIKE ?", "%#{path}%")
end end
def gestionnaire_for_cron_job
administrateur_email = administrateur.email
gestionnaire = Gestionnaire.find_by(email: administrateur_email)
gestionnaire || gestionnaires.first
end
def populate_champ_stable_ids def populate_champ_stable_ids
TypeDeChamp.where(procedure: self, stable_id: nil).find_each do |type_de_champ| TypeDeChamp.where(procedure: self, stable_id: nil).find_each do |type_de_champ|
type_de_champ.update_column(:stable_id, type_de_champ.id) type_de_champ.update_column(:stable_id, type_de_champ.id)

View file

@ -40,6 +40,7 @@ RSpec.describe AutoArchiveProcedureJob, type: :job do
it { it {
expect(dossier1.state).to eq Dossier.states.fetch(:brouillon) expect(dossier1.state).to eq Dossier.states.fetch(:brouillon)
expect(dossier2.state).to eq Dossier.states.fetch(:en_instruction) expect(dossier2.state).to eq Dossier.states.fetch(:en_instruction)
expect(dossier2.dossier_operation_logs.pluck(:gestionnaire_id, :operation, :automatic_operation)).to match([[nil, 'passer_en_instruction', true]])
expect(dossier3.state).to eq Dossier.states.fetch(:en_instruction) expect(dossier3.state).to eq Dossier.states.fetch(:en_instruction)
expect(dossier4.state).to eq Dossier.states.fetch(:en_instruction) expect(dossier4.state).to eq Dossier.states.fetch(:en_instruction)
expect(dossier5.state).to eq Dossier.states.fetch(:en_instruction) expect(dossier5.state).to eq Dossier.states.fetch(:en_instruction)

View file

@ -13,13 +13,17 @@ RSpec.describe AutoReceiveDossiersForProcedureJob, type: :job do
before do before do
Timecop.freeze(date) Timecop.freeze(date)
nouveau_dossier1 dossiers = [
nouveau_dossier2 nouveau_dossier1,
dossier_recu nouveau_dossier2,
dossier_recu,
dossier_brouillon dossier_brouillon
]
create(:attestation_template, procedure: procedure) create(:attestation_template, procedure: procedure)
AutoReceiveDossiersForProcedureJob.new.perform(procedure.id, state) AutoReceiveDossiersForProcedureJob.new.perform(procedure.id, state)
dossiers.each(&:reload)
end end
after { Timecop.return } after { Timecop.return }
@ -29,17 +33,18 @@ RSpec.describe AutoReceiveDossiersForProcedureJob, type: :job do
let(:state) { Dossier.states.fetch(:en_instruction) } let(:state) { Dossier.states.fetch(:en_instruction) }
it { it {
expect(nouveau_dossier1.reload.en_instruction?).to be true expect(nouveau_dossier1.en_instruction?).to be true
expect(nouveau_dossier1.reload.en_instruction_at).to eq(date) expect(nouveau_dossier1.en_instruction_at).to eq(date)
expect(nouveau_dossier1.dossier_operation_logs.pluck(:gestionnaire_id, :operation, :automatic_operation)).to match([[nil, 'passer_en_instruction', true]])
expect(nouveau_dossier2.reload.en_instruction?).to be true expect(nouveau_dossier2.en_instruction?).to be true
expect(nouveau_dossier2.reload.en_instruction_at).to eq(date) expect(nouveau_dossier2.en_instruction_at).to eq(date)
expect(dossier_recu.reload.en_instruction?).to be true expect(dossier_recu.en_instruction?).to be true
expect(dossier_recu.reload.en_instruction_at).to eq(instruction_date) expect(dossier_recu.en_instruction_at).to eq(instruction_date)
expect(dossier_brouillon.reload.brouillon?).to be true expect(dossier_brouillon.brouillon?).to be true
expect(dossier_brouillon.reload.en_instruction_at).to eq(nil) expect(dossier_brouillon.en_instruction_at).to eq(nil)
} }
end end
@ -47,23 +52,24 @@ RSpec.describe AutoReceiveDossiersForProcedureJob, type: :job do
let(:state) { Dossier.states.fetch(:accepte) } let(:state) { Dossier.states.fetch(:accepte) }
it { it {
expect(nouveau_dossier1.reload.accepte?).to be true expect(nouveau_dossier1.accepte?).to be true
expect(nouveau_dossier1.reload.en_instruction_at).to eq(date) expect(nouveau_dossier1.en_instruction_at).to eq(date)
expect(nouveau_dossier1.reload.processed_at).to eq(date) expect(nouveau_dossier1.processed_at).to eq(date)
expect(nouveau_dossier1.reload.attestation).to be_present expect(nouveau_dossier1.attestation).to be_present
expect(nouveau_dossier1.dossier_operation_logs.pluck(:gestionnaire_id, :operation, :automatic_operation)).to match([[nil, 'accepter', true]])
expect(nouveau_dossier2.reload.accepte?).to be true expect(nouveau_dossier2.accepte?).to be true
expect(nouveau_dossier2.reload.en_instruction_at).to eq(date) expect(nouveau_dossier2.en_instruction_at).to eq(date)
expect(nouveau_dossier2.reload.processed_at).to eq(date) expect(nouveau_dossier2.processed_at).to eq(date)
expect(nouveau_dossier2.reload.attestation).to be_present expect(nouveau_dossier2.attestation).to be_present
expect(dossier_recu.reload.en_instruction?).to be true expect(dossier_recu.en_instruction?).to be true
expect(dossier_recu.reload.en_instruction_at).to eq(instruction_date) expect(dossier_recu.en_instruction_at).to eq(instruction_date)
expect(dossier_recu.reload.processed_at).to eq(nil) expect(dossier_recu.processed_at).to eq(nil)
expect(dossier_brouillon.reload.brouillon?).to be true expect(dossier_brouillon.brouillon?).to be true
expect(dossier_brouillon.reload.en_instruction_at).to eq(nil) expect(dossier_brouillon.en_instruction_at).to eq(nil)
expect(dossier_brouillon.reload.processed_at).to eq(nil) expect(dossier_brouillon.processed_at).to eq(nil)
} }
end end
end end