Groupe instructeur create

This commit is contained in:
simon lehericey 2019-10-23 20:51:25 +02:00
parent 733e83cc54
commit 9a6336f508
4 changed files with 64 additions and 6 deletions

View file

@ -5,11 +5,7 @@ module NewAdministrateur
def index def index
@procedure = procedure @procedure = procedure
@groupes_instructeurs = procedure @groupes_instructeurs = paginated_groupe_instructeurs
.groupe_instructeurs
.page(params[:page])
.per(ITEMS_PER_PAGE)
.order(:label)
end end
def show def show
@ -22,6 +18,23 @@ module NewAdministrateur
.order(:email) .order(:email)
end end
def create
@groupe_instructeur = procedure
.groupe_instructeurs
.new(label: label, instructeurs: [current_administrateur.instructeur])
if @groupe_instructeur.save
redirect_to procedure_groupe_instructeur_path(procedure, @groupe_instructeur),
notice: "Le groupe dinstructeurs « #{label} » a été créé."
else
@procedure = procedure
@groupes_instructeurs = paginated_groupe_instructeurs
flash[:alert] = "le nom « #{label} » est déjà pris par un autre groupe."
render :index
end
end
private private
def procedure def procedure
@ -34,5 +47,17 @@ module NewAdministrateur
def groupe_instructeur def groupe_instructeur
procedure.groupe_instructeurs.find(params[:id]) procedure.groupe_instructeurs.find(params[:id])
end end
def label
params[:groupe_instructeur][:label]
end
def paginated_groupe_instructeurs
procedure
.groupe_instructeurs
.page(params[:page])
.per(ITEMS_PER_PAGE)
.order(:label)
end
end end
end end

View file

@ -7,6 +7,13 @@
.card .card
.card-title Gestion des Groupes .card-title Gestion des Groupes
= form_for :groupe_instructeur, html: { class: 'form' } do |f|
= f.label :label do
Ajouter un groupe
%span.notice Ce groupe sera un choix de la liste « #{@procedure.routing_criteria_name} » .
= f.text_field :label, placeholder: 'Ville de Bordeaux', required: true
= f.submit 'Ajouter le groupe', class: 'button primary send'
%table.table.mt-2 %table.table.mt-2
%thead %thead
%tr %tr

View file

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

View file

@ -32,4 +32,30 @@ describe NewAdministrateur::GroupeInstructeursController, type: :controller do
it { expect(response).to have_http_status(:ok) } it { expect(response).to have_http_status(:ok) }
end end
end end
describe '#create' do
before do
post :create,
params: {
procedure_id: procedure.id,
groupe_instructeur: { label: label }
}
end
context 'with a valid name' do
let(:label) { "nouveau_groupe" }
it { expect(flash.notice).to be_present }
it { expect(response).to redirect_to(procedure_groupe_instructeur_path(procedure, procedure.groupe_instructeurs.last)) }
it { expect(procedure.groupe_instructeurs.count).to eq(2) }
end
context 'with an invalid group name' do
let(:label) { gi_1_1.label }
it { expect(response).to render_template(:index) }
it { expect(procedure.groupe_instructeurs.count).to eq(1) }
it { expect(flash.alert).to be_present }
end
end
end end