toggle routing when adding or deleting groupe_instructeurs
This commit is contained in:
parent
55a2db2cb0
commit
b419c48262
9 changed files with 32 additions and 47 deletions
|
@ -13,13 +13,12 @@ module Administrateurs
|
|||
|
||||
def index
|
||||
@procedure = procedure
|
||||
@groupes_instructeurs = paginated_groupe_instructeurs
|
||||
|
||||
if procedure.routee?
|
||||
@groupes_instructeurs = paginated_groupe_instructeurs
|
||||
@instructeurs = []
|
||||
@available_instructeur_emails = []
|
||||
else
|
||||
@groupes_instructeurs = []
|
||||
@instructeurs = paginated_instructeurs
|
||||
@available_instructeur_emails = available_instructeur_emails
|
||||
end
|
||||
|
@ -42,6 +41,7 @@ module Administrateurs
|
|||
notice: "Le groupe d’instructeurs « #{@groupe_instructeur.label} » a été créé."
|
||||
else
|
||||
@procedure = procedure
|
||||
@instructeurs = paginated_instructeurs
|
||||
@groupes_instructeurs = paginated_groupe_instructeurs
|
||||
|
||||
flash[:alert] = "le nom « #{@groupe_instructeur.label} » est déjà pris par un autre groupe."
|
||||
|
@ -74,7 +74,11 @@ module Administrateurs
|
|||
flash[:alert] = "Suppression impossible : il doit y avoir au moins un groupe instructeur sur chaque procédure"
|
||||
else
|
||||
@groupe_instructeur.destroy!
|
||||
flash[:notice] = "le groupe « #{@groupe_instructeur.label} » a été supprimé."
|
||||
if procedure.groupe_instructeurs.actif.count == 1
|
||||
procedure.update!(routing_enabled: false)
|
||||
end
|
||||
routing_notice = "et le routage a été désactivé" if procedure.groupe_instructeurs.size == 1
|
||||
flash[:notice] = "le groupe « #{@groupe_instructeur.label} » a été supprimé #{routing_notice}."
|
||||
end
|
||||
redirect_to admin_procedure_groupe_instructeurs_path(procedure)
|
||||
end
|
||||
|
@ -199,12 +203,12 @@ module Administrateurs
|
|||
redirect_to admin_procedure_groupe_instructeurs_path(procedure)
|
||||
end
|
||||
|
||||
def update_routing_enabled
|
||||
procedure.update!(routing_enabled_params)
|
||||
|
||||
redirect_to admin_procedure_groupe_instructeurs_path(procedure),
|
||||
notice: "Le routage est #{procedure.routing_enabled? ? "activée" : "désactivée"}."
|
||||
end
|
||||
# def update_routing_enabled
|
||||
# procedure.update!(routing_enabled_params)
|
||||
#
|
||||
# redirect_to admin_procedure_groupe_instructeurs_path(procedure),
|
||||
# notice: "Le routage est #{procedure.routing_enabled? ? "activée" : "désactivée"}."
|
||||
# end
|
||||
|
||||
def update_instructeurs_self_management_enabled
|
||||
procedure.update!(instructeurs_self_management_enabled_params)
|
||||
|
|
|
@ -22,9 +22,17 @@ class GroupeInstructeur < ApplicationRecord
|
|||
validates :label, uniqueness: { scope: :procedure, message: 'existe déjà' }
|
||||
|
||||
before_validation -> { label&.strip! }
|
||||
after_create :toggle_routing
|
||||
|
||||
scope :without_group, -> (group) { where.not(id: group) }
|
||||
scope :for_api_v2, -> { includes(procedure: [:administrateurs]) }
|
||||
scope :actif, -> { where(closed: false) }
|
||||
|
||||
def toggle_routing
|
||||
procedure = self.procedure.reload
|
||||
routing_enabled = procedure.groupe_instructeurs.actif.count > 1
|
||||
procedure.update!(routing_enabled: routing_enabled)
|
||||
end
|
||||
|
||||
def add(instructeur)
|
||||
return if in?(instructeur.groupe_instructeurs)
|
||||
|
|
|
@ -4,11 +4,6 @@
|
|||
- if !procedure.routee?
|
||||
%p.notice= t('.notice_html')
|
||||
|
||||
- if procedure.routee?
|
||||
- if procedure.routing_enabled? && procedure.groupe_instructeurs.size == 1
|
||||
= link_to t('.button.routing_disable'), update_routing_enabled_admin_procedure_groupe_instructeurs_path(procedure, routing: :disable), class: 'fr-btn', method: 'patch'
|
||||
- else
|
||||
= link_to t('.button.routing_enable'), update_routing_enabled_admin_procedure_groupe_instructeurs_path(procedure, routing: :enable), class: 'fr-btn', method: 'patch'
|
||||
.card
|
||||
%h2.card-title L‘autogestion des instructeurs
|
||||
%p.notice= t('.self_managment_notice_html')
|
||||
|
|
|
@ -14,9 +14,8 @@
|
|||
|
||||
= render partial: 'administrateurs/groupe_instructeurs/routing', locals: { procedure: @procedure }
|
||||
|
||||
- if @procedure.routee?
|
||||
= render partial: 'administrateurs/groupe_instructeurs/edit', locals: { procedure: @procedure, groupes_instructeurs: @groupes_instructeurs }
|
||||
- else
|
||||
= render partial: 'administrateurs/groupe_instructeurs/edit', locals: { procedure: @procedure, groupes_instructeurs: @groupes_instructeurs }
|
||||
- if @procedure.groupe_instructeurs.one?
|
||||
= render partial: 'administrateurs/groupe_instructeurs/instructeurs',
|
||||
locals: { procedure: @procedure,
|
||||
groupe_instructeur: @procedure.defaut_groupe_instructeur,
|
||||
|
|
|
@ -480,7 +480,6 @@ Rails.application.routes.draw do
|
|||
|
||||
collection do
|
||||
patch 'update_routing_criteria_name'
|
||||
patch 'update_routing_enabled'
|
||||
patch 'update_instructeurs_self_management_enabled'
|
||||
post 'import'
|
||||
get 'export_groupe_instructeurs'
|
||||
|
|
|
@ -97,8 +97,9 @@ describe Administrateurs::GroupeInstructeursController, type: :controller do
|
|||
|
||||
context 'of a group that can be deleted' do
|
||||
before { delete_group gi_1_2 }
|
||||
it { expect(flash.notice).to be_present }
|
||||
it { expect(flash.notice).to eq "le groupe « groupe instructeur 2 » a été supprimé et le routage a été désactivé." }
|
||||
it { expect(procedure.groupe_instructeurs.count).to eq(1) }
|
||||
it { expect(procedure.reload.routing_enabled?).to eq(false) }
|
||||
it { expect(response).to redirect_to(admin_procedure_groupe_instructeurs_path(procedure)) }
|
||||
end
|
||||
|
||||
|
|
|
@ -26,11 +26,15 @@ describe 'Manage procedure instructeurs', js: true do
|
|||
|
||||
scenario 'can add instructeur' do
|
||||
visit admin_procedure_groupe_instructeurs_path(procedure)
|
||||
|
||||
expect {
|
||||
fill_in "instructeur_emails", with: create(:instructeur).email
|
||||
click_on "Affecter"
|
||||
}.to change { procedure.instructeurs.count }.by(1)
|
||||
expect {
|
||||
fill_in "groupe_instructeur_label", with: "Bordeaux"
|
||||
click_on "Ajouter le groupe"
|
||||
}.to change { procedure.groupe_instructeurs.count }.by(1)
|
||||
expect(procedure.reload.routing_enabled).to eq true
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -32,19 +32,18 @@ describe 'The routing', js: true do
|
|||
# add victor to littéraire groupe
|
||||
fill_in 'Emails', with: 'victor@inst.com'
|
||||
perform_enqueued_jobs { click_on 'Affecter' }
|
||||
expect(page).to have_text("L’instructeur victor@inst.com a été affecté au groupe « littéraire »")
|
||||
expect(page).to have_text("Les instructeurs ont bien été affectés à la démarche")
|
||||
|
||||
victor = User.find_by(email: 'victor@inst.com').instructeur
|
||||
|
||||
# add superwoman to littéraire groupe
|
||||
fill_in 'Emails', with: 'superwoman@inst.com'
|
||||
perform_enqueued_jobs { click_on 'Affecter' }
|
||||
expect(page).to have_text("L’instructeur superwoman@inst.com a été affecté au groupe « littéraire »")
|
||||
expect(page).to have_text("Les instructeurs ont bien été affectés à la démarche")
|
||||
|
||||
superwoman = User.find_by(email: 'superwoman@inst.com').instructeur
|
||||
|
||||
# add inactive groupe
|
||||
click_on 'Groupes d’instructeurs'
|
||||
fill_in 'Ajouter un groupe', with: 'non visible car inactif'
|
||||
click_on 'Ajouter le groupe'
|
||||
check "Groupe inactif"
|
||||
|
|
|
@ -238,30 +238,6 @@ describe 'The user' do
|
|||
expect(page).to have_text('file.pdf')
|
||||
end
|
||||
|
||||
context 'with routing activated and one instructor group' do
|
||||
let!(:simple_procedure) { create(:simple_procedure, :published, :with_type_de_champ, :for_individual) }
|
||||
let!(:administrateur) { create(:administrateur, procedures: [simple_procedure]) }
|
||||
|
||||
before do
|
||||
simple_procedure.update(routing_enabled: true)
|
||||
simple_procedure.defaut_groupe_instructeur.instructeurs << administrateur.instructeur
|
||||
end
|
||||
|
||||
it 'sends the dossier without selecting instructor group', js: true do
|
||||
log_in(user, simple_procedure)
|
||||
fill_individual
|
||||
fill_in('Texte obligatoire', with: 'bla bla')
|
||||
wait_for_autosave
|
||||
|
||||
expect(page).not_to have_text('Votre ville')
|
||||
|
||||
click_on 'Déposer le dossier'
|
||||
|
||||
expect(page).to have_current_path(merci_dossier_path(user_dossier))
|
||||
expect(page).to have_text('Merci')
|
||||
end
|
||||
end
|
||||
|
||||
context 'with condition' do
|
||||
include Logic
|
||||
|
||||
|
|
Loading…
Reference in a new issue