Fix bug with procedure_filter loop redirections

This commit is contained in:
Xavier J 2017-01-05 12:44:15 +01:00
parent ccde8fdb86
commit b48726427d
3 changed files with 76 additions and 3 deletions

View file

@ -20,6 +20,12 @@ class Gestionnaire < ActiveRecord::Base
@dossiers_follow ||= dossiers.joins(:follows).where("follows.gestionnaire_id = #{id}")
end
def procedure_filter
return nil unless assign_to.pluck(:procedure_id).include?(self[:procedure_filter])
self[:procedure_filter]
end
def toggle_follow_dossier dossier_id
dossier = dossier_id
dossier = Dossier.find(dossier_id) unless dossier_id.class == Dossier
@ -64,7 +70,7 @@ class Gestionnaire < ActiveRecord::Base
end
def notifications
Notification.where(already_read: false, dossier_id: follows.pluck(:dossier_id) ).order("updated_at DESC")
Notification.where(already_read: false, dossier_id: follows.pluck(:dossier_id)).order("updated_at DESC")
end
def notifications_for procedure

View file

@ -26,6 +26,43 @@ describe Backoffice::DossiersController, type: :controller do
context 'when gestionnaire is assign to a procedure' do
it { is_expected.to redirect_to backoffice_dossiers_procedure_path(id: procedure.id) }
context 'when gestionnaire is assign to many proceudure' do
before do
create :assign_to, procedure: create(:procedure), gestionnaire: gestionnaire
create :assign_to, procedure: create(:procedure), gestionnaire: gestionnaire
end
it { expect(gestionnaire.procedures.count).to eq 3 }
context 'when gestionnaire procedure_filter is nil' do
it { expect(gestionnaire.procedure_filter).to be_nil }
it { is_expected.to redirect_to backoffice_dossiers_procedure_path(id: gestionnaire.procedures.order('libelle ASC').first.id) }
end
context 'when gestionnaire procedure_filter is not nil' do
let(:procedure_filter_id) { gestionnaire.procedures.order('libelle ASC').last.id }
before do
gestionnaire.update_column :procedure_filter, procedure_filter_id
end
context 'when gestionnaire is assign_to the procedure filter id' do
it { is_expected.to redirect_to backoffice_dossiers_procedure_path(id: procedure_filter_id) }
end
context 'when gestionnaire not any more assign_to the procedure filter id' do
before do
AssignTo.where(procedure: procedure_filter_id, gestionnaire: gestionnaire).delete_all
end
it { expect(gestionnaire.procedure_filter).to be_nil }
it { expect(AssignTo.where(procedure: procedure_filter_id, gestionnaire: gestionnaire).count).to eq 0 }
it { is_expected.to redirect_to backoffice_dossiers_procedure_path(id: gestionnaire.procedures.order('libelle ASC').first.id) }
end
end
end
end
context 'when gestionnaire is not assign to a procedure' do

View file

@ -4,11 +4,12 @@ describe Gestionnaire, type: :model do
let(:admin) { create :administrateur }
let!(:procedure) { create :procedure, administrateur: admin }
let!(:procedure_2) { create :procedure, administrateur: admin }
let!(:procedure_3) { create :procedure, administrateur: admin }
let(:gestionnaire) { create :gestionnaire, procedure_filter: procedure_filter, administrateurs: [admin] }
let(:procedure_filter) { [] }
let(:procedure_filter) { nil }
let!(:procedure_assign) { create :assign_to, gestionnaire: gestionnaire, procedure: procedure }
before do
create :assign_to, gestionnaire: gestionnaire, procedure: procedure
create :assign_to, gestionnaire: gestionnaire, procedure: procedure_2
end
@ -244,4 +245,33 @@ describe Gestionnaire, type: :model do
subject }
end
end
describe '#procedure_filter' do
subject { gestionnaire.procedure_filter }
context 'when procedure_filter_id is nil' do
it { is_expected.to eq nil }
end
context 'when procedure_filter is not nil' do
context 'when gestionnaire is assign_to the procedure filter id' do
before do
gestionnaire.update_column :procedure_filter, procedure.id
end
it { expect(AssignTo.where(gestionnaire: gestionnaire, procedure: procedure).count).to eq 1 }
it { is_expected.to eq procedure_assign.procedure.id }
end
context 'when gestionnaire is not any more assign to the procedure filter id' do
before do
gestionnaire.update_column :procedure_filter, procedure_3.id
end
it { expect(AssignTo.where(gestionnaire: gestionnaire, procedure: procedure_3).count).to eq 0 }
it { is_expected.to be_nil }
end
end
end
end