Correction de la recherche dans la liste des instructeurs (#4486)

Administrateur : correction de la recherche dans la liste des instructeurs
This commit is contained in:
Pierre de La Morinerie 2019-11-06 12:27:51 +01:00 committed by GitHub
commit d91d1d9fa8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 41 additions and 6 deletions

View file

@ -17,8 +17,9 @@ class Admin::AssignsController < AdminController
not_assign_scope = current_administrateur.instructeurs.where.not(id: assign_scope.ids) not_assign_scope = current_administrateur.instructeurs.where.not(id: assign_scope.ids)
if params[:filter] if params[:filter].present?
not_assign_scope = not_assign_scope.where("email LIKE ?", "%#{params[:filter]}%") filter = params[:filter].downcase.strip
not_assign_scope = not_assign_scope.where('users.email LIKE ?', "%#{filter}%")
end end
@instructeurs_not_assign = smart_listing_create :instructeurs_not_assign, @instructeurs_not_assign = smart_listing_create :instructeurs_not_assign,

View file

@ -2,19 +2,53 @@ require 'spec_helper'
describe Admin::AssignsController, type: :controller do describe Admin::AssignsController, type: :controller do
let(:admin) { create(:administrateur) } let(:admin) { create(:administrateur) }
let(:procedure) { create :procedure, administrateur: admin }
let(:instructeur) { create :instructeur, administrateurs: [admin] }
before do before do
sign_in(admin.user) sign_in(admin.user)
end end
describe 'GET #show' do describe 'GET #show' do
subject { get :show, params: { procedure_id: procedure.id } } let(:procedure) { create :procedure, administrateur: admin, instructeurs: [instructeur_assigned_1, instructeur_assigned_2] }
it { expect(subject.status).to eq(200) } let!(:instructeur_assigned_1) { create :instructeur, email: 'instructeur_1@ministere_a.gouv.fr', administrateurs: [admin] }
let!(:instructeur_assigned_2) { create :instructeur, email: 'instructeur_2@ministere_b.gouv.fr', administrateurs: [admin] }
let!(:instructeur_not_assigned_1) { create :instructeur, email: 'instructeur_3@ministere_a.gouv.fr', administrateurs: [admin] }
let!(:instructeur_not_assigned_2) { create :instructeur, email: 'instructeur_4@ministere_b.gouv.fr', administrateurs: [admin] }
let(:filter) { nil }
subject! { get :show, params: { procedure_id: procedure.id, filter: filter } }
it { expect(response.status).to eq(200) }
it 'sets the assigned and not assigned instructeurs' do
expect(assigns(:instructeurs_assign)).to match_array([instructeur_assigned_1, instructeur_assigned_2])
expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1, instructeur_not_assigned_2])
end
context 'with a search filter' do
let(:filter) { '@ministere_a.gouv.fr' }
it 'filters the unassigned instructeurs' do
expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1])
end
it 'does not filter the assigned instructeurs' do
expect(assigns(:instructeurs_assign)).to match_array([instructeur_assigned_1, instructeur_assigned_2])
end
context 'when the filter has spaces or a mixed case' do
let(:filter) { ' @ministere_A.gouv.fr ' }
it 'trims spaces and ignores the case' do
expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1])
end
end
end
end end
describe 'PUT #update' do describe 'PUT #update' do
let(:procedure) { create :procedure, administrateur: admin }
let(:instructeur) { create :instructeur, administrateurs: [admin] }
subject { put :update, params: { instructeur_id: instructeur.id, procedure_id: procedure.id, to: 'assign' } } subject { put :update, params: { instructeur_id: instructeur.id, procedure_id: procedure.id, to: 'assign' } }
it { expect(subject).to redirect_to admin_procedure_assigns_path(procedure_id: procedure.id) } it { expect(subject).to redirect_to admin_procedure_assigns_path(procedure_id: procedure.id) }