Merge pull request #10180 from demarches-simplifiees/update-bulk-messages-associations

Technique : Mise à jour de l'association bulk messages - procédures
This commit is contained in:
Eric Leroy-Terquem 2024-03-25 13:35:23 +00:00 committed by GitHub
commit 536a03bbb4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 8 additions and 49 deletions

View file

@ -199,19 +199,8 @@ module Administrateurs
.without_group(@groupe_instructeur)
end
def reaffecter_bulk_messages(target_group)
bulk_messages = BulkMessage.joins(:groupe_instructeurs).where(groupe_instructeurs: { id: groupe_instructeur.id })
bulk_messages.each do |bulk_message|
bulk_message.groupe_instructeurs.delete(groupe_instructeur)
if !bulk_message.groupe_instructeur_ids.include?(target_group.id)
bulk_message.groupe_instructeurs << target_group
end
end
end
def reaffecter
target_group = procedure.groupe_instructeurs.find(params[:target_group])
reaffecter_bulk_messages(target_group)
groupe_instructeur.dossiers.find_each do |dossier|
dossier.assign_to_groupe_instructeur(target_group, DossierAssignment.modes.fetch(:manual), current_administrateur)
end

View file

@ -283,7 +283,6 @@ module Instructeurs
dossier_state: Dossier.states.fetch(:brouillon),
sent_at: Time.zone.now,
instructeur_id: current_instructeur.id,
groupe_instructeurs: GroupeInstructeur.for_dossiers(dossiers),
procedure_id: @procedure.id
)
bulk_message.save!

View file

@ -1,5 +1,4 @@
class BulkMessage < ApplicationRecord
belongs_to :instructeur
belongs_to :procedure
has_and_belongs_to_many :groupe_instructeurs, -> { order(:label) }
end

View file

@ -10,7 +10,6 @@ class GroupeInstructeur < ApplicationRecord
has_many :assignments, class_name: 'DossierAssignment', dependent: :nullify, inverse_of: :groupe_instructeur
has_many :previous_assignments, class_name: 'DossierAssignment', dependent: :nullify, inverse_of: :previous_groupe_instructeur
has_and_belongs_to_many :exports, dependent: :destroy
has_and_belongs_to_many :bulk_messages, dependent: :destroy
has_one :defaut_procedure, -> { with_discarded }, class_name: 'Procedure', foreign_key: :defaut_groupe_instructeur_id, dependent: :nullify, inverse_of: :defaut_groupe_instructeur
has_one :contact_information, dependent: :destroy

View file

@ -60,6 +60,8 @@ class Procedure < ApplicationRecord
belongs_to :zone, optional: true
has_and_belongs_to_many :zones
has_many :bulk_messages, dependent: :destroy
def active_dossier_submitted_message
published_dossier_submitted_message || draft_dossier_submitted_message
end

View file

@ -0,0 +1,5 @@
class AddProcedureForeignKeyToBulkMessages < ActiveRecord::Migration[7.0]
def change
add_foreign_key :bulk_messages, :procedures
end
end

View file

@ -183,7 +183,6 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
let!(:gi_1_3) { create(:groupe_instructeur, label: 'groupe instructeur 3', procedure: procedure) }
let!(:dossier12) { create(:dossier, :en_construction, :with_individual, procedure: procedure, groupe_instructeur: gi_1_1) }
let!(:instructeur) { create(:instructeur) }
let!(:bulk_message) { BulkMessage.create(dossier_count: 2, dossier_state: "en_construction", body: "hello", sent_at: Time.zone.now, groupe_instructeurs: [gi_1_1, gi_1_3], instructeur: instructeur, procedure: procedure) }
describe 'when the new group is a group of the procedure' do
before do
@ -194,7 +193,6 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
target_group: gi_1_2.id
}
dossier12.reload
bulk_message.reload
end
it { expect(response).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure)) }
@ -203,7 +201,6 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
it { expect(dossier12.dossier_assignment.dossier_id).to be(dossier12.id) }
it { expect(dossier12.dossier_assignment.groupe_instructeur_id).to be(gi_1_2.id) }
it { expect(dossier12.dossier_assignment.assigned_by).to eq(admin.email) }
it { expect(bulk_message.groupe_instructeurs).to contain_exactly(gi_1_2, gi_1_3) }
end
describe 'when the target group is not a possible group' do
@ -218,11 +215,9 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
}
before do
dossier12.reload
bulk_message.reload
end
it { expect { subject }.to raise_error(ActiveRecord::RecordNotFound) }
it { expect(bulk_message.groupe_instructeurs).to match_array([gi_1_1, gi_1_3]) }
end
end

View file

@ -703,7 +703,6 @@ describe Instructeurs::ProceduresController, type: :controller do
it "creates a Bulk Message for 2 groupes instructeurs" do
expect(BulkMessage.count).to eq(1)
expect(bulk_message.body).to eq("avant\napres")
expect(bulk_message.groupe_instructeurs).to be_empty
expect(bulk_message.procedure_id).to eq(procedure.id)
end

View file

@ -5,7 +5,6 @@ FactoryBot.define do
dossier_state { Dossier.states.fetch(:brouillon) }
sent_at { 1.day.ago }
instructeur { association :instructeur }
groupe_instructeurs { [association(:groupe_instructeur, strategy: :build)] }
procedure { association :procedure }
end
end

View file

@ -12,9 +12,5 @@ FactoryBot.define do
trait :default do
label { GroupeInstructeur::DEFAUT_LABEL }
end
trait :with_bulk_message do
bulk_messages { [association(:bulk_message, strategy: :build)] }
end
end
end

View file

@ -94,7 +94,7 @@ FactoryBot.define do
end
trait :with_bulk_message do
groupe_instructeurs { [association(:groupe_instructeur, :default, :with_bulk_message, procedure: instance, strategy: :build)] }
bulk_messages { [create(:bulk_message)] }
end
trait :with_logo do

View file

@ -1,23 +0,0 @@
# frozen_string_literal: true
require "rails_helper"
module Maintenance
RSpec.describe BackfillBulkMessagesWithProcedureIdTask do
describe "#process" do
subject(:process) { described_class.process(bulk_message) }
context 'with groupe instructeurs but no procedure_id' do
let(:bulk_message) { create(:bulk_message) }
let(:procedure) { bulk_message.groupe_instructeurs.first.procedure }
before { bulk_message.update_column(:procedure_id, nil) }
it 'fills procedure id' do
subject
expect(bulk_message.procedure_id).to eq procedure.id
end
end
end
end
end