From dcae06ae84caf7a724d5445640a79570f789a6e8 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Mon, 28 Nov 2022 15:14:35 +0100 Subject: [PATCH] fix(avis_controller): index do not linked to revoked avis --- app/controllers/experts/avis_controller.rb | 2 +- app/models/avis.rb | 1 + spec/controllers/experts/avis_controller_spec.rb | 11 +++++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/controllers/experts/avis_controller.rb b/app/controllers/experts/avis_controller.rb index 51e4fe255..54f9ba286 100644 --- a/app/controllers/experts/avis_controller.rb +++ b/app/controllers/experts/avis_controller.rb @@ -12,7 +12,7 @@ module Experts DONNES_STATUS = 'donnes' def index - avis = current_expert.avis.includes(dossier: [groupe_instructeur: :procedure]).not_hidden_by_administration + avis = current_expert.avis.not_revoked.includes(dossier: [groupe_instructeur: :procedure]).not_hidden_by_administration @avis_by_procedure = avis.to_a.group_by(&:procedure) end diff --git a/app/models/avis.rb b/app/models/avis.rb index 4a49adb0e..15d49d894 100644 --- a/app/models/avis.rb +++ b/app/models/avis.rb @@ -53,6 +53,7 @@ class Avis < ApplicationRecord scope :termine_expired, -> { unscope(:joins).where(dossier: Dossier.termine_expired) } scope :en_construction_expired, -> { unscope(:joins).where(dossier: Dossier.en_construction_expired) } scope :not_hidden_by_administration, -> { where(dossiers: { hidden_by_administration_at: nil }) } + scope :not_revoked, -> { where(revoked_at: nil) } # The form allows subtmitting avis requests to several emails at once, # hence this virtual attribute. attr_accessor :emails diff --git a/spec/controllers/experts/avis_controller_spec.rb b/spec/controllers/experts/avis_controller_spec.rb index c41556250..6b5826e9e 100644 --- a/spec/controllers/experts/avis_controller_spec.rb +++ b/spec/controllers/experts/avis_controller_spec.rb @@ -15,6 +15,13 @@ describe Experts::AvisController, type: :controller do let!(:avis_without_answer) { create(:avis, dossier:, claimant:, experts_procedure:) } let!(:avis_with_answer) { create(:avis, dossier:, claimant:, experts_procedure:, answer: 'yop') } + let!(:revoked_procedure) { create(:procedure, :published, instructeurs: [instructeur]) } + let!(:revoked_dossier) { create(:dossier, :en_construction, procedure: revoked_procedure) } + let!(:revoked_experts_procedure) { create(:experts_procedure, expert: expert, procedure: revoked_procedure) } + let!(:revoked_avis) do + create(:avis, dossier: revoked_dossier, claimant:, experts_procedure: revoked_experts_procedure, introduction: 'revoked', revoked_at: Time.zone.now) + end + before do sign_in(expert.user) end @@ -23,8 +30,8 @@ describe Experts::AvisController, type: :controller do before { get :index } it do expect(response).to have_http_status(:success) - expect(assigns(:avis_by_procedure).keys).to include(procedure) - expect(assigns(:avis_by_procedure).keys).not_to include(another_procedure) + expect(assigns(:avis_by_procedure).keys).to match_array(procedure) + expect(assigns(:avis_by_procedure).values.flatten).to match_array([avis_without_answer, avis_with_answer]) end end