Groupe instructeur update

This commit is contained in:
simon lehericey 2019-10-23 20:54:59 +02:00
parent 9a6336f508
commit 3dd3af8482
4 changed files with 59 additions and 6 deletions

View file

@ -11,11 +11,7 @@ module NewAdministrateur
def show
@procedure = procedure
@groupe_instructeur = groupe_instructeur
@instructeurs = groupe_instructeur
.instructeurs
.page(params[:page])
.per(ITEMS_PER_PAGE)
.order(:email)
@instructeurs = paginated_instructeurs
end
def create
@ -35,6 +31,21 @@ module NewAdministrateur
end
end
def update
@groupe_instructeur = groupe_instructeur
if @groupe_instructeur.update(label: label)
redirect_to procedure_groupe_instructeur_path(procedure, groupe_instructeur),
notice: "Le nom est à présent « #{label} »."
else
@procedure = procedure
@instructeurs = paginated_instructeurs
flash[:alert] = "le nom « #{label} » est déjà pris par un autre groupe."
render :show
end
end
private
def procedure
@ -59,5 +70,13 @@ module NewAdministrateur
.per(ITEMS_PER_PAGE)
.order(:label)
end
def paginated_instructeurs
groupe_instructeur
.instructeurs
.page(params[:page])
.per(ITEMS_PER_PAGE)
.order(:email)
end
end
end

View file

@ -9,6 +9,15 @@
.flex.baseline-start
%h1 Groupe « #{@groupe_instructeur.label} »
.card.mt-2
= form_for @groupe_instructeur,
url: procedure_groupe_instructeur_path(@procedure, @groupe_instructeur),
html: { class: 'form' } do |f|
= f.label :label, 'Nom du groupe'
= f.text_field :label, placeholder: 'Ville de Bordeaux', required: true
= f.submit 'Renommer', class: 'button primary send'
.card
.card-title Gestion des instructeurs

View file

@ -350,7 +350,7 @@ Rails.application.routes.draw do
get 'annotations'
end
resources :groupe_instructeurs, only: [:index, :show, :create]
resources :groupe_instructeurs, only: [:index, :show, :create, :update]
resources :administrateurs, controller: 'procedure_administrateurs', only: [:index, :create, :destroy]

View file

@ -58,4 +58,29 @@ describe NewAdministrateur::GroupeInstructeursController, type: :controller do
it { expect(flash.alert).to be_present }
end
end
describe '#update' do
let(:new_name) { 'nouveau nom du groupe' }
before do
patch :update,
params: {
procedure_id: procedure.id,
id: gi_1_1.id,
groupe_instructeur: { label: new_name }
}
end
it { expect(gi_1_1.reload.label).to eq(new_name) }
it { expect(response).to redirect_to(procedure_groupe_instructeur_path(procedure, gi_1_1)) }
it { expect(flash.notice).to be_present }
context 'when the name is already taken' do
let!(:gi_1_2) { procedure.groupe_instructeurs.create(label: 'groupe instructeur 2') }
let(:new_name) { gi_1_2.label }
it { expect(gi_1_1.reload.label).not_to eq(new_name) }
it { expect(flash.alert).to be_present }
end
end
end