describe Instructeurs::RechercheController, type: :controller do let(:dossier) { create(:dossier, :en_construction) } let(:dossier2) { create(:dossier, :en_construction, procedure: dossier.procedure) } let(:instructeur) { create(:instructeur) } before { instructeur.groupe_instructeurs << dossier2.procedure.defaut_groupe_instructeur } describe 'GET #index' do before { sign_in(instructeur.user) } subject { get :index, params: { q: query } } describe 'by id' do context 'when instructeur own the dossier' do let(:query) { dossier.id } it { is_expected.to have_http_status(200) } it 'returns the expected dossier' do subject expect(assigns(:dossiers).count).to eq(1) expect(assigns(:dossiers).first.id).to eq(dossier.id) end end context 'when instructeur do not own the dossier' do let(:dossier3) { create(:dossier, :en_construction) } let(:query) { dossier3.id } it { is_expected.to have_http_status(200) } it 'does not return the dossier' do subject expect(assigns(:dossiers).count).to eq(0) end end context 'with an id out of range' do let(:query) { 123456789876543234567 } it { is_expected.to have_http_status(200) } it 'does not return the dossier' do subject expect(assigns(:dossiers).count).to eq(0) end end end context 'with no query param it does not crash' do subject { get :index, params: {} } it { is_expected.to have_http_status(200) } it 'returns 0 dossier' do subject expect(assigns(:dossiers).count).to eq(0) end end end end