instructeur can update contact information for groupe instructeur
This commit is contained in:
parent
ba0d3fa678
commit
41b2c9355b
5 changed files with 84 additions and 1 deletions
|
@ -16,6 +16,22 @@ module Instructeurs
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def edit
|
||||||
|
assign_procedure_and_groupe_instructeur
|
||||||
|
@contact_information = @groupe_instructeur.contact_information
|
||||||
|
end
|
||||||
|
|
||||||
|
def update
|
||||||
|
assign_procedure_and_groupe_instructeur
|
||||||
|
@contact_information = @groupe_instructeur.contact_information
|
||||||
|
if @contact_information.update(contact_information_params)
|
||||||
|
redirect_to instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id), notice: "Les informations de contact ont bien été modifiées"
|
||||||
|
else
|
||||||
|
flash[:alert] = @contact_information.errors.full_messages
|
||||||
|
render :edit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def assign_procedure_and_groupe_instructeur
|
def assign_procedure_and_groupe_instructeur
|
||||||
|
|
10
app/views/instructeurs/contact_informations/edit.html.haml
Normal file
10
app/views/instructeurs/contact_informations/edit.html.haml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
= render partial: 'administrateurs/breadcrumbs',
|
||||||
|
locals: { steps: [[@procedure.libelle.truncate_words(10), instructeur_procedure_path(@procedure)],
|
||||||
|
['Groupes d’instructeurs', instructeur_groupes_path(@procedure)],
|
||||||
|
[@groupe_instructeur.label, instructeur_groupe_path(@groupe_instructeur, procedure_id: @procedure.id) ],
|
||||||
|
['Service']]}
|
||||||
|
.container
|
||||||
|
%h1 Modifier les informations de contact
|
||||||
|
|
||||||
|
= render partial: 'form',
|
||||||
|
locals: { contact_information: @contact_information, procedure_id: @procedure.id }
|
|
@ -50,7 +50,18 @@
|
||||||
= paginate @instructeurs, views_prefix: 'shared'
|
= paginate @instructeurs, views_prefix: 'shared'
|
||||||
.card.mt-2
|
.card.mt-2
|
||||||
.card-title Informations de contact
|
.card-title Informations de contact
|
||||||
- if @groupe_instructeur.contact_information.nil?
|
- service = @groupe_instructeur.contact_information
|
||||||
|
- if service.nil?
|
||||||
= "Le groupe #{@groupe_instructeur.label} n'a pas d'informations de contact. Les informations de contact affichées à l'usager seront celles du service de la procédure"
|
= "Le groupe #{@groupe_instructeur.label} n'a pas d'informations de contact. Les informations de contact affichées à l'usager seront celles du service de la procédure"
|
||||||
%p.mt-3
|
%p.mt-3
|
||||||
= link_to "+ Ajouter des informations de contact", new_instructeur_groupe_contact_information_path(procedure_id: @procedure.id, groupe_id: @groupe_instructeur.id), class: "fr-btn"
|
= link_to "+ Ajouter des informations de contact", new_instructeur_groupe_contact_information_path(procedure_id: @procedure.id, groupe_id: @groupe_instructeur.id), class: "fr-btn"
|
||||||
|
- else
|
||||||
|
%p.mt-3
|
||||||
|
= link_to "Modifier les informations de contact", edit_instructeur_groupe_contact_information_path(procedure_id: @procedure.id, groupe_id: @groupe_instructeur.id), class: "fr-btn"
|
||||||
|
%p.mt-3= service.nom
|
||||||
|
= render SimpleFormatComponent.new(service.adresse, class_names_map: {paragraph: 'fr-footer__content-desc'})
|
||||||
|
= service.email
|
||||||
|
- if service.telephone.present?
|
||||||
|
%p= service.telephone
|
||||||
|
- if service.horaires.present?
|
||||||
|
%p= service.horaires
|
||||||
|
|
|
@ -56,4 +56,39 @@ describe Instructeurs::ContactInformationsController, type: :controller do
|
||||||
it { expect(assigns(:contact_information).nom).to eq('super service') }
|
it { expect(assigns(:contact_information).nom).to eq('super service') }
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#update' do
|
||||||
|
let(:contact_information) { create(:contact_information, groupe_instructeur: gi) }
|
||||||
|
let(:contact_information_params) {
|
||||||
|
{
|
||||||
|
nom: 'nom'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let(:params) {
|
||||||
|
{
|
||||||
|
id: contact_information.id,
|
||||||
|
contact_information: contact_information_params,
|
||||||
|
procedure_id: procedure.id,
|
||||||
|
groupe_id: gi.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
before do
|
||||||
|
patch :update, params: params
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when updating a contact_information' do
|
||||||
|
it { expect(flash.alert).to be_nil }
|
||||||
|
it { expect(flash.notice).to eq('Les informations de contact ont bien été modifiées') }
|
||||||
|
it { expect(ContactInformation.last.nom).to eq('nom') }
|
||||||
|
it { expect(response).to redirect_to(instructeur_groupe_path(gi, procedure_id: procedure.id)) }
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when updating a contact_information with invalid data' do
|
||||||
|
let(:contact_information_params) { { nom: '' } }
|
||||||
|
|
||||||
|
it { expect(flash.alert).not_to be_nil }
|
||||||
|
it { expect(response).to render_template(:edit) }
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
11
spec/factories/contact_information.rb
Normal file
11
spec/factories/contact_information.rb
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
FactoryBot.define do
|
||||||
|
factory :contact_information do
|
||||||
|
sequence(:nom) { |n| "Service #{n}" }
|
||||||
|
email { 'email@toto.com' }
|
||||||
|
telephone { '1234' }
|
||||||
|
horaires { 'de 9 h à 18 h' }
|
||||||
|
adresse { 'adresse' }
|
||||||
|
|
||||||
|
association :groupe_instructeur
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue