Browse Source

Move actions to helper

pull/1620/head
Jack S 3 years ago
parent
commit
2fd65c6450
  1. 42
      app/helpers/log_actions_helper.rb
  2. 2
      app/policies/log_policy.rb
  3. 2
      app/views/logs/delete_confirmation.html.erb
  4. 22
      app/views/logs/edit.html.erb
  5. 24
      spec/policies/log_policy_spec.rb

42
app/helpers/log_actions_helper.rb

@ -0,0 +1,42 @@
module LogActionsHelper
include GovukLinkHelper
def edit_actions_for_log(log)
back = back_button_for(log)
delete = delete_button_for_log(log)
return if back.nil? && delete.nil?
content_tag(:div, class: "govuk-button-group") do
safe_join([back, delete])
end
end
private
def back_button_for(log)
if log.completed?
if log.bulk_uploaded?
if log.lettings?
govuk_button_link_to "Back to uploaded logs", resume_bulk_upload_lettings_result_path(log.bulk_upload)
else
govuk_button_link_to "Back to uploaded logs", resume_bulk_upload_sales_result_path(log.bulk_upload)
end
elsif log.lettings?
govuk_button_link_to "Back to lettings logs", lettings_logs_path
elsif log.sales?
govuk_button_link_to "Back to sales logs", sales_logs_path
end
end
end
def delete_button_for_log(log)
if LogPolicy.new(current_user, log).destroy?
govuk_button_link_to(
"Delete log",
lettings_log_delete_confirmation_path(log),
warning: true,
)
end
end
end

2
app/policies/log_policy.rb

@ -7,6 +7,8 @@ class LogPolicy
end end
def destroy? def destroy?
return false unless log && user
# Return false if the log is not editable. # Return false if the log is not editable.
return false unless log.collection_period_open? return false unless log.collection_period_open?

2
app/views/logs/delete_confirmation.html.erb

@ -16,7 +16,7 @@
<%= govuk_button_to( <%= govuk_button_to(
"Delete this log", "Delete this log",
@log.lettings? ? lettings_log_path(@log) : sales_log_path(@log), @log.lettings? ? lettings_log_path(@log) : sales_log_path(@log),
method: :delete method: :delete,
) %> ) %>
<%= govuk_button_link_to( <%= govuk_button_link_to(
"Cancel", "Cancel",

22
app/views/logs/edit.html.erb

@ -38,26 +38,6 @@
<%= render "tasklist" %> <%= render "tasklist" %>
<% if @log.completed? %> <%= edit_actions_for_log(@log) %>
<% if @log.bulk_uploaded? %>
<% if @log.lettings? %>
<%= govuk_button_link_to "Back to uploaded logs", resume_bulk_upload_lettings_result_path(@log.bulk_upload) %>
<% else %>
<%= govuk_button_link_to "Back to uploaded logs", resume_bulk_upload_sales_result_path(@log.bulk_upload) %>
<% end %>
<% elsif @log.lettings? %>
<%= govuk_button_link_to "Back to lettings logs", lettings_logs_path %>
<% elsif @log.sales? %>
<%= govuk_button_link_to "Back to sales logs", sales_logs_path %>
<% end %>
<% end %>
<% if LogPolicy.new(current_user, @log).destroy? %>
<%= govuk_button_link_to(
"Delete log",
lettings_log_delete_confirmation_path(@log),
warning: true,
) %>
<% end %>
</div> </div>
</div> </div>

24
spec/policies/log_policy_spec.rb

@ -6,6 +6,26 @@ RSpec.describe LogPolicy do
permissions :destroy? do permissions :destroy? do
let(:log) { create(:lettings_log, :setup_completed) } let(:log) { create(:lettings_log, :setup_completed) }
context "when log nil" do
before do
allow(log).to receive(:collection_period_open?).and_return(false)
end
it "does not allow deletion of log" do
expect(policy).not_to permit(build(:user, :support), nil)
end
end
context "when user nil" do
before do
allow(log).to receive(:collection_period_open?).and_return(false)
end
it "does not allow deletion of log" do
expect(policy).not_to permit(nil, build(:lettings_log, :setup_completed))
end
end
context "when collection period closed" do context "when collection period closed" do
before do before do
allow(log).to receive(:collection_period_open?).and_return(false) allow(log).to receive(:collection_period_open?).and_return(false)
@ -14,7 +34,7 @@ RSpec.describe LogPolicy do
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?)
expect(policy).not_to permit(nil, log) expect(policy).not_to permit(build(:user, :support), log)
end end
end end
@ -32,7 +52,7 @@ RSpec.describe LogPolicy do
expect(log).to receive(:setup_completed?) expect(log).to receive(:setup_completed?)
expect(log).to receive(:collection_period_open?) expect(log).to receive(:collection_period_open?)
expect(policy).not_to permit(nil, log) expect(policy).not_to permit(build(:user, :support), log)
end end
end end

Loading…
Cancel
Save