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:
commit
70699a681d
2 changed files with 36 additions and 17 deletions
|
@ -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] }
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue