diff --git a/app/mailers/mailer_ability.rb b/app/mailers/mailer_ability.rb index 5cd5574cd9..50d9a869a1 100644 --- a/app/mailers/mailer_ability.rb +++ b/app/mailers/mailer_ability.rb @@ -11,5 +11,15 @@ def initialize(user, **params) @params = params can :receive, :all + + cannot :receive, 'request_mailer#old_unclassified_updated' do + info_request.created_at <= 6.months.ago + end + end + + private + + def info_request + params[:info_request] end end diff --git a/doc/CHANGES.md b/doc/CHANGES.md index eff6059035..e320c693d2 100644 --- a/doc/CHANGES.md +++ b/doc/CHANGES.md @@ -2,7 +2,9 @@ ## Highlighted Features -Add additional InfoRequest embargo scopes (Graeme Porteous) +* Prevent request classification notifications from being set if request is + older than 6 months (Graeme Porteous) +* Add additional InfoRequest embargo scopes (Graeme Porteous) # 0.45.3.1 diff --git a/spec/mailers/mailer_ability_spec.rb b/spec/mailers/mailer_ability_spec.rb index b21abc0195..849879ab67 100644 --- a/spec/mailers/mailer_ability_spec.rb +++ b/spec/mailers/mailer_ability_spec.rb @@ -87,7 +87,17 @@ describe 'RequestMailer#old_unclassified_updated' do let(:name) { 'request_mailer#old_unclassified_updated' } - it { expect(ability).to be_able_to(:receive, name) } + let(:ability) { MailerAbility.new(user, info_request: info_request) } + + context 'when info request when sent less than 6 months ago' do + let(:info_request) { double(:InfoRequest, created_at: 6.months.ago + 1) } + it { expect(ability).to be_able_to(:receive, name) } + end + + context 'when info request when sent more than 6 months ago' do + let(:info_request) { double(:InfoRequest, created_at: 6.months.ago) } + it { expect(ability).not_to be_able_to(:receive, name) } + end end describe 'RequestMailer#not_clarified_alert' do diff --git a/spec/mailers/previews/request_mailer_preview.rb b/spec/mailers/previews/request_mailer_preview.rb index 54e96318e5..5346d24e7b 100644 --- a/spec/mailers/previews/request_mailer_preview.rb +++ b/spec/mailers/previews/request_mailer_preview.rb @@ -43,7 +43,8 @@ def info_request url_title: 'a_request', user: User.first, public_body: PublicBody.first, - described_state: 'successful' + described_state: 'successful', + created_at: Time.now ) end diff --git a/spec/mailers/request_mailer_spec.rb b/spec/mailers/request_mailer_spec.rb index 0de4bd9b33..c2c953690c 100644 --- a/spec/mailers/request_mailer_spec.rb +++ b/spec/mailers/request_mailer_spec.rb @@ -542,6 +542,11 @@ def sent_alert_params(request, type) expect(mail.subject).to eq('Someone has updated the status of your request') end + it 'delivers the email' do + mail.deliver_now + expect(ActionMailer::Base.deliveries).to_not be_empty + end + context "when the user does not use default locale" do before do info_request.user.locale = 'es' @@ -554,6 +559,21 @@ def sent_alert_params(request, type) end end + context 'when the info request was created over 6 months ago' do + let(:info_request) do + FactoryBot.create( + :info_request, + user: user, title: "Test request", public_body: public_body, + url_title: "test_request", created_at: 6.months.ago + ) + end + + it 'does not deliver the email' do + mail.deliver_now + expect(ActionMailer::Base.deliveries).to be_empty + end + end + it 'should tell them what status was picked' do expect(mail.body).to match(/"refused."/) end