From 25977fd97df93c04aeed9305aabdd5614bc7036b Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Thu, 3 Oct 2024 13:13:07 +0200 Subject: [PATCH] =?UTF-8?q?ETQ=20int=C3=A9grateur=20d=E2=80=99API,=20je=20?= =?UTF-8?q?veux=20que=20le=20dossier=20soit=20remont=C3=A9=20comme=20modif?= =?UTF-8?q?i=C3=A9=20quand=20ses=20instructeurs=20changent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/follow.rb | 2 +- .../instructeurs/dossiers_controller_spec.rb | 51 +++++++++++++------ 2 files changed, 36 insertions(+), 17 deletions(-) diff --git a/app/models/follow.rb b/app/models/follow.rb index 75f9cb72b..c494eb47d 100644 --- a/app/models/follow.rb +++ b/app/models/follow.rb @@ -2,7 +2,7 @@ class Follow < ApplicationRecord belongs_to :instructeur, optional: false - belongs_to :dossier, optional: false + belongs_to :dossier, optional: false, touch: true validates :instructeur_id, uniqueness: { scope: [:dossier_id, :unfollowed_at] } diff --git a/spec/controllers/instructeurs/dossiers_controller_spec.rb b/spec/controllers/instructeurs/dossiers_controller_spec.rb index c9227d2ed..5985b19f4 100644 --- a/spec/controllers/instructeurs/dossiers_controller_spec.rb +++ b/spec/controllers/instructeurs/dossiers_controller_spec.rb @@ -61,40 +61,59 @@ describe Instructeurs::DossiersController, type: :controller do describe '#follow' do let(:batch_operation) {} - before do + + subject do batch_operation patch :follow, params: { procedure_id: procedure.id, dossier_id: dossier.id } end - it { expect(instructeur.followed_dossiers).to match([dossier]) } - it { expect(flash.notice).to eq('Dossier suivi') } - it { expect(response).to redirect_to(instructeur_procedure_path(dossier.procedure)) } + it do + subject + expect(instructeur.followed_dossiers).to match([dossier]) + expect(flash.notice).to eq('Dossier suivi') + expect(response).to redirect_to(instructeur_procedure_path(dossier.procedure)) + end + it { expect { subject }.to change { dossier.reload.updated_at } } context 'with dossier in batch_operation' do let(:batch_operation) { create(:batch_operation, operation: :archiver, dossiers: [dossier], instructeur: instructeur) } - it { expect(instructeur.followed_dossiers).to eq([]) } - it { expect(response).to redirect_to(instructeur_dossier_path(dossier.procedure, dossier)) } - it { expect(flash.alert).to eq("Votre action n'a pas été effectuée, ce dossier fait parti d'un traitement de masse.") } + + it do + subject + expect(instructeur.followed_dossiers).to eq([]) + expect(response).to redirect_to(instructeur_dossier_path(dossier.procedure, dossier)) + expect(flash.alert).to eq("Votre action n'a pas été effectuée, ce dossier fait parti d'un traitement de masse.") + end end end describe '#unfollow' do let(:batch_operation) {} - before do + before { instructeur.followed_dossiers << dossier } + + subject do batch_operation - instructeur.followed_dossiers << dossier patch :unfollow, params: { procedure_id: procedure.id, dossier_id: dossier.id } - instructeur.reload end - it { expect(instructeur.followed_dossiers).to match([]) } - it { expect(flash.notice).to eq("Vous ne suivez plus le dossier nº #{dossier.id}") } - it { expect(response).to redirect_to(instructeur_procedure_path(dossier.procedure)) } + it do + subject + expect(instructeur.followed_dossiers).to match([]) + expect(flash.notice).to eq("Vous ne suivez plus le dossier nº #{dossier.id}") + expect(response).to redirect_to(instructeur_procedure_path(dossier.procedure)) + end + + it { expect { subject }.to change { dossier.reload.updated_at } } + context 'with dossier in batch_operation' do let(:batch_operation) { create(:batch_operation, operation: :archiver, dossiers: [dossier], instructeur: instructeur) } - it { expect(instructeur.followed_dossiers).to eq([dossier]) } - it { expect(response).to redirect_to(instructeur_dossier_path(dossier.procedure, dossier)) } - it { expect(flash.alert).to eq("Votre action n'a pas été effectuée, ce dossier fait parti d'un traitement de masse.") } + + it do + subject + expect(instructeur.followed_dossiers).to eq([dossier]) + expect(response).to redirect_to(instructeur_dossier_path(dossier.procedure, dossier)) + expect(flash.alert).to eq("Votre action n'a pas été effectuée, ce dossier fait parti d'un traitement de masse.") + end end end