feat(routing): add message if no type de champs routable

This commit is contained in:
Eric Leroy-Terquem 2023-03-27 16:01:39 +02:00 committed by simon lehericey
parent 80b5f6bc1d
commit c4d64d9775
4 changed files with 72 additions and 23 deletions

View file

@ -13,6 +13,10 @@ class Procedure::RoutingRulesComponent < ApplicationComponent
end
end
def can_route?
available_targets_for_select.present?
end
def targeted_champ_tag(targeted_champ, row_index)
select_tag(
'targeted_champ',

View file

@ -6,3 +6,7 @@ fr:
Ajoutez des règles de routage à partir de champs créés dans le formulaire.
Si les mêmes règles de routage sont appliquées à plusieurs groupes,
les dossiers seront routés vers le premier groupe affiché dans la liste.
routing_rules_warning_html: |
Pour appliquer des règles de routage, votre formulaire doit comporter
au moins un champ « choix simple ». <br>
Ajoutez ce champ dans la page <a href="%{path}">« Configuration des champs »</a>

View file

@ -1,26 +1,29 @@
.card#routing-rules
.card-title
= t('.apply_routing_rules')
%p.notice
= t('.routing_rules_notice')
.conditionnel.mt-2.width-100
%table.condition-table.mt-2.width-100
%thead
%tr
%th.far-left
%th.target Champ cible du routage
%th.operator Opérateur
%th.value Valeur
%th.delete-column
.conditionnel.mt-2.width-100
- rows.each.with_index do |(targeted_champ, value, groupe_instructeur), row_index|
= form_tag admin_procedure_routing_rules_path(@procedure_id), method: :post, class: "form width-100 gi-#{groupe_instructeur.id}" do
%table.condition-table.mt-2.width-100
%tbody
%tr{ data: { controller: 'autosave' } }
%td.far-left Router vers « #{groupe_instructeur.label} » si
%td.target= targeted_champ_tag(targeted_champ, row_index)
%td.operator Est égal à
%td.value= value_tag(targeted_champ, value, row_index)
%td.delete-column
= hidden_groupe_instructeur_tag(groupe_instructeur.id)
- if can_route?
%p.notice
= t('.routing_rules_notice')
.conditionnel.mt-2.width-100
%table.condition-table.mt-2.width-100
%thead
%tr
%th.far-left
%th.target Champ cible du routage
%th.operator Opérateur
%th.value Valeur
%th.delete-column
.conditionnel.mt-2.width-100
- rows.each.with_index do |(targeted_champ, value, groupe_instructeur), row_index|
= form_tag admin_procedure_routing_rules_path(@procedure_id), method: :post, class: "form width-100 gi-#{groupe_instructeur.id}" do
%table.condition-table.mt-2.width-100
%tbody
%tr{ data: { controller: 'autosave' } }
%td.far-left Router vers « #{groupe_instructeur.label} » si
%td.target= targeted_champ_tag(targeted_champ, row_index)
%td.operator Est égal à
%td.value= value_tag(targeted_champ, value, row_index)
%td.delete-column
= hidden_groupe_instructeur_tag(groupe_instructeur.id)
- else
%p= t('.routing_rules_warning_html', path: champs_admin_procedure_path(@procedure_id))

View file

@ -0,0 +1,38 @@
describe Procedure::RoutingRulesComponent, type: :component do
include Logic
describe 'render' do
let(:procedure) do
create(:procedure, types_de_champ_public: [{ type: :integer_number, libelle: 'Age' }])
.tap { _1.groupe_instructeurs.create(label: 'groupe 2') }
end
subject do
render_inline(described_class.new(revision: procedure.active_revision,
groupe_instructeurs: procedure.groupe_instructeurs))
end
context 'when there are no types de champ that can be routed' do
before do
procedure.publish_revision!
procedure.reload
subject
end
it { expect(page).to have_text('Ajoutez ce champ dans la page') }
end
context 'when there are types de champ that can be routed' do
before do
procedure.draft_revision.add_type_de_champ({
type_champ: :drop_down_list,
libelle: 'Votre ville',
drop_down_list_value: "Paris\nLyon\nMarseille"
})
procedure.publish_revision!
procedure.reload
subject
end
it { expect(page).to have_text('Router vers') }
end
end
end