diff --git a/app/assets/stylesheets/new_design/stats.scss b/app/assets/stylesheets/new_design/stats.scss index c77d6ba36..7084571b0 100644 --- a/app/assets/stylesheets/new_design/stats.scss +++ b/app/assets/stylesheets/new_design/stats.scss @@ -128,6 +128,11 @@ $big-number-card-padding: 2 * $segmented-control-item-border-radius; margin: 0 auto; margin-bottom: 20px; color: $light-grey; + + &.long-title { + margin-left: -30px; + margin-right: -30px; + } } .big-number-card-number { diff --git a/app/assets/stylesheets/new_design/status_progress.scss b/app/assets/stylesheets/new_design/status_overview.scss similarity index 98% rename from app/assets/stylesheets/new_design/status_progress.scss rename to app/assets/stylesheets/new_design/status_overview.scss index e9a5261eb..49ad8a55b 100644 --- a/app/assets/stylesheets/new_design/status_progress.scss +++ b/app/assets/stylesheets/new_design/status_overview.scss @@ -1,7 +1,7 @@ @import "colors"; @import "constants"; -.status-progress { +.status-overview { text-align: center; } diff --git a/app/controllers/new_user/dossiers_controller.rb b/app/controllers/new_user/dossiers_controller.rb index 138ee6848..3a008190d 100644 --- a/app/controllers/new_user/dossiers_controller.rb +++ b/app/controllers/new_user/dossiers_controller.rb @@ -4,8 +4,8 @@ module NewUser helper_method :new_demarche_url - before_action :ensure_ownership!, except: [:index, :show, :formulaire, :modifier, :update, :recherche] - before_action :ensure_ownership_or_invitation!, only: [:show, :formulaire, :modifier, :update] + before_action :ensure_ownership!, except: [:index, :show, :demande, :messagerie, :modifier, :update, :recherche] + before_action :ensure_ownership_or_invitation!, only: [:show, :demande, :messagerie, :modifier, :update, :create_commentaire] before_action :ensure_dossier_can_be_updated, only: [:update_identite, :update] before_action :forbid_invite_submission!, only: [:update] @@ -34,10 +34,15 @@ module NewUser @dossier = dossier end - def formulaire + def demande @dossier = dossier end + def messagerie + @dossier = dossier + @commentaire = Commentaire.new + end + def attestation send_data(dossier.attestation.pdf.read, filename: 'attestation.pdf', type: 'application/pdf') end @@ -109,7 +114,7 @@ module NewUser redirect_to merci_dossier_path(@dossier) elsif current_user.owns?(dossier) if Flipflop.new_dossier_details? - redirect_to formulaire_dossier_path(@dossier) + redirect_to demande_dossier_path(@dossier) else redirect_to users_dossier_recapitulatif_path(@dossier) end @@ -122,6 +127,18 @@ module NewUser @dossier = current_user.dossiers.includes(:procedure).find(params[:id]) end + def create_commentaire + @commentaire = CommentaireService.create(current_user, dossier, commentaire_params) + + if @commentaire.save + flash.notice = "Message envoyé" + redirect_to messagerie_dossier_path(dossier) + else + flash.now.alert = @commentaire.errors.full_messages + render :messagerie + end + end + def ask_deletion dossier = current_user.dossiers.includes(:user, procedure: :administrateur).find(params[:id]) @@ -185,7 +202,7 @@ module NewUser end def dossier - Dossier.find(params[:id] || params[:dossier_id]) + @dossier ||= Dossier.find(params[:id] || params[:dossier_id]) end def dossier_with_champs @@ -223,6 +240,10 @@ module NewUser params.require(:dossier).permit(:autorisation_donnees) end + def commentaire_params + params.require(:commentaire).permit(:body, :file) + end + def passage_en_construction? dossier.brouillon? && !draft? end diff --git a/app/views/new_gestionnaire/avis/messagerie.html.haml b/app/views/new_gestionnaire/avis/messagerie.html.haml index 58a4acbcf..9bea14b67 100644 --- a/app/views/new_gestionnaire/avis/messagerie.html.haml +++ b/app/views/new_gestionnaire/avis/messagerie.html.haml @@ -2,4 +2,4 @@ = render partial: 'header', locals: { avis: @avis, dossier: @dossier } -= render partial: "new_gestionnaire/shared/messagerie", locals: { dossier: @dossier, messagerie_seen_at: nil, new_commentaire: @commentaire, form_url: commentaire_gestionnaire_avis_path(@avis) } += render partial: "shared/dossiers/messagerie", locals: { dossier: @dossier, user_email: current_gestionnaire.email, messagerie_seen_at: nil, new_commentaire: @commentaire, form_url: commentaire_gestionnaire_avis_path(@avis) } diff --git a/app/views/new_gestionnaire/avis/show.html.haml b/app/views/new_gestionnaire/avis/show.html.haml index d008c0536..225e0c6f3 100644 --- a/app/views/new_gestionnaire/avis/show.html.haml +++ b/app/views/new_gestionnaire/avis/show.html.haml @@ -2,4 +2,4 @@ = render partial: 'header', locals: { avis: @avis, dossier: @dossier } -= render partial: 'shared/dossiers/show', locals: { dossier: @dossier, demande_seen_at: nil } += render partial: 'shared/dossiers/demande', locals: { dossier: @dossier, demande_seen_at: nil } diff --git a/app/views/new_gestionnaire/dossiers/messagerie.html.haml b/app/views/new_gestionnaire/dossiers/messagerie.html.haml index 044d9f58e..e62eeae7f 100644 --- a/app/views/new_gestionnaire/dossiers/messagerie.html.haml +++ b/app/views/new_gestionnaire/dossiers/messagerie.html.haml @@ -2,4 +2,4 @@ = render partial: "header", locals: { dossier: @dossier } -= render partial: "new_gestionnaire/shared/messagerie", locals: { dossier: @dossier, messagerie_seen_at: @messagerie_seen_at , new_commentaire: @commentaire, form_url: commentaire_gestionnaire_dossier_path(@dossier.procedure, @dossier) } += render partial: "shared/dossiers/messagerie", locals: { dossier: @dossier, user_email: current_gestionnaire.email, messagerie_seen_at: @messagerie_seen_at , new_commentaire: @commentaire, form_url: commentaire_gestionnaire_dossier_path(@dossier.procedure, @dossier) } diff --git a/app/views/new_gestionnaire/dossiers/print.html.haml b/app/views/new_gestionnaire/dossiers/print.html.haml index ebb055da4..f1b917137 100644 --- a/app/views/new_gestionnaire/dossiers/print.html.haml +++ b/app/views/new_gestionnaire/dossiers/print.html.haml @@ -84,7 +84,7 @@ %ul.messages-list - @dossier.commentaires.each do |commentaire| %li - = render partial: "new_gestionnaire/shared/messages/message", locals: { commentaire: commentaire, messagerie_seen_at: nil } + = render partial: "new_gestionnaire/shared/messages/message", locals: { commentaire: commentaire, user_email: current_gestionnaire.email, messagerie_seen_at: nil } %script{ type: "text/javascript" } window.print(); diff --git a/app/views/new_gestionnaire/dossiers/show.html.haml b/app/views/new_gestionnaire/dossiers/show.html.haml index 378bfcdc3..694aea923 100644 --- a/app/views/new_gestionnaire/dossiers/show.html.haml +++ b/app/views/new_gestionnaire/dossiers/show.html.haml @@ -2,4 +2,4 @@ = render partial: "header", locals: { dossier: @dossier } -= render partial: "shared/dossiers/show", locals: { dossier: @dossier, demande_seen_at: @demande_seen_at } += render partial: "shared/dossiers/demande", locals: { dossier: @dossier, demande_seen_at: @demande_seen_at } diff --git a/app/views/new_gestionnaire/procedures/show.html.haml b/app/views/new_gestionnaire/procedures/show.html.haml index 33cd2c785..4cab26c7f 100644 --- a/app/views/new_gestionnaire/procedures/show.html.haml +++ b/app/views/new_gestionnaire/procedures/show.html.haml @@ -109,7 +109,7 @@ %td.status-col = link_to(gestionnaire_dossier_path(@procedure, dossier), class: 'cell-link') do - = render partial: 'shared/dossiers/status', locals: { dossier: dossier } + = render partial: 'shared/dossiers/status_badge', locals: { dossier: dossier } %td.follow-col= render partial: 'dossier_actions', locals: { procedure: @procedure, dossier: dossier, dossier_is_followed: @followed_dossiers_id.include?(dossier.id) } = paginate @dossiers - else diff --git a/app/views/new_gestionnaire/recherche/index.html.haml b/app/views/new_gestionnaire/recherche/index.html.haml index e34f419f0..c6857fb8f 100644 --- a/app/views/new_gestionnaire/recherche/index.html.haml +++ b/app/views/new_gestionnaire/recherche/index.html.haml @@ -29,6 +29,6 @@ %td= link_to(dossier.user.email, dossier_linked_path(current_gestionnaire, dossier), class: 'cell-link') %td.status-col = link_to(dossier_linked_path(current_gestionnaire, dossier), class: 'cell-link') do - = render partial: 'shared/dossiers/status', locals: { dossier: dossier } + = render partial: 'shared/dossiers/status_badge', locals: { dossier: dossier } - else %h2 Aucun dossier correspondant à votre recherche n'a été trouvé diff --git a/app/views/new_gestionnaire/shared/_messagerie.html.haml b/app/views/new_gestionnaire/shared/_messagerie.html.haml deleted file mode 100644 index 1b6d7776e..000000000 --- a/app/views/new_gestionnaire/shared/_messagerie.html.haml +++ /dev/null @@ -1,7 +0,0 @@ -.messagerie.container - %ul.messages-list - - dossier.commentaires.each do |commentaire| - %li{ class: commentaire_is_from_me_class(commentaire, current_gestionnaire.email) } - = render partial: "new_gestionnaire/shared/messages/message", locals: { commentaire: commentaire, messagerie_seen_at: messagerie_seen_at } - - = render partial: "new_gestionnaire/shared/messages/form", locals: { commentaire: new_commentaire, form_url: form_url } diff --git a/app/views/new_user/dossiers/formulaire.html.haml b/app/views/new_user/dossiers/demande.html.haml similarity index 55% rename from app/views/new_user/dossiers/formulaire.html.haml rename to app/views/new_user/dossiers/demande.html.haml index 986935c40..f5be19d48 100644 --- a/app/views/new_user/dossiers/formulaire.html.haml +++ b/app/views/new_user/dossiers/demande.html.haml @@ -1,7 +1,9 @@ +- content_for(:title, "Demande · Dossier nº #{@dossier.id} (#{@dossier.procedure.libelle})") + #dossier-show = render partial: 'new_user/dossiers/show/header', locals: { dossier: @dossier } - = render partial: 'shared/dossiers/show', locals: { dossier: @dossier, demande_seen_at: nil } + = render partial: 'shared/dossiers/demande', locals: { dossier: @dossier, demande_seen_at: nil } .container - if !@dossier.read_only? diff --git a/app/views/new_user/dossiers/identite.html.haml b/app/views/new_user/dossiers/identite.html.haml index cef41586f..920184db9 100644 --- a/app/views/new_user/dossiers/identite.html.haml +++ b/app/views/new_user/dossiers/identite.html.haml @@ -1,3 +1,5 @@ +- content_for(:title, "Nouveau dossier (#{@dossier.procedure.libelle})") + - content_for :footer do = render partial: "new_user/dossiers/footer", locals: { dossier: @dossier } diff --git a/app/views/new_user/dossiers/index.html.haml b/app/views/new_user/dossiers/index.html.haml index e878a79fb..daf47fb1d 100644 --- a/app/views/new_user/dossiers/index.html.haml +++ b/app/views/new_user/dossiers/index.html.haml @@ -1,3 +1,5 @@ +- content_for(:title, "Dossiers") + .dossiers-headers.sub-header .container = link_to "Commencer une nouvelle démarche", new_demarche_url, class: "button secondary new-demarche" @@ -40,7 +42,7 @@ = dossier.procedure.libelle %td.status-col = link_to(url_for_dossier(dossier), class: 'cell-link') do - = render partial: 'shared/dossiers/status', locals: { dossier: dossier } + = render partial: 'shared/dossiers/status_badge', locals: { dossier: dossier } %td.updated-at-col = link_to(url_for_dossier(dossier), class: 'cell-link') do = dossier.updated_at.localtime.strftime("%d/%m/%Y") diff --git a/app/views/new_user/dossiers/merci.html.haml b/app/views/new_user/dossiers/merci.html.haml index 7fddc5696..1e3344109 100644 --- a/app/views/new_user/dossiers/merci.html.haml +++ b/app/views/new_user/dossiers/merci.html.haml @@ -1,3 +1,5 @@ +- content_for(:title, "Dossier bien envoyé (#{@dossier.procedure.libelle})") + .merci .container = image_tag('user/envoi-dossier.svg') diff --git a/app/views/new_user/dossiers/messagerie.html.haml b/app/views/new_user/dossiers/messagerie.html.haml new file mode 100644 index 000000000..26d4fb8b6 --- /dev/null +++ b/app/views/new_user/dossiers/messagerie.html.haml @@ -0,0 +1,6 @@ +- content_for(:title, "Messagerie · Dossier nº #{@dossier.id} (#{@dossier.procedure.libelle})") + +#dossier-show + = render partial: 'new_user/dossiers/show/header', locals: { dossier: @dossier } + + = render partial: "shared/dossiers/messagerie", locals: { dossier: @dossier, user_email: current_user.email, messagerie_seen_at: nil, new_commentaire: @commentaire, form_url: commentaire_dossier_path(@dossier) } diff --git a/app/views/new_user/dossiers/modifier.html.haml b/app/views/new_user/dossiers/modifier.html.haml index 0a20b7d77..81f264954 100644 --- a/app/views/new_user/dossiers/modifier.html.haml +++ b/app/views/new_user/dossiers/modifier.html.haml @@ -1,3 +1,5 @@ +- content_for(:title, "Modification du brouillon nº #{@dossier.id} (#{@dossier.procedure.libelle})") + - content_for :footer do = render partial: "new_user/dossiers/footer", locals: { dossier: @dossier } diff --git a/app/views/new_user/dossiers/show.html.haml b/app/views/new_user/dossiers/show.html.haml index 073022c10..e6e17707c 100644 --- a/app/views/new_user/dossiers/show.html.haml +++ b/app/views/new_user/dossiers/show.html.haml @@ -1,5 +1,7 @@ +- content_for(:title, "Résumé · Dossier nº #{@dossier.id} (#{@dossier.procedure.libelle})") + #dossier-show = render partial: 'new_user/dossiers/show/header', locals: { dossier: @dossier } .container - = render partial: 'new_user/dossiers/show/status_progress', locals: { dossier: @dossier } + = render partial: 'new_user/dossiers/show/status_overview', locals: { dossier: @dossier } diff --git a/app/views/new_user/dossiers/show/_header.html.haml b/app/views/new_user/dossiers/show/_header.html.haml index ebb2445de..c5144e0be 100644 --- a/app/views/new_user/dossiers/show/_header.html.haml +++ b/app/views/new_user/dossiers/show/_header.html.haml @@ -1,6 +1,6 @@ .sub-header .container - = render partial: 'shared/dossiers/status', locals: { dossier: dossier } + = render partial: 'shared/dossiers/status_badge', locals: { dossier: dossier } .title-container %span.icon.folder @@ -9,4 +9,5 @@ %ul.tabs = active_tab_item('Résumé', dossier_path(dossier)) - = active_tab_item('Formulaire', formulaire_dossier_path(dossier)) + = active_tab_item('Demande', demande_dossier_path(dossier)) + = active_tab_item('Messagerie', messagerie_dossier_path(dossier)) diff --git a/app/views/new_user/dossiers/show/_status_progress.html.haml b/app/views/new_user/dossiers/show/_status_overview.html.haml similarity index 99% rename from app/views/new_user/dossiers/show/_status_progress.html.haml rename to app/views/new_user/dossiers/show/_status_overview.html.haml index f2acfb447..026020eec 100644 --- a/app/views/new_user/dossiers/show/_status_progress.html.haml +++ b/app/views/new_user/dossiers/show/_status_overview.html.haml @@ -1,4 +1,4 @@ -.status-progress +.status-overview - if !dossier.termine? %ul.status-timeline %li.brouillon{ class: dossier.brouillon? ? 'active' : nil } diff --git a/app/views/shared/dossiers/_show.html.haml b/app/views/shared/dossiers/_demande.html.haml similarity index 100% rename from app/views/shared/dossiers/_show.html.haml rename to app/views/shared/dossiers/_demande.html.haml diff --git a/app/views/shared/dossiers/_messagerie.html.haml b/app/views/shared/dossiers/_messagerie.html.haml new file mode 100644 index 000000000..be8414010 --- /dev/null +++ b/app/views/shared/dossiers/_messagerie.html.haml @@ -0,0 +1,7 @@ +.messagerie.container + %ul.messages-list + - dossier.commentaires.each do |commentaire| + %li{ class: commentaire_is_from_me_class(commentaire, user_email) } + = render partial: "shared/dossiers/messages/message", locals: { commentaire: commentaire, user_email: user_email, messagerie_seen_at: messagerie_seen_at } + + = render partial: "shared/dossiers/messages/form", locals: { commentaire: new_commentaire, form_url: form_url } diff --git a/app/views/shared/dossiers/_status.html.haml b/app/views/shared/dossiers/_status_badge.html.haml similarity index 91% rename from app/views/shared/dossiers/_status.html.haml rename to app/views/shared/dossiers/_status_badge.html.haml index 6afc81dc6..775a93b0f 100644 --- a/app/views/shared/dossiers/_status.html.haml +++ b/app/views/shared/dossiers/_status_badge.html.haml @@ -2,7 +2,7 @@ %span.label.brouillon brouillon - elsif dossier.en_construction? %span.label.construction en construction -- if dossier.en_instruction? +- elsif dossier.en_instruction? %span.label.instruction en instruction - elsif dossier.accepte? %span.label.accepted accepté diff --git a/app/views/new_gestionnaire/shared/messages/_form.html.haml b/app/views/shared/dossiers/messages/_form.html.haml similarity index 100% rename from app/views/new_gestionnaire/shared/messages/_form.html.haml rename to app/views/shared/dossiers/messages/_form.html.haml diff --git a/app/views/new_gestionnaire/shared/messages/_message.html.haml b/app/views/shared/dossiers/messages/_message.html.haml similarity index 63% rename from app/views/new_gestionnaire/shared/messages/_message.html.haml rename to app/views/shared/dossiers/messages/_message.html.haml index dd902856f..f4f3ceeac 100644 --- a/app/views/new_gestionnaire/shared/messages/_message.html.haml +++ b/app/views/shared/dossiers/messages/_message.html.haml @@ -1,10 +1,10 @@ -= render partial: 'new_gestionnaire/shared/messages/message_icon', locals: { commentaire: commentaire, current_gestionnaire: current_gestionnaire } += render partial: 'shared/dossiers/messages/message_icon', locals: { commentaire: commentaire, user_email: user_email } .width-100 %h2 %span.mail - = render partial: 'new_gestionnaire/shared/messages/message_issuer', locals: { commentaire: commentaire, current_gestionnaire: current_gestionnaire } - - if ![current_gestionnaire.email, commentaire.dossier.user.email, OLD_CONTACT_EMAIL, CONTACT_EMAIL].include?(commentaire.email) + = render partial: 'shared/dossiers/messages/message_issuer', locals: { commentaire: commentaire, user_email: user_email } + - if ![user_email, commentaire.dossier.user.email, OLD_CONTACT_EMAIL, CONTACT_EMAIL].include?(commentaire.email) %span.guest Invité %span.date{ class: highlight_if_unseen_class(messagerie_seen_at, commentaire.created_at) } = I18n.l(commentaire.created_at.localtime, format: '%d/%m/%Y à %H:%M ') diff --git a/app/views/new_gestionnaire/shared/messages/_message_icon.html.haml b/app/views/shared/dossiers/messages/_message_icon.html.haml similarity index 88% rename from app/views/new_gestionnaire/shared/messages/_message_icon.html.haml rename to app/views/shared/dossiers/messages/_message_icon.html.haml index dc19bd941..bfa5d2581 100644 --- a/app/views/new_gestionnaire/shared/messages/_message_icon.html.haml +++ b/app/views/shared/dossiers/messages/_message_icon.html.haml @@ -1,5 +1,5 @@ - case commentaire.email -- when current_gestionnaire.email +- when user_email = image_tag('icons/account-circle.svg', class: 'person-icon') - when OLD_CONTACT_EMAIL - when CONTACT_EMAIL diff --git a/app/views/new_gestionnaire/shared/messages/_message_issuer.html.haml b/app/views/shared/dossiers/messages/_message_issuer.html.haml similarity index 78% rename from app/views/new_gestionnaire/shared/messages/_message_issuer.html.haml rename to app/views/shared/dossiers/messages/_message_issuer.html.haml index afba289e6..5f4eee4f2 100644 --- a/app/views/new_gestionnaire/shared/messages/_message_issuer.html.haml +++ b/app/views/shared/dossiers/messages/_message_issuer.html.haml @@ -1,5 +1,5 @@ - case commentaire.email -- when current_gestionnaire.email +- when user_email Vous - when OLD_CONTACT_EMAIL - when CONTACT_EMAIL diff --git a/app/views/stats/index.html.haml b/app/views/stats/index.html.haml index 0fe2d3583..e44fc1174 100644 --- a/app/views/stats/index.html.haml +++ b/app/views/stats/index.html.haml @@ -6,7 +6,7 @@ .stat-cards .stat-card.stat-card-half.big-number-card.pull-left - %span.big-number-card-title TOTAL PROCÉDURES DÉMATÉRIALISÉES + %span.big-number-card-title.long-title TOTAL DÉMARCHES DÉMAT. OU EN COURS DE DÉMAT. %span.big-number-card-number = number_with_delimiter(@procedures_numbers[:total]) %span.big-number-card-detail @@ -43,7 +43,7 @@ Par mois %li.segmented-control-item{ :onclick => "DS.toggleChart(event, '.cumulative-procedures-chart');" } Cumul - %span.stat-card-title.pull-left Procédures dématérialisées + %span.stat-card-title.pull-left Démarches dématérialisées .clearfix .chart-container @@ -69,7 +69,7 @@ .stat-card.stat-card-half.pull-left %span.stat-card-title - Nombre d'administrations ayant dématérialisé N procédures + Nombre d'administrations ayant dématérialisé N démarches .chart-container .chart @@ -121,8 +121,8 @@ = column_chart @motivation_usage_dossier, ytitle: 'dossiers avec motivation / total dossiers', xtitle: 'semaines' .stat-card.stat-card-half.pull-left - %span.stat-card-title Taux d'utilisation des motivations (par procédure) - = column_chart @motivation_usage_procedure, ytitle: 'procedures avec motivation / total procedures', xtitle: 'semaines' + %span.stat-card-title Taux d'utilisation des motivations (par démarche) + = column_chart @motivation_usage_procedure, ytitle: 'démarches avec motivation / total démarches', xtitle: 'semaines' .clearfix @@ -131,7 +131,7 @@ .stat-cards .stat-card.stat-card-half.pull-left %span.stat-card-title Taux d'utilisation de la bibliothèque - = column_chart @cloned_from_library_procedures_ratio, ytitle: 'procédures clonées / total procédure', xtitle: 'semaines' + = column_chart @cloned_from_library_procedures_ratio, ytitle: 'démarches clonées / total démarches', xtitle: 'semaines' .clearfix diff --git a/config/routes.rb b/config/routes.rb index 0b6e8a877..fc6b800e4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -278,7 +278,9 @@ Rails.application.routes.draw do get 'modifier' patch 'modifier', to: 'dossiers#update' get 'merci' - get 'formulaire' + get 'demande' + get 'messagerie' + post 'commentaire' => 'dossiers#create_commentaire' post 'ask_deletion' get 'attestation' end diff --git a/spec/controllers/new_user/dossiers_controller_spec.rb b/spec/controllers/new_user/dossiers_controller_spec.rb index 3889b974e..36a7b2eea 100644 --- a/spec/controllers/new_user/dossiers_controller_spec.rb +++ b/spec/controllers/new_user/dossiers_controller_spec.rb @@ -517,10 +517,52 @@ describe NewUser::DossiersController, type: :controller do sign_in(user) end - subject! { get(:formulaire, params: { id: dossier.id }) } + subject! { get(:demande, params: { id: dossier.id }) } it { expect(assigns(:dossier)).to eq(dossier) } - it { is_expected.to render_template(:formulaire) } + it { is_expected.to render_template(:demande) } + end + + describe "#create_commentaire" do + let(:dossier) { create(:dossier, :en_construction, user: user) } + let(:saved_commentaire) { dossier.commentaires.first } + let(:body) { "avant\napres" } + let(:file) { Rack::Test::UploadedFile.new("./spec/support/files/piece_justificative_0.pdf", 'application/pdf') } + let(:scan_result) { true } + + subject { + post :create_commentaire, params: { + id: dossier.id, + commentaire: { + body: body, + file: file + } + } + } + + before do + sign_in(user) + allow(ClamavService).to receive(:safe_file?).and_return(scan_result) + end + + it "creates a commentaire" do + expect { subject }.to change(Commentaire, :count).by(1) + + expect(response).to redirect_to(messagerie_dossier_path(dossier)) + expect(flash.notice).to be_present + end + + context "when the commentaire creation fails" do + let(:scan_result) { false } + + it "renders the messagerie page with the invalid commentaire" do + expect { subject }.not_to change(Commentaire, :count) + + expect(response).to render_template :messagerie + expect(flash.alert).to be_present + expect(assigns(:commentaire).body).to eq("
avant\n
apres