Merge pull request #10889 from tchak/fix-dossier-follow-should-bump-updated-at

ETQ intégrateur d’API, je veux que le dossier soit remonté comme modifié quand ses instructeurs changent
This commit is contained in:
Paul Chavard 2024-10-05 08:58:05 +00:00 committed by GitHub
commit 70699a681d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 36 additions and 17 deletions

View file

@ -2,7 +2,7 @@
class Follow < ApplicationRecord class Follow < ApplicationRecord
belongs_to :instructeur, optional: false 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] } validates :instructeur_id, uniqueness: { scope: [:dossier_id, :unfollowed_at] }

View file

@ -61,40 +61,59 @@ describe Instructeurs::DossiersController, type: :controller do
describe '#follow' do describe '#follow' do
let(:batch_operation) {} let(:batch_operation) {}
before do
subject do
batch_operation batch_operation
patch :follow, params: { procedure_id: procedure.id, dossier_id: dossier.id } patch :follow, params: { procedure_id: procedure.id, dossier_id: dossier.id }
end end
it { expect(instructeur.followed_dossiers).to match([dossier]) } it do
it { expect(flash.notice).to eq('Dossier suivi') } subject
it { expect(response).to redirect_to(instructeur_procedure_path(dossier.procedure)) } 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 context 'with dossier in batch_operation' do
let(:batch_operation) { create(:batch_operation, operation: :archiver, dossiers: [dossier], instructeur: instructeur) } 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 do
it { expect(flash.alert).to eq("Votre action n'a pas été effectuée, ce dossier fait parti d'un traitement de masse.") } 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
end end
describe '#unfollow' do describe '#unfollow' do
let(:batch_operation) {} let(:batch_operation) {}
before do before { instructeur.followed_dossiers << dossier }
subject do
batch_operation batch_operation
instructeur.followed_dossiers << dossier
patch :unfollow, params: { procedure_id: procedure.id, dossier_id: dossier.id } patch :unfollow, params: { procedure_id: procedure.id, dossier_id: dossier.id }
instructeur.reload
end end
it { expect(instructeur.followed_dossiers).to match([]) } it do
it { expect(flash.notice).to eq("Vous ne suivez plus le dossier nº #{dossier.id}") } subject
it { expect(response).to redirect_to(instructeur_procedure_path(dossier.procedure)) } 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 context 'with dossier in batch_operation' do
let(:batch_operation) { create(:batch_operation, operation: :archiver, dossiers: [dossier], instructeur: instructeur) } 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 do
it { expect(flash.alert).to eq("Votre action n'a pas été effectuée, ce dossier fait parti d'un traitement de masse.") } 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
end end