From dd1fea78acf2df190d39f4ab16f5f6cff5b4430f Mon Sep 17 00:00:00 2001 From: Mathieu Magnin Date: Thu, 24 Aug 2017 16:26:57 +0200 Subject: [PATCH] [Fix #658] when dossier linked to avis is hidden, do not crash application --- app/controllers/stats_controller.rb | 2 +- app/models/avis.rb | 1 + spec/controllers/backoffice_controller_spec.rb | 11 +++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/app/controllers/stats_controller.rb b/app/controllers/stats_controller.rb index 109163dc9..6ade6f422 100644 --- a/app/controllers/stats_controller.rb +++ b/app/controllers/stats_controller.rb @@ -190,7 +190,7 @@ class StatsController < ApplicationController average = Avis.with_answer .where(created_at: min_date..max_date) - .average("EXTRACT(EPOCH FROM updated_at - created_at) / 86400") + .average("EXTRACT(EPOCH FROM avis.updated_at - avis.created_at) / 86400") result = average ? average.to_f.round(2) : 0 diff --git a/app/models/avis.rb b/app/models/avis.rb index b166bf7c3..89e29c5a3 100644 --- a/app/models/avis.rb +++ b/app/models/avis.rb @@ -6,6 +6,7 @@ class Avis < ApplicationRecord before_create :try_to_assign_gestionnaire after_create :notify_gestionnaire + default_scope { joins(:dossier) } scope :with_answer, -> { where.not(answer: nil) } scope :without_answer, -> { where(answer: nil) } scope :for_dossier, ->(dossier_id) { where(dossier_id: dossier_id) } diff --git a/spec/controllers/backoffice_controller_spec.rb b/spec/controllers/backoffice_controller_spec.rb index 540f8db82..4a67f397a 100644 --- a/spec/controllers/backoffice_controller_spec.rb +++ b/spec/controllers/backoffice_controller_spec.rb @@ -58,6 +58,17 @@ describe BackofficeController, type: :controller do it { expect(response.body).to include("1 avis rendu") } it { expect(response.body).to include(dossier.procedure.libelle) } end + + context 'when dossier linked to avis is hidden' do + before do + dossier.update_attributes(hidden_at: Time.now) + get :invitations + end + + it { expect(response.status).to eq(200) } + it { expect(response.body).to include("0 avis à rendre") } + it { expect(response.body).to include("0 avis rendu") } + end end end end