fix(data): revert pending_correction for champs commune not having external_id, was a mistake. mine
This commit is contained in:
parent
cd8c55b161
commit
ada5ceeeec
2 changed files with 75 additions and 0 deletions
|
@ -0,0 +1,43 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
module Maintenance
|
||||||
|
class ResolvePendingCorrectionForDossierWithInvalidCommuneExternalIdTask < MaintenanceTasks::Task
|
||||||
|
DEFAULT_INSTRUCTEUR_EMAIL = ENV.fetch('DEFAULT_INSTRUCTEUR_EMAIL') { CONTACT_EMAIL }
|
||||||
|
|
||||||
|
no_collection
|
||||||
|
|
||||||
|
def process
|
||||||
|
DossierCorrection.joins(:commentaire)
|
||||||
|
.where(commentaire: { instructeur_id: current_instructeur.id })
|
||||||
|
.where(resolved_at: nil)
|
||||||
|
.find_each do |dossier_correction|
|
||||||
|
penultimate_traitement, last_traitement = *dossier_correction.dossier.traitements.last(2)
|
||||||
|
dossier_correction.resolve!
|
||||||
|
|
||||||
|
if last_traitement_by_us?(last_traitement) && last_transition_to_en_construction?(last_traitement, penultimate_traitement)
|
||||||
|
dossier_correction.dossier.passer_en_instruction(instructeur: current_instructeur) if dossier_correction.dossier.validate(:champs_public_value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def current_instructeur
|
||||||
|
@current_instructeur = User.find_by(email: DEFAULT_INSTRUCTEUR_EMAIL).instructeur
|
||||||
|
end
|
||||||
|
|
||||||
|
def current_instructeur_id
|
||||||
|
current_instructeur.id
|
||||||
|
end
|
||||||
|
|
||||||
|
def current_instructeur_email
|
||||||
|
current_instructeur.email
|
||||||
|
end
|
||||||
|
|
||||||
|
def last_traitement_by_us?(traitement)
|
||||||
|
traitement.instructeur_email == DEFAULT_INSTRUCTEUR_EMAIL
|
||||||
|
end
|
||||||
|
|
||||||
|
def last_transition_to_en_construction?(last_traitement, penultimate_traitement)
|
||||||
|
last_traitement.state == "en_construction" && penultimate_traitement.state == 'en_instruction'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,32 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "rails_helper"
|
||||||
|
|
||||||
|
module Maintenance
|
||||||
|
RSpec.describe ResolvePendingCorrectionForDossierWithInvalidCommuneExternalIdTask do
|
||||||
|
describe "#process" do
|
||||||
|
subject(:process) { described_class.process }
|
||||||
|
let(:instructeur) { create(:instructeur, email: ENV.fetch('DEFAULT_INSTRUCTEUR_EMAIL') { CONTACT_EMAIL }) }
|
||||||
|
let(:commentaire) { create(:commentaire, instructeur:) }
|
||||||
|
let(:dossier_correction) { create(:dossier_correction, commentaire:, dossier:, resolved_at: nil) }
|
||||||
|
|
||||||
|
before { dossier_correction }
|
||||||
|
|
||||||
|
context 'when dossier did transitioned to en_construction from en_instruction' do
|
||||||
|
let(:dossier) { create(:dossier, :en_instruction) }
|
||||||
|
before { dossier.repasser_en_construction!(instructeur:) }
|
||||||
|
it 'goes back to en_instruction (my mistake, sorry dear colleague, users etc...)' do
|
||||||
|
expect { subject }.to change { dossier.reload.state }.from('en_construction').to('en_instruction')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when dossier didnt transitioned' do
|
||||||
|
let(:dossier) { create(:dossier, :en_construction) }
|
||||||
|
|
||||||
|
it 'noop' do
|
||||||
|
expect { subject }.not_to change { dossier.reload.state }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Add table
Reference in a new issue