2023-03-06 15:51:08 +01:00
|
|
|
|
RSpec.describe 'commencer/show', type: :view do
|
2019-01-16 11:57:58 +01:00
|
|
|
|
include Rails.application.routes.url_helpers
|
|
|
|
|
|
2023-02-08 14:38:01 +01:00
|
|
|
|
let(:stored_query_params) { false }
|
2020-01-07 17:45:39 +01:00
|
|
|
|
let(:procedure) { create(:procedure, :published, :for_individual, :with_service) }
|
2023-10-09 22:27:45 +02:00
|
|
|
|
let(:dossiers) { drafts + not_drafts }
|
|
|
|
|
let(:drafts) { [] }
|
|
|
|
|
let(:not_drafts) { [] }
|
|
|
|
|
let(:preview_dossiers) { dossiers.take(3) }
|
2024-07-03 15:37:24 +02:00
|
|
|
|
let(:user) { nil }
|
|
|
|
|
|
|
|
|
|
before do
|
|
|
|
|
allow(view).to receive(:current_administrateur).and_return(user&.administrateur)
|
|
|
|
|
end
|
2019-01-16 11:57:58 +01:00
|
|
|
|
|
|
|
|
|
before do
|
|
|
|
|
assign(:procedure, procedure)
|
2024-07-03 15:37:24 +02:00
|
|
|
|
assign(:revision, procedure.active_revision)
|
2023-10-09 22:27:45 +02:00
|
|
|
|
assign(:dossiers, dossiers)
|
|
|
|
|
assign(:drafts, drafts)
|
|
|
|
|
assign(:not_drafts, not_drafts)
|
|
|
|
|
assign(:preview_dossiers, preview_dossiers)
|
2019-01-16 11:57:58 +01:00
|
|
|
|
if user
|
|
|
|
|
sign_in user
|
|
|
|
|
end
|
2023-02-08 14:38:01 +01:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
it 'renders sign-in and sign-up links' do
|
|
|
|
|
subject
|
|
|
|
|
expect(rendered).to have_link('Créer un compte')
|
|
|
|
|
expect(rendered).to have_link('J’ai déjà un compte')
|
2019-04-02 15:03:35 +02:00
|
|
|
|
expect(rendered).to have_link('S’identifier 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 don’t 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
|
2023-10-09 22:27:45 +02:00
|
|
|
|
let!(:drafts) { [create(:dossier, 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 resume the pending draft' do
|
|
|
|
|
subject
|
2023-10-09 22:27:45 +02:00
|
|
|
|
expect(rendered).to have_text(time_ago_in_words(drafts.first.created_at))
|
|
|
|
|
expect(rendered).to have_link('Continuer à remplir mon dossier', href: brouillon_dossier_path(drafts.first))
|
2019-01-16 11:57:58 +01:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context 'and they have a submitted dossier' do
|
2023-10-09 22:27:45 +02:00
|
|
|
|
let!(:drafts) { [create(:dossier, user: user, procedure: procedure)] }
|
|
|
|
|
let!(:not_drafts) { [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
|
2023-10-09 22:27:45 +02:00
|
|
|
|
expect(rendered).to have_text(time_ago_in_words(not_drafts.first.depose_at))
|
|
|
|
|
expect(rendered).to have_link('Voir mon dossier', href: dossier_path(not_drafts.first))
|
2019-01-16 11:57:58 +01:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context 'and they have several submitted dossiers' do
|
2023-10-09 22:27:45 +02:00
|
|
|
|
let!(:drafts) { [create(:dossier, user: user, procedure: procedure)] }
|
|
|
|
|
let!(:not_drafts) { 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
|
2023-10-09 17:12:27 +02:00
|
|
|
|
expect(rendered).to have_link('Voir mes dossiers en cours', href: dossiers_path(procedure_id: procedure.id))
|
2019-01-16 11:57:58 +01:00
|
|
|
|
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) }
|
|
|
|
|
|
2023-02-08 14:38:01 +01:00
|
|
|
|
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))
|
2023-02-08 14:38:01 +01:00
|
|
|
|
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
|
2024-07-03 15:37:24 +02:00
|
|
|
|
|
|
|
|
|
context "procedure is draft" do
|
|
|
|
|
let(:procedure) { create(:procedure, :draft) }
|
|
|
|
|
let(:user) { create :user }
|
|
|
|
|
|
|
|
|
|
it 'renders a warning' do
|
|
|
|
|
subject
|
|
|
|
|
expect(rendered).to have_text("Cette démarche est actuellement en test")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context "when user is admin" do
|
|
|
|
|
let(:user) { procedure.administrateurs.first.user }
|
|
|
|
|
|
|
|
|
|
it "renders warning about draft" do
|
|
|
|
|
subject
|
|
|
|
|
expect(rendered).to have_text("Cette démarche est actuellement en test")
|
|
|
|
|
expect(rendered).to have_text("Ne communiquez pas ce lien")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
context "revision is draft" do
|
|
|
|
|
before {
|
|
|
|
|
assign(:revision, procedure.draft_revision)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
it "renders warning about draft" do
|
|
|
|
|
subject
|
|
|
|
|
expect(rendered).to have_text("Démarche en test")
|
|
|
|
|
end
|
|
|
|
|
end
|
2019-01-16 11:57:58 +01:00
|
|
|
|
end
|