From 707e8a000403a7309b948a6e5dea73416dbfc52e Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Wed, 31 Jul 2019 15:49:18 +0200 Subject: [PATCH 1/5] dossier_controller#new uses info from FC if any --- app/controllers/users/dossiers_controller.rb | 4 ++++ app/models/dossier.rb | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/app/controllers/users/dossiers_controller.rb b/app/controllers/users/dossiers_controller.rb index ab608f7c5..be216b36a 100644 --- a/app/controllers/users/dossiers_controller.rb +++ b/app/controllers/users/dossiers_controller.rb @@ -223,6 +223,10 @@ module Users dossier = Dossier.create!(procedure: procedure, user: current_user, state: Dossier.states.fetch(:brouillon)) if dossier.procedure.for_individual + if current_user.france_connect_information.present? + dossier.update_with_france_connect(current_user.france_connect_information) + end + redirect_to identite_dossier_path(dossier) else redirect_to siret_dossier_path(id: dossier.id) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 913976add..82c653357 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -477,6 +477,14 @@ class Dossier < ApplicationRecord !PiecesJustificativesService.liste_pieces_justificatives(self).empty? && PiecesJustificativesService.pieces_justificatives_total_size(self) < Dossier::TAILLE_MAX_ZIP end + def update_with_france_connect(fc_information) + self.individual = Individual.create( + nom: fc_information.given_name, + prenom: fc_information.family_name, + gender: fc_information.gender == 'female' ? 'Mme' : 'M.' + ) + end + private def log_dossier_operation(author, operation, subject = nil) From 6c52c71eeeb46d326c57c49aaf22cf6bbec60449 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Wed, 31 Jul 2019 15:57:37 +0200 Subject: [PATCH 2/5] add redirection spec for dossier_controller#new --- spec/controllers/users/dossiers_controller_spec.rb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index a762b982c..310e9ff42 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -871,15 +871,23 @@ describe Users::DossiersController, type: :controller do end it { is_expected.to have_http_status(302) } - it { is_expected.to redirect_to siret_dossier_path(id: Dossier.last) } - it { expect { subject }.to change(Dossier, :count).by 1 } + context 'when procedure is for entreprise' do + it { is_expected.to redirect_to siret_dossier_path(id: Dossier.last) } + end + + context 'when procedure is for particulier' do + let(:procedure) { create(:procedure, :published, :for_individual) } + it { is_expected.to redirect_to identite_dossier_path(id: Dossier.last) } + end context 'when procedure is archived' do let(:procedure) { create(:procedure, :archived) } it { is_expected.to redirect_to dossiers_path } end + + end context 'when user is not logged' do it { is_expected.to have_http_status(302) } From d7105cb6f86fbf2fbb85e122d1631af6fb3397a0 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Wed, 31 Jul 2019 16:56:39 +0200 Subject: [PATCH 3/5] added spec for dossier#update_with_france_connect --- app/models/dossier.rb | 4 ++-- spec/controllers/users/dossiers_controller_spec.rb | 2 -- spec/factories/france_connect_information.rb | 5 +++-- spec/models/dossier_spec.rb | 12 ++++++++++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index 82c653357..f98b8aae8 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -479,8 +479,8 @@ class Dossier < ApplicationRecord def update_with_france_connect(fc_information) self.individual = Individual.create( - nom: fc_information.given_name, - prenom: fc_information.family_name, + nom: fc_information.family_name, + prenom: fc_information.given_name, gender: fc_information.gender == 'female' ? 'Mme' : 'M.' ) end diff --git a/spec/controllers/users/dossiers_controller_spec.rb b/spec/controllers/users/dossiers_controller_spec.rb index 310e9ff42..488415fd0 100644 --- a/spec/controllers/users/dossiers_controller_spec.rb +++ b/spec/controllers/users/dossiers_controller_spec.rb @@ -886,8 +886,6 @@ describe Users::DossiersController, type: :controller do it { is_expected.to redirect_to dossiers_path } end - - end context 'when user is not logged' do it { is_expected.to have_http_status(302) } diff --git a/spec/factories/france_connect_information.rb b/spec/factories/france_connect_information.rb index 2a398c09e..60aaf7d69 100644 --- a/spec/factories/france_connect_information.rb +++ b/spec/factories/france_connect_information.rb @@ -1,7 +1,8 @@ FactoryBot.define do factory :france_connect_information do - given_name { 'plop' } - family_name { 'plip' } + given_name { 'Angela Claire Louise' } + family_name { 'DUBOIS' } + gender { 'female' } birthdate { '1976-02-24' } france_connect_particulier_id { '1234567' } email_france_connect { 'plip@octo.com' } diff --git a/spec/models/dossier_spec.rb b/spec/models/dossier_spec.rb index 046b97032..c5ef481a4 100644 --- a/spec/models/dossier_spec.rb +++ b/spec/models/dossier_spec.rb @@ -997,4 +997,16 @@ describe Dossier do } end end + + describe '#update_with_france_connect' do + let(:dossier) { create(:dossier, user: user) } + let(:user_info) { create(:france_connect_information) } + + it { + dossier.update_with_france_connect(user_info) + expect(dossier.individual.gender).to eq 'Mme' + expect(dossier.individual.nom).to eq user_info.family_name + expect(dossier.individual.prenom).to eq user_info.given_name + } + end end From 1e6847bc6fbac76b91ec8328e1a3939c4c78c164 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Thu, 1 Aug 2019 09:34:26 +0200 Subject: [PATCH 4/5] introduce constants for M./Mme --- app/models/dossier.rb | 6 +----- app/models/individual.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/app/models/dossier.rb b/app/models/dossier.rb index f98b8aae8..6c0bdc665 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -478,11 +478,7 @@ class Dossier < ApplicationRecord end def update_with_france_connect(fc_information) - self.individual = Individual.create( - nom: fc_information.family_name, - prenom: fc_information.given_name, - gender: fc_information.gender == 'female' ? 'Mme' : 'M.' - ) + self.individual = Individual.create_from_france_connect(fc_information) end private diff --git a/app/models/individual.rb b/app/models/individual.rb index 8ab792ab4..32d2e0445 100644 --- a/app/models/individual.rb +++ b/app/models/individual.rb @@ -5,4 +5,15 @@ class Individual < ApplicationRecord validates :gender, presence: true, allow_nil: false, on: :update validates :nom, presence: true, allow_blank: false, allow_nil: false, on: :update validates :prenom, presence: true, allow_blank: false, allow_nil: false, on: :update + + GENDER_MALE = 'M.' + GENDER_FEMALE = 'Mme' + + def self.create_from_france_connect(fc_information) + create( + nom: fc_information.family_name, + prenom: fc_information.given_name, + gender: fc_information.gender == 'female' ? GENDER_FEMALE : GENDER_MALE + ) + end end From 6c56fc73d7af7c66add169ec7a4b068906f8bc12 Mon Sep 17 00:00:00 2001 From: clemkeirua Date: Thu, 1 Aug 2019 09:55:41 +0200 Subject: [PATCH 5/5] used new constant for genders --- app/views/shared/dossiers/editable_champs/_civilite.html.haml | 4 ++-- app/views/users/dossiers/identite.html.haml | 2 +- spec/features/users/brouillon_spec.rb | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/views/shared/dossiers/editable_champs/_civilite.html.haml b/app/views/shared/dossiers/editable_champs/_civilite.html.haml index b7df8d6d0..b20e50673 100644 --- a/app/views/shared/dossiers/editable_champs/_civilite.html.haml +++ b/app/views/shared/dossiers/editable_champs/_civilite.html.haml @@ -1,8 +1,8 @@ .radios %label - = form.radio_button :value, 'M.' + = form.radio_button :value, Individual::GENDER_MALE Monsieur %label - = form.radio_button :value, 'Mme.' + = form.radio_button :value, Individual::GENDER_FEMALE Madame diff --git a/app/views/users/dossiers/identite.html.haml b/app/views/users/dossiers/identite.html.haml index 28d4466b4..bf151d17f 100644 --- a/app/views/users/dossiers/identite.html.haml +++ b/app/views/users/dossiers/identite.html.haml @@ -13,7 +13,7 @@ champs requis = f.label :gender, class: "required" - = f.select :gender, ['M.', 'Mme'], {}, class: "small" + = f.select :gender, [Individual::GENDER_MALE, Individual::GENDER_FEMALE], {}, class: "small" .flex .inline-champ diff --git a/spec/features/users/brouillon_spec.rb b/spec/features/users/brouillon_spec.rb index 8a7eaddc0..49c9fd93c 100644 --- a/spec/features/users/brouillon_spec.rb +++ b/spec/features/users/brouillon_spec.rb @@ -50,7 +50,7 @@ feature 'The user' do expect(champ_value_for('datetime')).to eq('06/01/1985 07:05') expect(champ_value_for('number')).to eq('42') expect(champ_value_for('checkbox')).to eq('on') - expect(champ_value_for('civilite')).to eq('Mme.') + expect(champ_value_for('civilite')).to eq('Mme') expect(champ_value_for('email')).to eq('loulou@yopmail.com') expect(champ_value_for('phone')).to eq('1234567890') expect(champ_value_for('yes_no')).to eq('false')