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 return false unless log && user
# Can only delete editable logs # 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 # Support users can delete any log
return true if user.support? return true if user.support?

2
app/policies/sales_log_policy.rb

@ -10,7 +10,7 @@ class SalesLogPolicy
return false unless log && user return false unless log && user
# Can only delete editable logs # 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 # Support users can delete any log
return true if user.support? 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 context "when log nil" do
before 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 end
it "does not allow deletion of log" do it "does not allow deletion of log" do
@ -18,7 +18,7 @@ RSpec.describe LettingsLogPolicy do
context "when user nil" do context "when user nil" do
before 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 end
it "does not allow deletion of log" do it "does not allow deletion of log" do
@ -26,21 +26,31 @@ RSpec.describe LettingsLogPolicy do
end end
end end
context "when collection period closed" do context "when collection period closed for editing" do
before 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 end
it "does not allow deletion of log" do 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) expect(policy).not_to permit(build(:user, :support), log)
end end
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 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 end
context "when not started" do 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) } let(:user_of_managing_org) { create(:user, :data_coordinator, organisation: log.managing_organisation) }
it "does not allow deletion of log" do 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) expect(policy).not_to permit(user, log)
end end
it "allows deletion of log" do 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) expect(policy).to permit(user_of_managing_org, log)
end end
@ -84,7 +94,7 @@ RSpec.describe LettingsLogPolicy do
let(:user) { create(:user) } let(:user) { create(:user) }
it "does not allow deletion of log" do 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) expect(policy).not_to permit(user, log)
end end

32
spec/policies/sales_log_policy_spec.rb

@ -8,7 +8,7 @@ RSpec.describe SalesLogPolicy do
context "when log nil" do context "when log nil" do
before 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 end
it "does not allow deletion of log" do it "does not allow deletion of log" do
@ -18,7 +18,7 @@ RSpec.describe SalesLogPolicy do
context "when user nil" do context "when user nil" do
before 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 end
it "does not allow deletion of log" do it "does not allow deletion of log" do
@ -26,21 +26,31 @@ RSpec.describe SalesLogPolicy do
end end
end end
context "when collection period closed" do context "when collection period closed for editing" do
before 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 end
it "does not allow deletion of log" do 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) expect(policy).not_to permit(build(:user, :support), log)
end end
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 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 end
context "when not started" do 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) } let(:user_of_owning_org) { create(:user, :data_coordinator, organisation: log.owning_organisation) }
it "does not allow deletion of log" do 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) expect(policy).not_to permit(user, log)
end end
it "allows deletion of log" do 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) expect(policy).to permit(user_of_owning_org, log)
end end
@ -76,7 +86,7 @@ RSpec.describe SalesLogPolicy do
let(:user) { create(:user, :support) } let(:user) { create(:user, :support) }
it "does allow deletion of log" do 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) expect(policy).to permit(user, log)
end end
@ -86,7 +96,7 @@ RSpec.describe SalesLogPolicy do
let(:user) { create(:user) } let(:user) { create(:user) }
it "does not allow deletion of log" do 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) expect(policy).not_to permit(user, log)
end end

Loading…
Cancel
Save