describe Champs::DossierLinkController, type: :controller do let(:user) { create(:user) } let(:procedure) { create(:procedure, :published, :with_dossier_link) } describe '#show' do let(:dossier) { create(:dossier, user: user, procedure: procedure) } let(:champ) { dossier.champs_public.first } context 'when user is connected' do render_views before { sign_in user } let(:champs_public_attributes) do champ_attributes = [] champ_attributes[champ.id] = { value: dossier_id } champ_attributes end let(:params) do { champ_id: champ.id, dossier: { champs_public_attributes: champs_public_attributes } } end let(:dossier_id) { dossier.id } context 'when the dossier exist' do before do get :show, params: params, format: :turbo_stream end it 'renders the procedure name' do expect(response.body).to include('Dossier en brouillon') expect(response.body).to include(procedure.libelle) expect(response.body).to include(procedure.organisation) expect(response.body).to include(ActionView::RecordIdentifier.dom_id(champ, :help_block)) end end context 'when the dossier does not exist' do let(:dossier_id) { '13' } before do get :show, params: params, format: :turbo_stream end it 'renders error message' do expect(response.body).to include('Ce dossier est inconnu') expect(response.body).to include(ActionView::RecordIdentifier.dom_id(champ, :help_block)) end end end context 'when user is not connected' do before do get :show, params: { champ_id: champ.id }, format: :turbo_stream end it { expect(response.code).to eq('401') } end end end