|
2 | 2 |
|
3 | 3 | describe Admin::AssignsController, type: :controller do |
4 | 4 | let(:admin) { create(:administrateur) } |
5 | | - let(:procedure) { create :procedure, administrateur: admin } |
6 | | - let(:instructeur) { create :instructeur, administrateurs: [admin] } |
7 | 5 |
|
8 | 6 | before do |
9 | 7 | sign_in(admin.user) |
10 | 8 | end |
11 | 9 |
|
12 | 10 | describe 'GET #show' do |
13 | | - subject { get :show, params: { procedure_id: procedure.id } } |
14 | | - it { expect(subject.status).to eq(200) } |
| 11 | + let(:procedure) { create :procedure, administrateur: admin, instructeurs: [instructeur_assigned_1, instructeur_assigned_2] } |
| 12 | + let!(:instructeur_assigned_1) { create :instructeur, email: 'instructeur_1@ministere_a.gouv.fr', administrateurs: [admin] } |
| 13 | + let!(:instructeur_assigned_2) { create :instructeur, email: 'instructeur_2@ministere_b.gouv.fr', administrateurs: [admin] } |
| 14 | + let!(:instructeur_not_assigned_1) { create :instructeur, email: 'instructeur_3@ministere_a.gouv.fr', administrateurs: [admin] } |
| 15 | + let!(:instructeur_not_assigned_2) { create :instructeur, email: 'instructeur_4@ministere_b.gouv.fr', administrateurs: [admin] } |
| 16 | + let(:filter) { nil } |
| 17 | + |
| 18 | + subject! { get :show, params: { procedure_id: procedure.id, filter: filter } } |
| 19 | + |
| 20 | + it { expect(response.status).to eq(200) } |
| 21 | + |
| 22 | + it 'sets the assigned and not assigned instructeurs' do |
| 23 | + expect(assigns(:instructeurs_assign)).to match_array([instructeur_assigned_1, instructeur_assigned_2]) |
| 24 | + expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1, instructeur_not_assigned_2]) |
| 25 | + end |
| 26 | + |
| 27 | + context 'with a search filter' do |
| 28 | + let(:filter) { '@ministere_a.gouv.fr' } |
| 29 | + |
| 30 | + it 'filters the unassigned instructeurs' do |
| 31 | + expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1]) |
| 32 | + end |
| 33 | + |
| 34 | + it 'does not filter the assigned instructeurs' do |
| 35 | + expect(assigns(:instructeurs_assign)).to match_array([instructeur_assigned_1, instructeur_assigned_2]) |
| 36 | + end |
| 37 | + |
| 38 | + context 'when the filter has spaces or a mixed case' do |
| 39 | + let(:filter) { ' @ministere_A.gouv.fr ' } |
| 40 | + |
| 41 | + it 'trims spaces and ignores the case' do |
| 42 | + expect(assigns(:instructeurs_not_assign)).to match_array([instructeur_not_assigned_1]) |
| 43 | + end |
| 44 | + end |
| 45 | + end |
15 | 46 | end |
16 | 47 |
|
17 | 48 | describe 'PUT #update' do |
| 49 | + let(:procedure) { create :procedure, administrateur: admin } |
| 50 | + let(:instructeur) { create :instructeur, administrateurs: [admin] } |
| 51 | + |
18 | 52 | subject { put :update, params: { instructeur_id: instructeur.id, procedure_id: procedure.id, to: 'assign' } } |
19 | 53 |
|
20 | 54 | it { expect(subject).to redirect_to admin_procedure_assigns_path(procedure_id: procedure.id) } |
|
0 commit comments