Merge pull request #8770 from demarches-simplifiees/ask-question-in-avis-ux-part

[UX] améliorer UX de la demande d'avis
This commit is contained in:
Lisa Durand 2023-03-24 10:50:33 +00:00 committed by GitHub
commit d079f3ac98
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
35 changed files with 221 additions and 186 deletions

View file

@ -0,0 +1,15 @@
class Dsfr::SidemenuComponent < ApplicationComponent
renders_many :links, "LinkComponent"
class LinkComponent < ApplicationComponent
attr_reader :name, :url
def initialize(name:, url:)
@name = name
@url = url
end
end
def active?(url)
current_page?(url)
end
end

View file

@ -0,0 +1,3 @@
---
fr:
btn_collapse_text: In this section

View file

@ -0,0 +1,3 @@
---
fr:
btn_collapse_text: Dans cette rubrique

View file

@ -0,0 +1,9 @@
%nav.fr-sidemenu{ "aria-labelledby" => "fr-sidemenu-title" }
.fr-sidemenu__inner
%button.fr-sidemenu__btn{ "aria-controls" => "fr-sidemenu-wrapper", "aria-expanded" => "false", hidden: "" }= t('.btn_collapse_text')
#fr-sidemenu-wrapper.fr-collapse
%ul.fr-sidemenu__list
- links.each do |link|
%li{ class: "fr-sidemenu__item fr-sidemenu__item#{active?(link.url) ? '--active' : ''}" }
= link_to link.name, link.url, class: 'fr-sidemenu__link', 'aria-current': active?(link.url) ? 'page' : nil, target: "_self"

View file

@ -6,7 +6,7 @@ module Experts
before_action :authenticate_expert!, except: [:sign_up, :update_expert]
before_action :check_if_avis_revoked, except: [:index, :procedure]
before_action :redirect_if_no_sign_up_needed, only: [:sign_up, :update_expert]
before_action :set_avis_and_dossier, only: [:show, :instruction, :messagerie, :create_commentaire, :delete_commentaire, :update, :telecharger_pjs]
before_action :set_avis_and_dossier, only: [:show, :instruction, :avis_list, :avis_new, :messagerie, :create_commentaire, :delete_commentaire, :update, :telecharger_pjs]
A_DONNER_STATUS = 'a-donner'
DONNES_STATUS = 'donnes'
@ -56,6 +56,13 @@ module Experts
@new_avis = Avis.new
end
def avis_list
end
def avis_new
@new_avis = Avis.new
end
def create_avis
@procedure = Procedure.find(params[:procedure_id])
@new_avis = create_avis_from_params(avis.dossier, current_expert, avis.confidentiel)
@ -135,7 +142,7 @@ module Experts
extension = params[:format]
render extension.to_sym => avis.dossier.etablissement.entreprise_bilans_bdf_to_sheet(extension)
else
redirect_to instructeur_avis_path(avis)
redirect_to expert_avis_path(avis)
end
end

View file

@ -76,6 +76,14 @@ module Instructeurs
end
end
def avis_new
@avis_seen_at = current_instructeur.follows.find_by(dossier: dossier)&.avis_seen_at
@avis = Avis.new
if @dossier.procedure.experts_require_administrateur_invitation?
@experts_emails = dossier.procedure.experts_procedures.where(revoked_at: nil).map(&:expert).map(&:email).sort
end
end
def personnes_impliquees
@following_instructeurs_emails = dossier.followers_instructeurs.map(&:email)
previous_followers = dossier.previous_followers_instructeurs - dossier.followers_instructeurs

View file

@ -30,6 +30,7 @@
@import '@gouvfr/dsfr/dist/component/header/header.css';
@import '@gouvfr/dsfr/dist/component/footer/footer.css';
@import '@gouvfr/dsfr/dist/component/search/search.css';
@import '@gouvfr/dsfr/dist/component/sidemenu/sidemenu.css';
@import '@gouvfr/dsfr/dist/component/translate/translate.css';
@import '@gouvfr/dsfr/dist/component/pagination/pagination.css';
@import '@gouvfr/dsfr/dist/component/skiplink/skiplink.css';

View file

@ -212,7 +212,7 @@ def add_avis(pdf, avis)
format_in_2_lines(pdf, "Avis de #{avis.email_to_display}#{avis.confidentiel? ? ' (confidentiel)' : ''}",
avis.answer || 'En attente de réponse')
if avis.question_answer.present?
if [true, false].include? avis.question_answer
format_in_2_columns(pdf, "Réponse oui/non ", t("question_answer.#{avis.question_answer}", scope: 'helpers.label'))
end
end

View file

@ -18,5 +18,5 @@
%nav.tabs
%ul
= dynamic_tab_item('Demande', expert_avis_path(avis.procedure, avis))
= dynamic_tab_item('Avis', instruction_expert_avis_path(avis.procedure, avis), notification: avis.answer.blank?)
= dynamic_tab_item('Avis', [instruction_expert_avis_path(avis.procedure, avis), avis_list_expert_avis_path(avis.procedure, avis), avis_new_expert_avis_path(avis.procedure, avis)], notification: avis.answer.blank?)
= dynamic_tab_item('Messagerie', messagerie_expert_avis_path(avis.procedure, avis))

View file

@ -0,0 +1,2 @@
= render(Dsfr::SidemenuComponent.new) do |component|
- component.with_links([{ name: t('helpers.sidemenu.give_avis'), url: instruction_expert_avis_path(@avis.procedure, @avis) }, { name: t('helpers.sidemenu.see_avis'), url: avis_list_expert_avis_path(@avis.procedure, @avis) }, { name: t('helpers.sidemenu.ask_new_avis'), url: avis_new_expert_avis_path(@avis.procedure, @avis) }])

View file

@ -0,0 +1,17 @@
- content_for(:title, "Avis · Dossier nº #{@dossier.id} (#{@dossier.owner_name})")
= render partial: 'header', locals: { avis: @avis, dossier: @dossier }
.container
.fr-grid-row
.fr-col.fr-col-12.fr-col-md-3
= render partial: 'sidemenu'
.fr-col
- if @dossier.avis_for_expert(current_expert).present?
= render partial: 'experts/avis/shared/list', locals: { avis: @dossier.avis_for_expert(current_expert), avis_seen_at: nil }
- else
%h2.empty-text
= t('helpers.information_text.empty_text')
%p.empty-text-details
= t('helpers.information_text.empty_text_detail')

View file

@ -0,0 +1,16 @@
- content_for(:title, "Avis · Dossier nº #{@dossier.id} (#{@dossier.owner_name})")
= render partial: 'header', locals: { avis: @avis, dossier: @dossier }
.container
.fr-grid-row
.fr-col.fr-col-12.fr-col-md-3
= render partial: 'sidemenu'
.fr-col
- if !@dossier.termine?
= render partial: "experts/avis/shared/form", locals: { url: avis_expert_avis_path(@avis.procedure, @avis), linked_dossiers: @dossier.linked_dossiers_for(current_expert), must_be_confidentiel: @avis.confidentiel?, avis: @new_avis }
- else
%h2.empty-text
= t('helpers.information_text.no_new_avis_text')
%p.empty-text-details
= t('helpers.information_text.no_new_avis_text_detail')

View file

@ -13,12 +13,12 @@
.procedure-details
%p.fr-mb-2w
= procedure_badge(p)
= link_to(p.libelle, procedure_instructeur_avis_index_path(p), class: "fr-link fr-ml-1w")
= link_to(p.libelle, procedure_expert_avis_index_path(p), class: "fr-link fr-ml-1w")
%ul.procedure-stats.flex
%li
%object
= link_to(procedure_instructeur_avis_index_path(p, statut: Instructeurs::AvisController::A_DONNER_STATUS)) do
= link_to(procedure_expert_avis_index_path(p, statut: Instructeurs::AvisController::A_DONNER_STATUS)) do
- without_answer_count = procedure_avis.select { |a| a.answer.nil? }.size
- if without_answer_count > 0
%span.notifications{ 'aria-label': "notifications" }
@ -28,7 +28,7 @@
avis à donner
%li
%object
= link_to(procedure_instructeur_avis_index_path(p, statut: Instructeurs::AvisController::DONNES_STATUS)) do
= link_to(procedure_expert_avis_index_path(p, statut: Instructeurs::AvisController::DONNES_STATUS)) do
- with_answer_count = procedure_avis.select { |a| a.answer.present? }.size
.stats-number= with_answer_count
.stats-legend

View file

@ -3,55 +3,59 @@
= render partial: 'header', locals: { avis: @avis, dossier: @dossier }
.container
%section.give-avis
%h1.tab-title Donner votre avis
%h2.claimant
Demandeur :
%span.email.font-weight-normal= safe_claimant_email(@avis.claimant)
%span.date.font-weight-normal Demande davis envoyée le #{l(@avis.created_at, format: '%d/%m/%y')}
%p.introduction= @avis.introduction
.fr-grid-row
.fr-col.fr-col-12.fr-col-md-3
= render partial: 'sidemenu'
.fr-col
- if !@dossier.termine?
%section.give-avis
%h1.tab-title Donner votre avis
%h2.claimant
Demandeur :
%span.email.font-weight-normal= safe_claimant_email(@avis.claimant)
%span.date.font-weight-normal Demande davis envoyée le #{l(@avis.created_at, format: '%d/%m/%y')}
%p.introduction= @avis.introduction
- if @avis.introduction_file.attached?
= render Attachment::ShowComponent.new(attachment: @avis.introduction_file.attachment)
%br/
= render Attachment::DeleteFormComponent.new
= form_for @avis, url: expert_avis_path(@avis.procedure, @avis), html: { data: { controller: 'persisted-form', persisted_form_key_value: dom_id(@avis) }, multipart: true } do |f|
- if @avis.introduction_file.attached?
= render Attachment::ShowComponent.new(attachment: @avis.introduction_file.attachment)
%br/
= render Attachment::DeleteFormComponent.new
= form_for @avis, url: expert_avis_path(@avis.procedure, @avis), html: { data: { controller: 'persisted-form', persisted_form_key_value: dom_id(@avis) }, multipart: true } do |f|
- if @avis.question_label
.fr-form-group
%fieldset.fr-fieldset.fr-fieldset--inline
%legend#radio-inline-legend.fr-fieldset__legend.fr-text--regular
= @avis.question_label
.fr-fieldset__content
.fr-radio-group
= f.radio_button :question_answer, true
= f.label :question_answer, 'oui', value: true, class: 'fr-label'
- if @avis.question_label
.fr-form-group
%fieldset.fr-fieldset.fr-fieldset--inline
%legend#radio-inline-legend.fr-fieldset__legend.fr-text--regular
= @avis.question_label
.fr-fieldset__content
.fr-radio-group
= f.radio_button :question_answer, true
= f.label :question_answer, 'oui', value: true, class: 'fr-label'
.fr-radio-group
= f.radio_button :question_answer, false
= f.label :question_answer, 'non', value: false, class: 'fr-label'
.fr-radio-group
= f.radio_button :question_answer, false
= f.label :question_answer, 'non', value: false, class: 'fr-label'
.fr-select-group
= f.text_area :answer, rows: 3, class: 'fr-input', placeholder: 'Votre avis', required: true
.fr-select-group
= f.text_area :answer, rows: 3, class: 'fr-input', placeholder: 'Votre avis', required: true
= render Attachment::EditComponent.new(attached_file: @avis.piece_justificative_file, view_as: :download)
= render Attachment::EditComponent.new(attached_file: @avis.piece_justificative_file, view_as: :download)
.flex.justify-between.align-baseline
%p.confidentiel.flex
- if @avis.confidentiel?
%span.icon.lock
%span
Cet avis est confidentiel et nest pas affiché aux autres experts consultés
- else
%span
Cet avis est partagé avec les autres experts
.send-wrapper
= f.submit 'Envoyer votre avis', class: 'fr-btn'
- if !@dossier.termine?
= render partial: "experts/avis/shared/form", locals: { url: avis_expert_avis_path(@avis.procedure, @avis), linked_dossiers: @dossier.linked_dossiers_for(current_expert), must_be_confidentiel: @avis.confidentiel?, avis: @new_avis }
- if @dossier.avis_for_expert(current_expert).present?
= render partial: 'experts/avis/shared/list', locals: { avis: @dossier.avis_for_expert(current_expert), avis_seen_at: nil }
.flex.justify-between.align-baseline
%p.confidentiel.flex
- if @avis.confidentiel?
%span.icon.lock
%span
Cet avis est confidentiel et nest pas affiché aux autres experts consultés
- else
%span
Cet avis est partagé avec les autres experts
.send-wrapper
= f.submit 'Envoyer votre avis', class: 'fr-btn'
- else
%h2.empty-text
= t('helpers.information_text.no_new_avis_text')
%p.empty-text-details
= t('helpers.information_text.no_new_avis_text_detail')

View file

@ -36,11 +36,11 @@
- @avis.each do |avis|
%tr
%td.number-col
= link_to(instructeur_avis_path(avis.procedure, avis), class: 'cell-link') do
= link_to(expert_avis_path(avis.procedure, avis), class: 'cell-link') do
%span.icon.folder
#{avis.dossier.id}
%td= link_to(avis.dossier.user_email_for(:display), instructeur_avis_path(avis.procedure, avis), class: 'cell-link')
%td= link_to(avis.procedure.libelle, instructeur_avis_path(avis.procedure, avis), class: 'cell-link')
%td= link_to(avis.dossier.user_email_for(:display), expert_avis_path(avis.procedure, avis), class: 'cell-link')
%td= link_to(avis.procedure.libelle, expert_avis_path(avis.procedure, avis), class: 'cell-link')
= paginate(@avis)
- else
%h2.empty-text Aucun avis

View file

@ -37,6 +37,6 @@
- if avis.piece_justificative_file.attached?
= render Attachment::ShowComponent.new(attachment: avis.piece_justificative_file.attachment)
.answer-body
- if avis.question_answer
- if [true, false].include? avis.question_answer
%p= t("question_answer.#{avis.question_answer}", scope: 'helpers.label')
= render SimpleFormatComponent.new(avis.answer, allow_a: false)

View file

@ -1,14 +0,0 @@
.sub-header
.container
%ul.breadcrumbs
%li= link_to('Avis', instructeur_all_avis_path)
%li
= link_to(procedure.libelle, procedure_instructeur_avis_index_path(avis.procedure), class: "fr-link")
= procedure_badge(dossier.procedure)
%li= link_to("Dossier nº #{dossier.id}", instructeur_avis_path(avis.procedure, avis))
%nav.tabs
%ul
= dynamic_tab_item('Demande', instructeur_avis_path(avis.procedure, avis))
= dynamic_tab_item('Avis', instruction_instructeur_avis_path(avis.procedure, avis), notification: avis.answer.blank?)
= dynamic_tab_item('Messagerie', messagerie_instructeur_avis_path(avis.procedure, avis))

View file

@ -53,7 +53,7 @@
- if avis.piece_justificative_file.attached?
= render Attachment::ShowComponent.new(attachment: avis.piece_justificative_file.attachment)
.answer-body
- if avis.question_answer
- if [true, false].include? avis.question_answer
%p= t("question_answer.#{avis.question_answer}", scope: 'helpers.label')
= render SimpleFormatComponent.new(avis.answer, allow_a: false)

View file

@ -0,0 +1,2 @@
= render(Dsfr::SidemenuComponent.new) do |component|
- component.with_links([{ name: t('helpers.sidemenu.see_avis'), url: avis_instructeur_dossier_path(@dossier.procedure, @dossier) }, { name: t('helpers.sidemenu.ask_avis'), url: avis_new_instructeur_dossier_path(@dossier.procedure, @dossier) }])

View file

@ -1,41 +0,0 @@
- content_for(:title, "Avis")
.container
%h1.page-title Avis
%ul.procedure-list
- @avis_by_procedure.each do |p, procedure_avis|
%li.procedure-item.flex.align-start
= link_to(procedure_instructeur_avis_index_path(p)) do
.flex
.procedure-logo{ style: "background-image: url(#{p.logo_url})" }
.procedure-details
%p.procedure-title
= procedure_libelle p
%ul.procedure-stats.flex
%li
%object
= link_to(procedure_instructeur_avis_index_path(p, statut: Instructeurs::AvisController::A_DONNER_STATUS)) do
- without_answer_count = procedure_avis.select { |a| a.answer.nil? }.size
- if without_answer_count > 0
%span.notifications{ 'aria-label': "notifications" }
.stats-number
= without_answer_count
.stats-legend
avis à donner
%li
%object
= link_to(procedure_instructeur_avis_index_path(p, statut: Instructeurs::AvisController::DONNES_STATUS)) do
- with_answer_count = procedure_avis.select { |a| a.answer.present? }.size
.stats-number= with_answer_count
.stats-legend
= pluralize(with_answer_count, "avis donné")
- if p.close?
.procedure-status
%span.label Close
- elsif p.depubliee?
.procedure-status
%span.label Dépubliée

View file

@ -1,5 +0,0 @@
- content_for(:title, "Messagerie · Dossier nº #{@dossier.id} (#{@dossier.owner_name})")
= render partial: 'header', locals: { avis: @avis, dossier: @dossier }
= render partial: "shared/dossiers/messagerie", locals: { dossier: @dossier, connected_user: current_instructeur, messagerie_seen_at: nil, new_commentaire: @commentaire, form_url: commentaire_instructeur_avis_path(@avis) }

View file

@ -1,46 +0,0 @@
- avis_statut = (@statut == Instructeurs::AvisController::A_DONNER_STATUS) ? 'à donner' : 'rendus'
- content_for(:title, "Avis #{avis_statut}")
#procedure-show
.sub-header
.container.flex
.procedure-logo{ style: "background-image: url(#{@procedure.logo_url})",
role: 'img', 'aria-label': "logo de la démarche #{@procedure.libelle}" }
.procedure-header
%h1= procedure_libelle @procedure
%nav.tabs
%ul
= tab_item('avis à donner',
procedure_instructeur_avis_index_path(statut: Instructeurs::AvisController::A_DONNER_STATUS),
active: @statut == Instructeurs::AvisController::A_DONNER_STATUS,
badge: @avis_a_donner.count,
notification: @avis_a_donner.any?)
= tab_item("avis #{'donné'.pluralize(@avis_donnes.count)}",
procedure_instructeur_avis_index_path(statut: Instructeurs::AvisController::DONNES_STATUS),
active: @statut == Instructeurs::AvisController::DONNES_STATUS,
badge: @avis_donnes.count)
.container
- if @avis.present?
%table.table.dossiers-table.hoverable
%thead
%tr
%th.number-col Nº dossier
%th Demandeur
%th Démarche
%tbody
- @avis.each do |avis|
%tr
%td.number-col
= link_to(instructeur_avis_path(avis.procedure, avis), class: 'cell-link') do
%span.icon.folder
#{avis.dossier.id}
%td= link_to(avis.dossier.user_email_for(:display), instructeur_avis_path(avis.procedure, avis), class: 'cell-link')
%td= link_to(avis.procedure.libelle, instructeur_avis_path(avis.procedure, avis), class: 'cell-link')
= paginate(@avis)
- else
%h2.empty-text Aucun avis

View file

@ -1,5 +0,0 @@
- content_for(:title, "Demande · Dossier nº #{@dossier.id} (#{@dossier.owner_name})")
= render partial: 'header', locals: { avis: @avis, dossier: @dossier }
= render partial: 'shared/dossiers/demande', locals: { dossier: @dossier, demande_seen_at: nil, profile: 'instructeur' }

View file

@ -12,7 +12,8 @@
notification: notifications_summary[:annotations_privees])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.external_opinion'),
avis_instructeur_dossier_path(dossier.procedure, dossier),
[avis_instructeur_dossier_path(dossier.procedure, dossier),
avis_new_instructeur_dossier_path(dossier.procedure, dossier)],
notification: notifications_summary[:avis])
= dynamic_tab_item(t('views.instructeurs.dossiers.tab_steps.messaging'),

View file

@ -3,16 +3,15 @@
= render partial: "header", locals: { dossier: @dossier }
.container
- if !@dossier.termine?
- if @dossier.procedure.allow_expert_review
= render partial: "instructeurs/avis/shared/form", locals: { url: avis_instructeur_dossier_path(@dossier.procedure, @dossier), linked_dossiers: @dossier.linked_dossiers_for(current_instructeur), must_be_confidentiel: false, avis: @avis }
- else
%p Cette démarche nautorise pas la demande davis à un expert. Veuillez contacter votre administrateur
.fr-grid-row
.fr-col.fr-col-12.fr-col-md-3
= render partial: 'instructeurs/avis/sidemenu'
.fr-col
- if @dossier.avis.present?
= render partial: 'instructeurs/avis/list', locals: { avis: @dossier.avis, avis_seen_at: @avis_seen_at }
- if @dossier.avis.present?
= render partial: 'instructeurs/avis/shared/list', locals: { avis: @dossier.avis, avis_seen_at: @avis_seen_at }
- if @dossier.termine? && !@dossier.avis.present?
.blank-tab
%h2.empty-text Aucun avis.
%p.empty-text-details Aucun avis na été demandé sur ce dossier.
- else
%h2.empty-text
= t('helpers.information_text.empty_text')
%p.empty-text-details
= t('helpers.information_text.empty_text_detail')

View file

@ -0,0 +1,22 @@
- content_for(:title, "Avis · Dossier nº #{@dossier.id} (#{@dossier.owner_name})")
= render partial: "header", locals: { dossier: @dossier }
.container
.fr-grid-row
.fr-col.fr-col-12.fr-col-md-3
= render partial: 'instructeurs/avis/sidemenu'
.fr-col
- if !@dossier.termine?
- if @dossier.procedure.allow_expert_review
= render partial: "instructeurs/avis/form", locals: { url: avis_instructeur_dossier_path(@dossier.procedure, @dossier), linked_dossiers: @dossier.linked_dossiers_for(current_instructeur), must_be_confidentiel: false, avis: @avis }
- else
%h2.empty-text
= t('helpers.information_text.unauthorized_avis_text')
%p.empty-text-details
= t('helpers.information_text.unauthorized_avis_text_detail')
- else
%h2.empty-text
= t('helpers.information_text.no_new_avis_text')
%p.empty-text-details
= t('helpers.information_text.no_new_avis_text_detail')

View file

@ -26,3 +26,15 @@ en:
confirmation:
revoke: "Would you like to revoke the opinion request to %{email} ?"
remind: "Would you like to remind %{email} ?"
sidemenu:
give_avis: Give your opinion
see_avis: Read opinions
ask_avis: Ask for an opinion
ask_new_avis: Ask for a new opinion
information_text:
no_new_avis_text: The file has been proceed
no_new_avis_text_detail: Opinion requests are closed
unauthorized_avis_text: This procedure does not allowed expert opinions
unauthorized_avis_text_detail: Would you please contact your administrator
empty_text: No opinion.
empty_text_detail: No opinion available on this file

View file

@ -26,3 +26,15 @@ fr:
confirmation:
revoke: "Souhaitez-vous révoquer la demande davis à %{email} ?"
remind: "Souhaitez-vous relancer %{email} ?"
sidemenu:
give_avis: Donner votre avis
see_avis: Voir les avis
ask_avis: Demander un avis
ask_new_avis: Demander un nouvel avis
information_text:
no_new_avis_text: Le dossier a été traité
no_new_avis_text_detail: Les demandes d'avis ne sont plus autorisées
unauthorized_avis_text: Cette démarche nautorise pas la demande davis à un expert.
unauthorized_avis_text_detail: Veuillez contacter votre administrateur
empty_text: Aucun avis.
empty_text_detail: Aucun avis nest disponible sur ce dossier.

View file

@ -357,6 +357,8 @@ Rails.application.routes.draw do
get '', action: 'procedure', on: :collection, as: :procedure
member do
get 'instruction'
get 'avis_list'
get 'avis_new'
get 'messagerie'
post 'commentaire' => 'avis#create_commentaire'
post 'avis' => 'avis#create_avis'
@ -392,8 +394,7 @@ Rails.application.routes.draw do
end
end
resources :avis, only: [:show, :update] do
get '', action: 'procedure', on: :collection, as: :procedure
resources :avis, only: [] do
member do
patch 'revoquer'
get 'remind'
@ -426,6 +427,7 @@ Rails.application.routes.draw do
get 'messagerie'
get 'annotations-privees' => 'dossiers#annotations_privees'
get 'avis'
get 'avis_new'
get 'personnes-impliquees' => 'dossiers#personnes_impliquees'
patch 'follow'
patch 'unfollow'

View file

@ -82,7 +82,7 @@ describe Experts::AvisController, type: :controller do
before { get :bilans_bdf, params: { id: avis, procedure_id: } }
it { expect(response).to redirect_to(instructeur_avis_path(avis_without_answer)) }
it { expect(response).to redirect_to(expert_avis_path(avis_without_answer)) }
context 'with a revoked avis' do
let(:avis) { revoked_avis }

View file

@ -110,6 +110,10 @@ describe 'Inviting an expert:' do
expect(page).to have_content('Ma réponse dexpert.')
expect(page).to have_content('non')
click_on 'Voir les avis'
expect(page).to have_text('Vous')
expect(page).to have_text('non')
within('.breadcrumbs') { click_on 'Avis' }
expect(page).to have_text('1 avis donné')
end
@ -189,6 +193,7 @@ describe 'Inviting an expert:' do
click_on avis_1.dossier.user.email
within('.tabs') { click_on 'Avis' }
expect(page).to have_text("Demandeur : #{avis_1.claimant.email}")
click_on 'Voir les avis'
expect(page).to have_text("Vous")
expect(page).to have_text(avis_2.expert.email.to_s)
end
@ -204,6 +209,7 @@ describe 'Inviting an expert:' do
click_on avis_2.dossier.user.email
within('.tabs') { click_on 'Avis' }
expect(page).to have_text("Demandeur : #{avis_2.claimant.email}")
click_on 'Voir les avis'
expect(page).to have_text("Vous")
expect(page).not_to have_text(avis_1.expert.email.to_s)
end

View file

@ -26,13 +26,15 @@ describe 'Inviting an expert:', js: true do
click_on 'Avis externes'
expect(page).to have_current_path(avis_instructeur_dossier_path(procedure, dossier))
within('.fr-sidemenu') { click_on 'Demander un avis' }
expect(page).to have_current_path(avis_new_instructeur_dossier_path(procedure, dossier))
page.execute_script("document.querySelector('#avis_emails').value = '[\"#{expert.email}\",\"#{expert2.email}\"]'")
fill_in 'avis_introduction', with: 'Bonjour, merci de me donner votre avis sur ce dossier.'
check 'avis_invite_linked_dossiers'
page.select 'confidentiel', from: 'avis_confidentiel'
click_on 'Demander un avis'
within('form#new_avis') { click_on 'Demander un avis' }
perform_enqueued_jobs
expect(page).to have_content('Une demande davis a été envoyée')

View file

@ -139,6 +139,8 @@ describe 'Instructing a dossier:', js: true do
click_on 'Avis externes'
expect(page).to have_current_path(avis_instructeur_dossier_path(procedure, dossier))
within('.fr-sidemenu') { click_on 'Demander un avis' }
expect(page).to have_current_path(avis_new_instructeur_dossier_path(procedure, dossier))
expert_email_formated = "[\"expert@tps.com\"]"
expert_email = 'expert@tps.com'
@ -270,6 +272,7 @@ describe 'Instructing a dossier:', js: true do
page.execute_script("document.querySelector('#avis_emails').value = '#{to}'")
fill_in 'avis_introduction', with: introduction
select 'confidentiel', from: 'avis_confidentiel'
within('form#new_avis') { click_on 'Demander un avis' }
click_on 'Demander un avis'
end

View file

@ -1,7 +1,7 @@
describe 'instructeurs/avis/shared/_list.html.haml', type: :view do
describe 'instructeurs/avis/_list.html.haml', type: :view do
before { view.extend DossierHelper }
subject { render 'instructeurs/avis/shared/list.html.haml', avis: avis, avis_seen_at: seen_at, current_instructeur: instructeur }
subject { render 'instructeurs/avis/list.html.haml', avis: avis, avis_seen_at: seen_at, current_instructeur: instructeur }
let(:instructeur) { create(:instructeur) }
let(:instructeur2) { create(:instructeur) }