demarches-normaliennes/spec/views/commencer/show.html.haml_spec.rb

94 lines
3.4 KiB
Ruby
Raw Normal View History

RSpec.describe 'commencer/show', type: :view do
2019-01-16 11:57:58 +01:00
include Rails.application.routes.url_helpers
let(:stored_query_params) { false }
let(:procedure) { create(:procedure, :published, :for_individual, :with_service) }
2019-01-16 11:57:58 +01:00
before do
assign(:procedure, procedure)
2021-06-24 11:57:05 +02:00
assign(:revision, procedure.published_revision)
2019-01-16 11:57:58 +01:00
if user
sign_in user
end
allow(view).to receive(:stored_query_params?).and_return(stored_query_params)
2019-01-16 11:57:58 +01:00
end
subject { render }
context 'when no user is signed in' do
let(:user) { nil }
it 'renders sign-in and sign-up links' do
subject
expect(rendered).to have_link('Créer un compte')
expect(rendered).to have_link('Jai déjà un compte')
expect(rendered).to have_link('Sidentifier avec FranceConnect')
2019-01-16 11:57:58 +01:00
end
end
context 'when the user is already signed in' do
let(:user) { create :user }
shared_examples_for 'it renders a link to create a new dossier' do |button_label|
it 'renders a link to create a new dossier' do
subject
expect(rendered).to have_link(button_label, href: new_dossier_url(procedure_id: procedure.id))
end
end
context 'and they dont have any dossier on this procedure' do
it_behaves_like 'it renders a link to create a new dossier', 'Commencer la démarche'
end
context 'and they have a pending draft' do
let!(:brouillon) { create(:dossier, user: user, procedure: procedure) }
it_behaves_like 'it renders a link to create a new dossier', 'Commencer un nouveau dossier'
it 'renders a link to resume the pending draft' do
subject
expect(rendered).to have_text(time_ago_in_words(brouillon.created_at))
2019-01-16 11:57:58 +01:00
expect(rendered).to have_link('Continuer à remplir mon dossier', href: brouillon_dossier_path(brouillon))
end
end
context 'and they have a submitted dossier' do
let!(:brouillon) { create(:dossier, user: user, procedure: procedure) }
let!(:dossier) { create(:dossier, :en_construction, :with_individual, user: user, procedure: procedure) }
2019-01-16 11:57:58 +01:00
it_behaves_like 'it renders a link to create a new dossier', 'Commencer un nouveau dossier'
it 'renders a link to the submitted dossier' do
subject
expect(rendered).to have_text(time_ago_in_words(dossier.depose_at))
2019-01-16 11:57:58 +01:00
expect(rendered).to have_link('Voir mon dossier', href: dossier_path(dossier))
end
end
context 'and they have several submitted dossiers' do
let!(:brouillon) { create(:dossier, user: user, procedure: procedure) }
let!(:dossiers) { create_list(:dossier, 2, :en_construction, :with_individual, user: user, procedure: procedure) }
2019-01-16 11:57:58 +01:00
it_behaves_like 'it renders a link to create a new dossier', 'Commencer un nouveau dossier'
it 'renders a link to the dossiers list' do
subject
expect(rendered).to have_link('Voir mes dossiers en cours', href: dossiers_path)
end
end
2023-02-08 11:45:27 +01:00
context 'and they have a prefilled dossier' do
let!(:prefilled_dossier) { create(:dossier, :prefilled, user: user, procedure: procedure) }
before { assign(:prefilled_dossier, prefilled_dossier) }
it 'renders a link to resume the prefilled dossier' do
2023-02-08 11:45:27 +01:00
subject
expect(rendered).to have_text(time_ago_in_words(prefilled_dossier.created_at))
expect(rendered).to have_link('Poursuivre mon dossier prérempli', href: brouillon_dossier_path(prefilled_dossier))
2023-02-08 11:45:27 +01:00
end
end
2019-01-16 11:57:58 +01:00
end
end