describe 'Getting help:' do scenario 'a Help button is visible on public pages' do visit '/' within('.fr-header') do expect(page).to have_help_button end end context 'on pages related to a procedure' do let(:procedure) { create(:procedure, :published, :with_service) } scenario 'a Help menu provides administration contacts and a link to the FAQ' do visit commencer_path(path: procedure.path) within('.fr-header') do expect(page).to have_help_menu end within('.help-dropdown') do expect(page).to have_content(procedure.service.email) expect(page).to have_content(procedure.service.telephone) expect(page).to have_link(nil, href: I18n.t("links.common.faq.url")) end end end context 'as a signed-in user' do let(:user) { create(:user) } let(:procedure) { create(:procedure, :with_service) } before do login_as user, scope: :user end scenario 'a Help button is visible on signed-in pages' do visit dossiers_path within('.fr-header') do expect(page).to have_help_button end end context 'on a page related to a draft dossier' do let(:dossier) { create(:dossier, user: user, procedure: procedure) } scenario 'a Help menu provides administration contacts and a link to the FAQ' do visit dossier_path(dossier) within('.fr-header') do expect(page).to have_help_menu end within('.help-dropdown') do expect(page).to have_content(dossier.procedure.service.email) expect(page).to have_content(dossier.procedure.service.telephone) expect(page).to have_link(nil, href: I18n.t("links.common.faq.url")) end end end context 'on a page related to a submitted dossier' do let(:dossier) { create(:dossier, :en_construction, user: user, procedure: procedure) } scenario 'a Help menu provides links to the Messagerie and to the FAQ' do visit dossier_path(dossier) within('.fr-header') do expect(page).to have_help_menu end within('.help-dropdown') do expect(page).to have_link(nil, href: messagerie_dossier_path(dossier)) expect(page).to have_link(nil, href: I18n.t("links.common.faq.url")) end end end end context 'as a instructeur' do let(:instructeur) { create(:instructeur) } before do login_as instructeur.user, scope: :user end scenario 'a Help menu is visible on signed-in pages' do visit instructeur_procedures_path within('.fr-header') do expect(page).to have_help_menu end end end def have_help_button have_link('Aide', href: I18n.t("links.common.faq.url")) end def have_help_menu have_selector('.help-dropdown') end end