diff --git a/app/components/dossiers/message_component.rb b/app/components/dossiers/message_component.rb index 16244c2a6..af19bc2f8 100644 --- a/app/components/dossiers/message_component.rb +++ b/app/components/dossiers/message_component.rb @@ -8,6 +8,13 @@ class Dossiers::MessageComponent < ApplicationComponent attr_reader :commentaire, :connected_user, :messagerie_seen_at + def correction_badge + return if commentaire.dossier_correction.nil? + return helpers.correction_resolved_badge if commentaire.dossier_correction.resolved? + + helpers.pending_correction_badge(connected_user.is_a?(Instructeur) ? :for_instructeur : :for_user) + end + private def show_reply_button? diff --git a/app/components/dossiers/message_component/message_component.html.haml b/app/components/dossiers/message_component/message_component.html.haml index 1937b2492..1839981a0 100644 --- a/app/components/dossiers/message_component/message_component.html.haml +++ b/app/components/dossiers/message_component/message_component.html.haml @@ -6,8 +6,9 @@ = commentaire_issuer - if commentaire_from_guest? %span.fr-text--xs.fr-text-mention--grey.font-weight-normal= t('.guest') - - if commentaire.flagged_pending_correction? - = helpers.pending_correction_badge(connected_user.is_a?(Instructeur) ? :for_instructeur : :for_user) + + = correction_badge + %span.date{ class: ["fr-text--xs", "fr-text-mention--grey", "font-weight-normal", highlight_if_unseen_class], data: scroll_to_target } = commentaire_date .rich-text diff --git a/app/helpers/dossier_helper.rb b/app/helpers/dossier_helper.rb index c898cefc4..81099a161 100644 --- a/app/helpers/dossier_helper.rb +++ b/app/helpers/dossier_helper.rb @@ -98,6 +98,10 @@ module DossierHelper tag.span(Dossier.human_attribute_name("pending_correction.#{for_profile}"), class: ['fr-badge fr-badge--sm fr-badge--warning super', html_class], role: 'status') end + def correction_resolved_badge + tag.span(Dossier.human_attribute_name("pending_correction.resolved"), class: ['fr-badge fr-badge--sm fr-badge--success super'], role: 'status') + end + def demandeur_dossier(dossier) if dossier.procedure.for_individual? "#{dossier&.individual&.nom} #{dossier&.individual&.prenom}" diff --git a/app/models/dossier_correction.rb b/app/models/dossier_correction.rb index 201c19ceb..eda8dfa40 100644 --- a/app/models/dossier_correction.rb +++ b/app/models/dossier_correction.rb @@ -16,4 +16,8 @@ class DossierCorrection < ApplicationRecord validates_associated :commentaire scope :pending, -> { where(resolved_at: nil) } + + def resolved? + resolved_at.present? + end end diff --git a/config/locales/models/dossier/en.yml b/config/locales/models/dossier/en.yml index 6ed42b17d..d33baed61 100644 --- a/config/locales/models/dossier/en.yml +++ b/config/locales/models/dossier/en.yml @@ -18,6 +18,7 @@ en: pending_correction: for_instructeur: "pending" for_user: "to be corrected" + resolved: corrected traitement: state: "State" traitement/state: diff --git a/config/locales/models/dossier/fr.yml b/config/locales/models/dossier/fr.yml index d0db5795a..cbfd9e4a8 100644 --- a/config/locales/models/dossier/fr.yml +++ b/config/locales/models/dossier/fr.yml @@ -22,6 +22,7 @@ fr: pending_correction: for_instructeur: "en attente" for_user: "à corriger" + resolved: corrigé traitement: state: "État" traitement/state: diff --git a/spec/components/dossiers/message_component_spec.rb b/spec/components/dossiers/message_component_spec.rb index e6b061548..413e7b9f4 100644 --- a/spec/components/dossiers/message_component_spec.rb +++ b/spec/components/dossiers/message_component_spec.rb @@ -144,4 +144,32 @@ RSpec.describe Dossiers::MessageComponent, type: :component do end end end + + describe '#correction_badge' do + let(:resolved_at) { nil } + + before do + create(:dossier_correction, commentaire:, dossier:, resolved_at:) + end + + it 'returns a badge à corriger' do + expect(subject).to have_text('à corriger') + end + + context 'connected as instructeur' do + let(:connected_user) { create(:instructeur) } + + it 'returns a badge en attente' do + expect(subject).to have_text('en attente') + end + end + + context 'when the correction is resolved' do + let(:resolved_at) { 1.minute.ago } + + it 'returns a badge corrigé' do + expect(subject).to have_text("corrigé") + end + end + end end