feat(instructeurs/back): add back button
Co-authored-by: Colin Darie <colin@darie.eu>
This commit is contained in:
parent
e6d9ee93a6
commit
e9120f90a7
6 changed files with 43 additions and 18 deletions
11
app/components/instructeurs/back_button_component.rb
Normal file
11
app/components/instructeurs/back_button_component.rb
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Instructeurs::BackButtonComponent < ApplicationComponent
|
||||||
|
def initialize(to:)
|
||||||
|
@to = to
|
||||||
|
end
|
||||||
|
|
||||||
|
def call
|
||||||
|
link_to "", @to, class: 'back-btn fr-btn fr-btn--secondary fr-btn--sm fr-mr-2w fr-icon-arrow-left-line', title: t('.back')
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,3 @@
|
||||||
|
en:
|
||||||
|
back: Back to list of files
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
fr:
|
||||||
|
back: Retour à la liste des dossiers
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
#header-top.fr-container
|
#header-top.fr-container
|
||||||
.flex
|
.flex
|
||||||
%div
|
%div
|
||||||
%h1.fr-h3.fr-mb-1w
|
.flex.fr-mb-1w
|
||||||
= t('show_dossier', scope: [:layouts, :breadcrumb], dossier_id: dossier.id, owner_name: dossier.owner_name)
|
= render Instructeurs::BackButtonComponent.new(to: instructeur_procedure_path(dossier.procedure, statut: params[:statut]))
|
||||||
|
%h1.fr-h3.fr-mb-1w
|
||||||
|
= t('show_dossier', scope: [:layouts, :breadcrumb], dossier_id: dossier.id, owner_name: dossier.owner_name)
|
||||||
|
|
||||||
|
|
||||||
= link_to dossier.procedure.libelle.truncate_words(10), instructeur_procedure_path(dossier.procedure), title: dossier.procedure.libelle, class: "fr-link"
|
= link_to dossier.procedure.libelle.truncate_words(10), instructeur_procedure_path(dossier.procedure), title: dossier.procedure.libelle, class: "fr-link"
|
||||||
.fr-mt-2w.fr-badge-group
|
.fr-mt-2w.fr-badge-group
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
.procedure-header
|
.procedure-header
|
||||||
.clipboard-container
|
.clipboard-container.flex
|
||||||
|
= render Instructeurs::BackButtonComponent.new(to: instructeur_procedures_path)
|
||||||
%h1.fr-h3.fr-mb-0
|
%h1.fr-h3.fr-mb-0
|
||||||
= "#{procedure_libelle procedure} (n°#{procedure.id})"
|
= "#{procedure_libelle procedure} (n°#{procedure.id})"
|
||||||
%nav.fr-nav#navigation{ role: "navigation", "aria-label": t('instructeurs.dossiers.header.banner.procedure_navigation') }
|
%nav.fr-nav#navigation{ role: "navigation", "aria-label": t('instructeurs.dossiers.header.banner.procedure_navigation') }
|
||||||
|
|
|
@ -38,7 +38,16 @@ describe 'Instructing a dossier:', js: true do
|
||||||
expect(page).to have_current_path(instructeur_procedure_path(procedure))
|
expect(page).to have_current_path(instructeur_procedure_path(procedure))
|
||||||
|
|
||||||
click_on dossier.user.email
|
click_on dossier.user.email
|
||||||
expect(page).to have_current_path(instructeur_dossier_path(procedure, dossier))
|
expect(page).to have_current_path(instructeur_dossier_path(procedure, dossier, statut: 'a-suivre'))
|
||||||
|
page.find('.back-btn').click
|
||||||
|
|
||||||
|
click_on 'Suivre le dossier'
|
||||||
|
click_on 'suivi'
|
||||||
|
expect(page).to have_current_path(instructeur_procedure_path(procedure, statut: 'suivis'))
|
||||||
|
|
||||||
|
click_on dossier.user.email
|
||||||
|
expect(page).to have_current_path(instructeur_dossier_path(procedure, 'suivis', dossier))
|
||||||
|
expect(page).to have_selector(".back-btn[href=\"#{instructeur_procedure_path(procedure, statut: 'suivis')}\"]")
|
||||||
|
|
||||||
click_on 'Passer en instruction'
|
click_on 'Passer en instruction'
|
||||||
|
|
||||||
|
@ -70,16 +79,17 @@ describe 'Instructing a dossier:', js: true do
|
||||||
dossier.reload
|
dossier.reload
|
||||||
expect(dossier.state).to eq(Dossier.states.fetch(:accepte))
|
expect(dossier.state).to eq(Dossier.states.fetch(:accepte))
|
||||||
expect(dossier.motivation).to eq('a good reason')
|
expect(dossier.motivation).to eq('a good reason')
|
||||||
|
# keep back up to date after most action on dossier
|
||||||
|
expect(page).to have_selector(".back-btn[href=\"#{instructeur_procedure_path(procedure, statut: 'suivis')}\"]")
|
||||||
|
|
||||||
click_on procedure.libelle
|
click_on procedure.libelle
|
||||||
click_on 'traité'
|
click_on 'traité'
|
||||||
expect(page).to have_button('Repasser en instruction')
|
expect(page).to have_button('Repasser en instruction')
|
||||||
click_on 'Supprimer le dossier'
|
click_on 'Supprimer le dossier'
|
||||||
click_on 'traité'
|
|
||||||
expect(page).not_to have_button('Repasser en instruction')
|
expect(page).not_to have_button('Repasser en instruction')
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'An instructeur can add anotations' do
|
scenario 'An instructeur can add annotations' do
|
||||||
log_in(instructeur.email, password)
|
log_in(instructeur.email, password)
|
||||||
|
|
||||||
visit instructeur_dossier_path(procedure, dossier)
|
visit instructeur_dossier_path(procedure, dossier)
|
||||||
|
@ -92,15 +102,6 @@ describe 'Instructing a dossier:', js: true do
|
||||||
expect(page).to have_text 'Annotations enregistrées'
|
expect(page).to have_text 'Annotations enregistrées'
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'An instructeur can destroy a dossier from view' do
|
|
||||||
log_in(instructeur.email, password)
|
|
||||||
|
|
||||||
dossier.passer_en_instruction(instructeur: instructeur)
|
|
||||||
dossier.accepter!(instructeur: instructeur)
|
|
||||||
visit instructeur_dossier_path(procedure, dossier)
|
|
||||||
click_on 'Supprimer le dossier'
|
|
||||||
end
|
|
||||||
|
|
||||||
scenario 'A instructeur can follow/unfollow a dossier' do
|
scenario 'A instructeur can follow/unfollow a dossier' do
|
||||||
log_in(instructeur.email, password)
|
log_in(instructeur.email, password)
|
||||||
|
|
||||||
|
@ -152,18 +153,20 @@ describe 'Instructing a dossier:', js: true do
|
||||||
expect(page).to have_text('Télécharger l’export')
|
expect(page).to have_text('Télécharger l’export')
|
||||||
end
|
end
|
||||||
|
|
||||||
scenario 'A instructeur can see the personnes impliquées' do
|
scenario 'A instructeur can see the personnes impliquées and statut is maintened over avis/personnes impliquee paths', chrome: true do
|
||||||
instructeur2 = create(:instructeur, password: password)
|
instructeur2 = create(:instructeur, password: password)
|
||||||
|
|
||||||
log_in(instructeur.email, password)
|
log_in(instructeur.email, password)
|
||||||
|
|
||||||
click_on procedure.libelle
|
click_on procedure.libelle
|
||||||
|
click_on 'Suivre le dossier'
|
||||||
|
click_on 'suivi'
|
||||||
click_on dossier.user.email
|
click_on dossier.user.email
|
||||||
|
|
||||||
click_on 'Avis externes'
|
click_on 'Avis externes'
|
||||||
expect(page).to have_current_path(avis_instructeur_dossier_path(procedure, dossier))
|
expect(page).to have_current_path(avis_instructeur_dossier_path(procedure, dossier, statut: 'suivis'))
|
||||||
within('.fr-sidemenu') { click_on 'Demander un avis' }
|
within('.fr-sidemenu') { click_on 'Demander un avis' }
|
||||||
expect(page).to have_current_path(avis_new_instructeur_dossier_path(procedure, dossier))
|
expect(page).to have_current_path(avis_new_instructeur_dossier_path(procedure, dossier, statut: 'suivis'))
|
||||||
|
|
||||||
expert_email = 'expert@tps.com'
|
expert_email = 'expert@tps.com'
|
||||||
ask_confidential_avis(expert_email, 'a good introduction')
|
ask_confidential_avis(expert_email, 'a good introduction')
|
||||||
|
@ -171,6 +174,7 @@ describe 'Instructing a dossier:', js: true do
|
||||||
ask_confidential_avis(instructeur2.email, 'a good introduction')
|
ask_confidential_avis(instructeur2.email, 'a good introduction')
|
||||||
|
|
||||||
click_on 'Personnes impliquées'
|
click_on 'Personnes impliquées'
|
||||||
|
expect(page).to have_current_path(personnes_impliquees_instructeur_dossier_path(procedure, dossier, statut: 'suivis'))
|
||||||
expect(page).to have_text(expert_email)
|
expect(page).to have_text(expert_email)
|
||||||
expect(page).to have_text(instructeur2.email)
|
expect(page).to have_text(instructeur2.email)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue