Skip to content

Commit 3291002

Browse files
committed
feat(identity): support anonymous procedures in usager dossier flow
1 parent 1f2174f commit 3291002

13 files changed

Lines changed: 65 additions & 18 deletions

File tree

app/controllers/users/commencer_controller.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ def build_prefilled_dossier
128128
@prefilled_dossier = Dossier.new(
129129
revision: @revision,
130130
state: Dossier.states.fetch(:brouillon),
131-
prefilled: true
131+
prefilled: true,
132+
autorisation_donnees: @procedure.for_anonymous?
132133
)
133134
@prefilled_dossier.build_default_values
134135
if @prefilled_dossier.save

app/controllers/users/dossiers_controller.rb

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -438,17 +438,20 @@ def new
438438
dossier = Dossier.new(
439439
revision: params[:brouillon] ? procedure.draft_revision : procedure.active_revision,
440440
user: current_user,
441-
state: Dossier.states.fetch(:brouillon)
441+
state: Dossier.states.fetch(:brouillon),
442+
autorisation_donnees: procedure.for_anonymous?
442443
)
443444
dossier.build_default_values
444445
dossier.save!
445446
DossierMailer.with(dossier:).notify_new_draft.deliver_later(wait: 1.hour)
446447
Ami::CreateNotificationService.call(dossier:)
447448

448-
if dossier.procedure.for_individual
449+
if dossier.procedure.for_individual?
449450
redirect_to identite_dossier_path(dossier)
450-
else
451+
elsif dossier.procedure.for_personne_morale?
451452
redirect_to siret_dossier_path(id: dossier.id)
453+
else
454+
redirect_to dossier_path(dossier)
452455
end
453456
end
454457

@@ -550,7 +553,7 @@ def ensure_dossier_can_be_updated
550553

551554
def ensure_dossier_can_be_filled
552555
if !dossier.autorisation_donnees
553-
if dossier.procedure.for_individual
556+
if dossier.procedure.for_individual?
554557
flash.alert = t('users.dossiers.fill_identity.individual')
555558
redirect_to identite_dossier_path(dossier)
556559
else

app/views/users/dossiers/_identity_dropdown.html.haml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
99
#identity.fr-collapse.fr-menu
1010
.fr-menu__list.dossier-show.edit-identity-content
11-
- if dossier.procedure.for_individual
11+
- if dossier.procedure.for_individual?
1212
%dl.fr-pl-0
1313
= render partial: "shared/dossiers/identite_individual", locals: { dossier: dossier }
1414

spec/controllers/instructeurs/dossiers_controller_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@
683683
end
684684

685685
context 'when related etablissement is still in degraded_mode' do
686-
let(:procedure) { create(:procedure, :published, for_individual: false, instructeurs: instructeurs) }
686+
let(:procedure) { create(:procedure, :published, :for_personne_morale, instructeurs: instructeurs) }
687687
let(:dossier) { create(:dossier, :en_instruction, :with_entreprise, procedure: procedure, as_degraded_mode: true) }
688688

689689
subject { post :terminer, params: { process_action: "accepter", procedure_id: procedure.id, dossier_id: dossier.id, statut: 'a-suivre' }, format: :turbo_stream }

spec/controllers/users/commencer_controller_spec.rb

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,16 @@
247247
it_behaves_like 'a prefilled brouillon dossier creator'
248248
end
249249

250+
context 'when the procedure is anonymous' do
251+
let(:published_procedure) { create(:procedure, :for_anonymous, :published, types_de_champ_public:, robots_indexable:) }
252+
subject { get :commencer, params: { path: path, "champ_#{type_de_champ_text.to_typed_id}" => "blabla" } }
253+
254+
it 'authorizes data sharing on the prefilled dossier so it can be filled without an identity step' do
255+
subject
256+
expect(Dossier.last.autorisation_donnees).to be(true)
257+
end
258+
end
259+
250260
context 'when the user is authenticated' do
251261
before { sign_in user }
252262

@@ -526,7 +536,7 @@
526536
before { allow(ProConnectService).to receive(:enabled?).and_return(true) }
527537

528538
context 'when procedure is moral and flag is enabled' do
529-
let(:procedure) { create(:procedure, :published, for_individual: false) }
539+
let(:procedure) { create(:procedure, :published, :for_personne_morale) }
530540

531541
it 'shows both FranceConnect and ProConnect' do
532542
subject
@@ -537,7 +547,7 @@
537547
end
538548

539549
context 'when procedure is moral but flag is disabled (legacy procedure)' do
540-
let(:procedure) { create(:procedure, :published, for_individual: false) }
550+
let(:procedure) { create(:procedure, :published, :for_personne_morale) }
541551

542552
before { procedure.update_column(:pro_connect_for_moral_procedure, false) }
543553

spec/controllers/users/dossiers_controller_spec.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -595,7 +595,7 @@
595595
end
596596

597597
context 'when the dossier is for an personne physique' do
598-
before { dossier.procedure.update(for_individual: true) }
598+
before { dossier.procedure.update(identity_kind: 'individual') }
599599

600600
it { is_expected.to redirect_to(identite_dossier_path(dossier)) }
601601
end
@@ -2416,6 +2416,17 @@
24162416
it { is_expected.to redirect_to identite_dossier_path(id: Dossier.last) }
24172417
end
24182418

2419+
context 'when procedure is anonymous' do
2420+
let(:procedure) { create(:procedure, :published, :for_anonymous) }
2421+
2422+
it { is_expected.to redirect_to dossier_path(id: Dossier.last) }
2423+
2424+
it 'authorizes data sharing without an identity step' do
2425+
subject
2426+
expect(Dossier.last.autorisation_donnees).to be(true)
2427+
end
2428+
end
2429+
24192430
it 'enqueues AMI notification for created draft' do
24202431
subject
24212432

spec/helpers/dossier_helper_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
end
6262

6363
context "when the dossier is for a company" do
64-
let(:procedure) { create(:procedure, for_individual: false) }
64+
let(:procedure) { create(:procedure, :for_personne_morale) }
6565

6666
context "when the company is not provided" do
6767
let(:etablissement) { nil }

spec/system/users/dossier_creation_spec.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,28 @@
224224
expect(page).to have_field('Numéro SIRET', with: '0000')
225225
end
226226
end
227+
228+
context 'when the procedure is anonymous' do
229+
let(:procedure) { create(:procedure, :published, :for_anonymous, :with_service, types_de_champ_public: [{ type: :text, libelle: 'Votre demande' }]) }
230+
let(:dossier) { procedure.dossiers.last }
231+
232+
scenario 'the user reaches the form directly and deposes a dossier without identifying' do
233+
visit commencer_path(path: procedure.path)
234+
click_on 'Commencer la démarche'
235+
236+
# no identity nor SIRET step: straight to the form
237+
expect(page).to have_current_path(brouillon_dossier_path(dossier))
238+
expect(dossier.autorisation_donnees).to be(true)
239+
240+
fill_in('Votre demande', with: 'super demande')
241+
click_on 'Déposer le dossier'
242+
click_on 'Accéder au dossier'
243+
244+
dossier.reload
245+
expect(dossier.state).to eq('en_construction')
246+
expect(dossier.project_champ(procedure.published_revision.types_de_champ_public.first).value).to eq('super demande')
247+
end
248+
end
227249
end
228250

229251
context 'when the user is not signed in' do

spec/views/instructeur/dossiers/show.html.haml_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@
175175
context 'when the dossier was submitted with FranceConnect' do
176176
let(:france_connect_information) { build(:france_connect_information) }
177177
let(:user) { build(:user, france_connect_informations: [france_connect_information]) }
178-
let(:procedure1) { create(:procedure, :with_type_de_champ, for_individual: true) }
178+
let(:procedure1) { create(:procedure, :with_type_de_champ) }
179179
let(:dossier) { create(:dossier, procedure: procedure1, user: user, submitted_with_france_connect: true) }
180180

181181
before do

spec/views/shared/dossiers/_header.html.haml.spec.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757

5858
describe "identity edit" do
5959
context "when the identity is individual" do
60-
let(:procedure) { create(:procedure, for_individual: true) }
60+
let(:procedure) { create(:procedure, :for_individual) }
6161
let(:dossier) { create(:dossier, :with_individual, state: "brouillon", procedure: procedure) }
6262

6363
it "display identity with an edit link" do
@@ -67,7 +67,7 @@
6767
end
6868

6969
context "when the identity is an enterprise" do
70-
let(:procedure) { create(:procedure, for_individual: false) }
70+
let(:procedure) { create(:procedure, :for_personne_morale) }
7171
let(:dossier) { create(:dossier, :with_entreprise, state: "brouillon", procedure: procedure) }
7272

7373
it "display short identity with an edit siret link" do

0 commit comments

Comments
 (0)