diff --git a/app/helpers/dossier_helper.rb b/app/helpers/dossier_helper.rb index bd1e6d95f..50a24a464 100644 --- a/app/helpers/dossier_helper.rb +++ b/app/helpers/dossier_helper.rb @@ -10,7 +10,7 @@ module DossierHelper end def highlight_if_unseen_class(seen_at, updated_at) - if seen_at&.<(updated_at) + if updated_at.present? && seen_at&.<(updated_at) "highlighted" end end diff --git a/app/models/dossier.rb b/app/models/dossier.rb index ebee64ca8..a629839b2 100644 --- a/app/models/dossier.rb +++ b/app/models/dossier.rb @@ -301,7 +301,7 @@ class Dossier < ApplicationRecord def assign_to_groupe_instructeur(groupe_instructeur, author = nil) if groupe_instructeur.procedure == procedure && groupe_instructeur != self.groupe_instructeur - if update(groupe_instructeur: groupe_instructeur) + if update(groupe_instructeur: groupe_instructeur, groupe_instructeur_updated_at: Time.zone.now) unfollow_stale_instructeurs if author.present? diff --git a/app/views/shared/dossiers/_champs.html.haml b/app/views/shared/dossiers/_champs.html.haml index 969c489d5..381d389e6 100644 --- a/app/views/shared/dossiers/_champs.html.haml +++ b/app/views/shared/dossiers/_champs.html.haml @@ -2,6 +2,9 @@ %tbody - if dossier.procedure.routee? %th= dossier.procedure.routing_criteria_name - %td= dossier.groupe_instructeur.label - %td + %td{ class: highlight_if_unseen_class(demande_seen_at, dossier.groupe_instructeur_updated_at) }= dossier.groupe_instructeur.label + %td.updated-at + %span{ class: highlight_if_unseen_class(demande_seen_at, dossier.groupe_instructeur_updated_at) } + modifié le + = try_format_datetime(dossier.updated_at) = render partial: "shared/dossiers/champ_row", locals: { champs: champs, demande_seen_at: demande_seen_at, profile: profile, repetition: false } diff --git a/db/migrate/20200226174444_add_groupe_instructeur_updated_at_to_dossiers.rb b/db/migrate/20200226174444_add_groupe_instructeur_updated_at_to_dossiers.rb new file mode 100644 index 000000000..5d7b5c43a --- /dev/null +++ b/db/migrate/20200226174444_add_groupe_instructeur_updated_at_to_dossiers.rb @@ -0,0 +1,5 @@ +class AddGroupeInstructeurUpdatedAtToDossiers < ActiveRecord::Migration[5.2] + def change + add_column :dossiers, :groupe_instructeur_updated_at, :timestamp + end +end diff --git a/db/schema.rb b/db/schema.rb index 7f59ae967..557bf1d0e 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -252,6 +252,7 @@ ActiveRecord::Schema.define(version: 2020_02_27_100001) do t.datetime "brouillon_close_to_expiration_notice_sent_at" t.index "to_tsvector('french'::regconfig, (search_terms || private_search_terms))", name: "index_dossiers_on_search_terms_private_search_terms", using: :gin t.index "to_tsvector('french'::regconfig, search_terms)", name: "index_dossiers_on_search_terms", using: :gin + t.datetime "groupe_instructeur_updated_at" t.index ["archived"], name: "index_dossiers_on_archived" t.index ["groupe_instructeur_id"], name: "index_dossiers_on_groupe_instructeur_id" t.index ["hidden_at"], name: "index_dossiers_on_hidden_at" diff --git a/spec/views/shared/dossiers/_champs.html.haml_spec.rb b/spec/views/shared/dossiers/_champs.html.haml_spec.rb index 9efff5573..3f42039b9 100644 --- a/spec/views/shared/dossiers/_champs.html.haml_spec.rb +++ b/spec/views/shared/dossiers/_champs.html.haml_spec.rb @@ -67,6 +67,31 @@ describe 'shared/dossiers/champs.html.haml', type: :view do expect(subject).to include(procedure.routing_criteria_name) expect(subject).to include(dossier.groupe_instructeur.label) end + + context "with seen_at" do + let(:dossier) { create(:dossier) } + let(:nouveau_groupe_instructeur) { create(:groupe_instructeur, procedure: dossier.procedure) } + let(:champ1) { create(:champ, :checkbox, value: "on") } + let(:champs) { [champ1] } + + context "with a demande_seen_at after groupe_instructeur_updated_at" do + let(:demande_seen_at) { dossier.groupe_instructeur_updated_at + 1.hour } + + it "expect to not highlight new group instructeur label" do + dossier.assign_to_groupe_instructeur(nouveau_groupe_instructeur) + expect(subject).not_to have_css(".highlighted") + end + end + + context "with a demande_seen_at before groupe_instructeur_updated_at" do + let(:demande_seen_at) { dossier.groupe_instructeur_updated_at - 1.hour } + + it "expect to not highlight new group instructeur label" do + dossier.assign_to_groupe_instructeur(nouveau_groupe_instructeur) + expect(subject).to have_css(".highlighted") + end + end + end end context "with a dossier champ, but we are not authorized to acces the dossier" do