From a9ab1daf3a47266f61fb108c4e37f783984f60f6 Mon Sep 17 00:00:00 2001 From: Lisa Durand Date: Mon, 18 Dec 2023 11:25:52 +0100 Subject: [PATCH] display alert only for instructeur who generated the export and if recent --- .../instructeurs/procedures_controller.rb | 6 ++- .../procedures_controller_spec.rb | 50 +++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) diff --git a/app/controllers/instructeurs/procedures_controller.rb b/app/controllers/instructeurs/procedures_controller.rb index 476b3b778..8adf2f492 100644 --- a/app/controllers/instructeurs/procedures_controller.rb +++ b/app/controllers/instructeurs/procedures_controller.rb @@ -381,7 +381,11 @@ module Instructeurs end def last_export_for(statut) - Export.for_groupe_instructeurs(groupe_instructeur_ids).where(statut: statut).last + export = Export.where(instructeur_id: current_instructeur.id, statut: statut).last + if export.present? + return nil if export.updated_at < 1.hour.ago + end + export end def cookies_export_key diff --git a/spec/controllers/instructeurs/procedures_controller_spec.rb b/spec/controllers/instructeurs/procedures_controller_spec.rb index d1110d566..f25e0d69f 100644 --- a/spec/controllers/instructeurs/procedures_controller_spec.rb +++ b/spec/controllers/instructeurs/procedures_controller_spec.rb @@ -508,6 +508,56 @@ describe Instructeurs::ProceduresController, type: :controller do end end end + + context 'exports alert' do + context 'without generated export' do + let(:statut) { 'tous' } + let!(:export) { create(:export, :pending, groupe_instructeurs: [gi_2]) } + render_views + before do + subject + end + + it { expect(assigns(:has_last_export)).to eq(export) } + it { expect(response.body).to include("Votre dernier export est en cours de crĂ©ation") } + end + + context 'with recent generated export' do + let(:statut) { 'tous' } + let!(:export) { create(:export, :generated, groupe_instructeurs: [gi_2], updated_at: 1.minute.ago) } + render_views + before do + subject + end + + it { expect(assigns(:has_last_export)).to eq(export) } + it { expect(response.body).to include("Votre dernier export au format csv est prĂȘt") } + end + + context 'with generated export more than hour ago' do + let(:statut) { 'tous' } + let!(:export) { create(:export, :generated, groupe_instructeurs: [gi_2], updated_at: 2.hours.ago) } + before do + subject + end + + it { expect(assigns(:has_last_export)).to eq(nil) } + end + + context 'logged in with another instructeur' do + let(:instructeur_2) { create(:instructeur) } + let(:statut) { 'tous' } + let!(:export) { create(:export, :generated, groupe_instructeurs: [gi_2], updated_at: 1.minute.ago) } + + before do + sign_in(instructeur_2.user) + instructeur_2.groupe_instructeurs << gi_2 + subject + end + + it { expect(assigns(:has_last_export)).to eq(nil) } + end + end end end