Browse Source

Make log deletion use edit cut-off date, not creation cut-off date. (#3388)

main v0.6.21
Oscar Richardson 7 days ago committed by GitHub
parent
commit
063d82cd4f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      app/policies/lettings_log_policy.rb
  2. 2
      app/policies/sales_log_policy.rb
  3. 30
      spec/policies/lettings_log_policy_spec.rb
  4. 32
      spec/policies/sales_log_policy_spec.rb

2
app/policies/lettings_log_policy.rb

@ -10,7 +10,7 @@ class LettingsLogPolicy
return false unless log && user
# Can only delete editable logs
return false unless log.collection_period_open?
return false unless log.collection_period_open_for_editing?
# Support users can delete any log
return true if user.support?

2
app/policies/sales_log_policy.rb

@ -10,7 +10,7 @@ class SalesLogPolicy
return false unless log && user
# Can only delete editable logs
return false unless log.collection_period_open?
return false unless log.collection_period_open_for_editing?
# Support users can delete any log
return true if user.support?

30
spec/policies/lettings_log_policy_spec.rb

@ -8,7 +8,7 @@ RSpec.describe LettingsLogPolicy do
context "when log nil" do
before do
allow(log).to receive(:collection_period_open?).and_return(false)
allow(log).to receive(:collection_period_open_for_editing?).and_return(false)
end
it "does not allow deletion of log" do
@ -18,7 +18,7 @@ RSpec.describe LettingsLogPolicy do
context "when user nil" do
before do
allow(log).to receive(:collection_period_open?).and_return(false)
allow(log).to receive(:collection_period_open_for_editing?).and_return(false)
end
it "does not allow deletion of log" do
@ -26,21 +26,31 @@ RSpec.describe LettingsLogPolicy do
end
end
context "when collection period closed" do
context "when collection period closed for editing" do
before do
allow(log).to receive(:collection_period_open?).and_return(false)
allow(log).to receive(:collection_period_open_for_editing?).and_return(false)
end
it "does not allow deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).not_to permit(build(:user, :support), log)
end
end
context "when collection period open" do
context "when new logs can no longer be created but the log is still editable" do
before do
allow(log).to receive(:collection_period_open?).and_return(true)
allow(log).to receive_messages(collection_period_open?: false, collection_period_open_for_editing?: true)
end
it "allows deletion of log" do
expect(policy).to permit(build(:user, :support), log)
end
end
context "when collection period open for editing" do
before do
allow(log).to receive(:collection_period_open_for_editing?).and_return(true)
end
context "when not started" do
@ -60,13 +70,13 @@ RSpec.describe LettingsLogPolicy do
let(:user_of_managing_org) { create(:user, :data_coordinator, organisation: log.managing_organisation) }
it "does not allow deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).not_to permit(user, log)
end
it "allows deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).to permit(user_of_managing_org, log)
end
@ -84,7 +94,7 @@ RSpec.describe LettingsLogPolicy do
let(:user) { create(:user) }
it "does not allow deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).not_to permit(user, log)
end

32
spec/policies/sales_log_policy_spec.rb

@ -8,7 +8,7 @@ RSpec.describe SalesLogPolicy do
context "when log nil" do
before do
allow(log).to receive(:collection_period_open?).and_return(false)
allow(log).to receive(:collection_period_open_for_editing?).and_return(false)
end
it "does not allow deletion of log" do
@ -18,7 +18,7 @@ RSpec.describe SalesLogPolicy do
context "when user nil" do
before do
allow(log).to receive(:collection_period_open?).and_return(false)
allow(log).to receive(:collection_period_open_for_editing?).and_return(false)
end
it "does not allow deletion of log" do
@ -26,21 +26,31 @@ RSpec.describe SalesLogPolicy do
end
end
context "when collection period closed" do
context "when collection period closed for editing" do
before do
allow(log).to receive(:collection_period_open?).and_return(false)
allow(log).to receive(:collection_period_open_for_editing?).and_return(false)
end
it "does not allow deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).not_to permit(build(:user, :support), log)
end
end
context "when collection period open" do
context "when new logs can no longer be created but the log is still editable" do
before do
allow(log).to receive(:collection_period_open?).and_return(true)
allow(log).to receive_messages(collection_period_open?: false, collection_period_open_for_editing?: true)
end
it "allows deletion of log" do
expect(policy).to permit(build(:user, :support), log)
end
end
context "when collection period open for editing" do
before do
allow(log).to receive(:collection_period_open_for_editing?).and_return(true)
end
context "when not started" do
@ -60,13 +70,13 @@ RSpec.describe SalesLogPolicy do
let(:user_of_owning_org) { create(:user, :data_coordinator, organisation: log.owning_organisation) }
it "does not allow deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).not_to permit(user, log)
end
it "allows deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).to permit(user_of_owning_org, log)
end
@ -76,7 +86,7 @@ RSpec.describe SalesLogPolicy do
let(:user) { create(:user, :support) }
it "does allow deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).to permit(user, log)
end
@ -86,7 +96,7 @@ RSpec.describe SalesLogPolicy do
let(:user) { create(:user) }
it "does not allow deletion of log" do
expect(log).to receive(:collection_period_open?)
expect(log).to receive(:collection_period_open_for_editing?)
expect(policy).not_to permit(user, log)
end

Loading…
Cancel
Save