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:
commit
536a03bbb4
12 changed files with 8 additions and 49 deletions
|
@ -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
|
||||
|
|
|
@ -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!
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
class BulkMessage < ApplicationRecord
|
||||
belongs_to :instructeur
|
||||
belongs_to :procedure
|
||||
has_and_belongs_to_many :groupe_instructeurs, -> { order(:label) }
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
class AddProcedureForeignKeyToBulkMessages < ActiveRecord::Migration[7.0]
|
||||
def change
|
||||
add_foreign_key :bulk_messages, :procedures
|
||||
end
|
||||
end
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Add table
Reference in a new issue