fix(avis_controller): index do not linked to revoked avis

This commit is contained in:
simon lehericey 2022-11-28 15:14:35 +01:00 committed by LeSim
parent 6ad048955b
commit dcae06ae84
3 changed files with 11 additions and 3 deletions

View file

@ -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

View file

@ -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

View file

@ -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