describe 'administrateurs/experts_procedures/index', type: :view do let!(:procedure) { create(:procedure, :published) } before do assign(:procedure, procedure) assign(:procedure_lien, commencer_url(path: procedure.path)) allow(view).to receive(:current_administrateur).and_return(procedure.administrateurs.first) end subject { render } context 'when the procedure has 0 avis' do let!(:dossier) { create(:dossier, procedure: procedure) } before do @invited_experts = procedure.experts_procedures subject end it 'has 0 experts into the page' do expect(@invited_experts.count).to eq(0) expect(@invited_experts).to eq([]) end end context 'when the procedure has 3 avis from 2 experts and 1 unasigned' do let!(:dossier) { create(:dossier, procedure: procedure) } let!(:avis) { create(:avis, dossier: dossier) } let!(:avis2) { create(:avis, dossier: dossier) } before do @invited_experts = procedure.experts_procedures subject end it 'has 2 experts and match array' do expect(@invited_experts.count).to eq(2) expect(@invited_experts).to match_array([avis.experts_procedure, avis2.experts_procedure]) end end context 'when the experts_require_administrateur_invitation is false' do it 'authorize instructors to invite any expert' do expect(rendered).not_to have_content "Affecter des experts à la démarche" end end context 'when the experts_require_administrateur_invitation is true' do let!(:procedure) { create(:procedure, :published, experts_require_administrateur_invitation: true) } before do subject end it 'does not authorize instructors to invite any expert but only those presents in admin list' do expect(rendered).to have_content "Affecter des experts à la démarche" end end end