Merge pull request #11120 from colinux/fix-restore-brouillon-expired-by-automatic

ETQ usager je peux restorer un brouillon supprimé automatiquement car pas modifié automatiquement
This commit is contained in:
Colin Darie 2024-12-06 16:45:12 +00:00 committed by GitHub
commit f3bb274657
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 18 additions and 2 deletions

View file

@ -505,7 +505,7 @@ module Users
if action_name == 'update' || action_name == 'champ' if action_name == 'update' || action_name == 'champ'
Dossier.visible_by_user.or(Dossier.for_procedure_preview).or(Dossier.for_editing_fork) Dossier.visible_by_user.or(Dossier.for_procedure_preview).or(Dossier.for_editing_fork)
elsif action_name == 'restore' elsif action_name == 'restore'
Dossier.hidden_by_user Dossier.hidden_by_user.or(Dossier.hidden_by_not_modified_for_a_long_time)
elsif action_name == 'extend_conservation_and_restore' || (action_name == 'show' && request.format.pdf?) elsif action_name == 'extend_conservation_and_restore' || (action_name == 'show' && request.format.pdf?)
Dossier.visible_by_user.or(Dossier.hidden_by_expired) Dossier.visible_by_user.or(Dossier.hidden_by_expired)
else else

View file

@ -219,6 +219,7 @@ class Dossier < ApplicationRecord
scope :hidden_by_user, -> { where.not(hidden_by_user_at: nil) } scope :hidden_by_user, -> { where.not(hidden_by_user_at: nil) }
scope :hidden_by_administration, -> { where.not(hidden_by_administration_at: nil) } scope :hidden_by_administration, -> { where.not(hidden_by_administration_at: nil) }
scope :hidden_by_expired, -> { where.not(hidden_by_expired_at: nil) } scope :hidden_by_expired, -> { where.not(hidden_by_expired_at: nil) }
scope :hidden_by_not_modified_for_a_long_time, -> { hidden_by_expired.where(hidden_by_reason: :not_modified_for_a_long_time) }
scope :visible_by_user, -> { where(for_procedure_preview: false, hidden_by_user_at: nil, editing_fork_origin_id: nil, hidden_by_expired_at: nil) } scope :visible_by_user, -> { where(for_procedure_preview: false, hidden_by_user_at: nil, editing_fork_origin_id: nil, hidden_by_expired_at: nil) }
scope :visible_by_administration, -> { scope :visible_by_administration, -> {
state_not_brouillon state_not_brouillon
@ -852,7 +853,9 @@ class Dossier < ApplicationRecord
update(hidden_by_user_at: nil) update(hidden_by_user_at: nil)
end end
if !hidden_by_user? && !hidden_by_administration? if is_user?(author) && hidden_by_reason&.to_sym == :not_modified_for_a_long_time
update(hidden_by_expired_at: nil)
elsif !hidden_by_user? && !hidden_by_administration?
update(hidden_by_reason: nil) update(hidden_by_reason: nil)
elsif hidden_by_user? elsif hidden_by_user?
update(hidden_by_reason: :user_request) update(hidden_by_reason: :user_request)

View file

@ -1407,6 +1407,19 @@ describe Users::DossiersController, type: :controller do
expect(dossier.reload.hidden_by_user_at).to be_nil expect(dossier.reload.hidden_by_user_at).to be_nil
end end
end end
context 'when brouillon has been automatically expired' do
let(:dossier) { create(:dossier, :brouillon, user:) }
before {
dossier.hide_and_keep_track!(:automatic, :not_modified_for_a_long_time)
}
it 'must restore hidden attributes' do
expect { subject }.to change { dossier.reload.hidden_by_expired_at }.from(anything).to(nil)
expect(dossier.hidden_by_reason).to eq("not_modified_for_a_long_time")
end
end
end end
describe '#new' do describe '#new' do