Add new testss
This commit is contained in:
parent
d0e2f281cc
commit
303230dd1d
6 changed files with 113 additions and 2 deletions
|
@ -200,6 +200,33 @@ describe Users::DossiersController, type: :controller do
|
|||
expect(flash[:alert]).to include("Le champ « Civilité » doit être rempli", "Le champ « Nom » doit être rempli", "Le champ « Prénom » doit être rempli")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a dossier is in broullon, for_tiers and we want to update the individual' do
|
||||
let(:dossier) { create(:dossier, :for_tiers_without_notification, state: "brouillon", user: user, procedure: procedure) }
|
||||
let(:dossier_params) { { individual_attributes: { gender: 'M', nom: 'Mouse', prenom: 'Mickey', email: 'mickey@gmail.com', notification_method: 'email' } } }
|
||||
|
||||
it 'updates the individual with valid notification_method' do
|
||||
dossier.reload
|
||||
individual = dossier.individual.reload
|
||||
expect(individual.errors.full_messages).to be_empty
|
||||
expect(individual.notification_method).to eq('email')
|
||||
expect(individual.email).to eq('mickey@gmail.com')
|
||||
expect(response).to redirect_to(brouillon_dossier_path(dossier))
|
||||
end
|
||||
|
||||
context 'when we want to change the mandataire' do
|
||||
let(:dossier_params) { { mandataire_first_name: "Jean", mandataire_last_name: "Dupont" } }
|
||||
|
||||
it 'updates the dossier mandataire first and last name' do
|
||||
dossier.reload
|
||||
individual = dossier.individual.reload
|
||||
expect(dossier.errors.full_messages).to be_empty
|
||||
expect(dossier.mandataire_first_name).to eq('Jean')
|
||||
expect(dossier.mandataire_last_name).to eq('Dupont')
|
||||
expect(dossier.mandataire_full_name).to eq('Jean Dupont')
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe '#siret' do
|
||||
|
|
|
@ -33,5 +33,15 @@ describe Individual do
|
|||
it { expect(individual.birthdate).to be_nil }
|
||||
end
|
||||
end
|
||||
|
||||
context 'when an individual has an invalid notification_method' do
|
||||
let(:invalid_individual) { build(:individual, notification_method: 'invalid_method') }
|
||||
|
||||
it 'raises an ArgumentError' do
|
||||
expect {
|
||||
invalid_individual.valid?
|
||||
}.to raise_error(ArgumentError, "'invalid_method' is not a valid notification_method")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -22,8 +22,8 @@ describe 'Creating a new dossier:' do
|
|||
expect(page).to have_title(libelle)
|
||||
|
||||
find('label', text: 'Monsieur').click
|
||||
fill_in('dossier[individual_attributes][prenom]', with: 'prenom', visible: true)
|
||||
fill_in('dossier[individual_attributes][nom]', with: 'prenom', visible: true)
|
||||
fill_in('indiv_first_name', with: 'prenom')
|
||||
fill_in('indiv_last_name', with: 'nom')
|
||||
end
|
||||
|
||||
shared_examples 'the user can create a new draft' do
|
||||
|
@ -62,6 +62,44 @@ describe 'Creating a new dossier:' do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when identifying as mandataire' do
|
||||
let(:libelle) { "[title] with characters to escape : '@*^$" }
|
||||
let(:procedure) { create(:procedure, :published, :for_individual, :with_service, ask_birthday: ask_birthday, libelle: libelle) }
|
||||
let(:ask_birthday) { false }
|
||||
let(:expected_birthday) { nil }
|
||||
|
||||
before do
|
||||
visit commencer_path(path: procedure.path)
|
||||
click_on 'Commencer la démarche'
|
||||
|
||||
expect(page).to have_current_path identite_dossier_path(user.reload.dossiers.last)
|
||||
expect(page).to have_title(libelle)
|
||||
|
||||
find('#radio-tiers-manage').click
|
||||
fill_in('mandataire_first_name', with: 'John')
|
||||
fill_in('mandataire_last_name', with: 'Doe')
|
||||
|
||||
find('label', text: 'Monsieur').click
|
||||
fill_in('indiv_first_name', with: 'prenom')
|
||||
fill_in('indiv_last_name', with: 'nom')
|
||||
end
|
||||
|
||||
it 'completes the form with email notification method selected' do
|
||||
find('#notification_method_email').click
|
||||
fill_in('dossier_individual_attributes_email', with: 'prenom.nom@mail.com')
|
||||
click_button('Continuer')
|
||||
expect(procedure.dossiers.last.individual.notification_method == 'email')
|
||||
expect(page).to have_current_path(brouillon_dossier_path(procedure.dossiers.last))
|
||||
end
|
||||
|
||||
it 'completes the form with no notification method selected' do
|
||||
find('#notification_method_no_notification').click
|
||||
click_button('Continuer')
|
||||
expect(procedure.dossiers.last.individual.notification_method.empty?)
|
||||
expect(page).to have_current_path(brouillon_dossier_path(procedure.dossiers.last))
|
||||
end
|
||||
end
|
||||
|
||||
context 'when identifying through SIRET' do
|
||||
let(:procedure) { create(:procedure, :published, :with_service, :with_type_de_champ) }
|
||||
let(:dossier) { procedure.dossiers.last }
|
||||
|
|
|
@ -58,6 +58,14 @@ describe 'user access to the list of their dossiers', js: true do
|
|||
end
|
||||
end
|
||||
|
||||
context 'when the dossier is for_tiers' do
|
||||
let(:dossier) { create(:dossier, :for_tiers_without_notification, user: user) }
|
||||
let(:individual) { dossier.individual }
|
||||
it 'displays the name of the mandataire' do
|
||||
expect(page).to have_content("#{individual.prenom} #{individual.nom}, dossier rempli par le mandataire #{dossier.mandataire_full_name}")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when user uses filter' do
|
||||
scenario 'user filters state on tab "en-cours"' do
|
||||
expect(page).to have_text('5 en cours')
|
||||
|
|
|
@ -35,6 +35,24 @@ describe 'users/dossiers/brouillon', type: :view do
|
|||
let(:procedure) { create(:procedure) }
|
||||
it { is_expected.not_to have_link("Télécharger le guide de la démarche") }
|
||||
end
|
||||
|
||||
context 'when a dossier is for_tiers and the dossier is in brouillon with email notification' do
|
||||
let(:dossier) { create(:dossier, :for_tiers_with_notification) }
|
||||
|
||||
it 'displays the informations of the mandataire and the beneficiaire email' do
|
||||
expect(rendered).to have_text("#{dossier.mandataire_full_name} agit pour le compte du bénéficiaire :")
|
||||
expect(rendered).to have_text("Email :\n\n\n#{dossier.individual.email}")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a dossier is for_tiers and the dossier is in brouillon with no notification' do
|
||||
let!(:dossier) { create(:dossier, :for_tiers_without_notification) }
|
||||
|
||||
it 'displays the informations of the mandataire and do not display the beneficiary email' do
|
||||
expect(rendered).to have_text("#{dossier.mandataire_full_name} agit pour le compte du bénéficiaire :")
|
||||
expect(rendered).not_to have_text("Email :\n\n\n#{dossier.individual.email}")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "as an administrateur" do
|
||||
|
|
|
@ -48,4 +48,14 @@ describe 'users/dossiers/demande', type: :view do
|
|||
expect(view.content_for(:notice_info)).to have_text("Le dossier a été déposé par le compte de #{france_connect_information.given_name} #{france_connect_information.family_name}, authentifié par FranceConnect le #{france_connect_information.updated_at.strftime('%d/%m/%Y')}")
|
||||
end
|
||||
end
|
||||
|
||||
context 'when a dossier is for_tiers and the dossier is en_construction with email notification' do
|
||||
let(:dossier) { create(:dossier, :en_construction, :for_tiers_with_notification) }
|
||||
|
||||
it 'displays the informations of the mandataire' do
|
||||
expect(rendered).to have_text('Email du mandataire')
|
||||
expect(rendered).to have_text("#{dossier.mandataire_full_name} agit pour le compte du bénéficiaire :")
|
||||
expect(rendered).to have_text(dossier.individual.email.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue