diff --git a/app/controllers/bulk_upload_lettings_results_controller.rb b/app/controllers/bulk_upload_lettings_results_controller.rb index 90008bcd2..a7ea2605a 100644 --- a/app/controllers/bulk_upload_lettings_results_controller.rb +++ b/app/controllers/bulk_upload_lettings_results_controller.rb @@ -10,7 +10,9 @@ class BulkUploadLettingsResultsController < ApplicationController end def resume - @bulk_upload = current_user.bulk_uploads.lettings.find(params[:id]) + @bulk_upload = BulkUpload.lettings.find(params[:id]) + + authorize @bulk_upload if @bulk_upload.lettings_logs.in_progress.count.positive? set_bulk_upload_logs_filters diff --git a/app/models/log.rb b/app/models/log.rb index 807b45c8b..294ea9e88 100644 --- a/app/models/log.rb +++ b/app/models/log.rb @@ -137,7 +137,11 @@ class Log < ApplicationRecord end def creation_method - bulk_upload_id ? "bulk upload" : "single log" + bulk_uploaded? ? "bulk upload" : "single log" + end + + def bulk_uploaded? + bulk_upload_id.present? end private diff --git a/app/policies/bulk_upload_policy.rb b/app/policies/bulk_upload_policy.rb index 8c609e1d8..429661907 100644 --- a/app/policies/bulk_upload_policy.rb +++ b/app/policies/bulk_upload_policy.rb @@ -14,6 +14,10 @@ class BulkUploadPolicy owner? || same_org? || user.support? end + def resume? + owner? || same_org? || user.support? + end + private def owner? diff --git a/app/views/logs/edit.html.erb b/app/views/logs/edit.html.erb index 8a2a7cca8..81b87e861 100644 --- a/app/views/logs/edit.html.erb +++ b/app/views/logs/edit.html.erb @@ -39,9 +39,15 @@ <%= render "tasklist" %> <% if @log.completed? %> - <% if @log.lettings? %> + <% 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 %> - <% else %> + <% elsif @log.sales? %> <%= govuk_button_link_to "Back to sales logs", sales_logs_path %> <% end %> <% end %> diff --git a/spec/policies/bulk_upload_policy_spec.rb b/spec/policies/bulk_upload_policy_spec.rb index a99af5584..f45fc0457 100644 --- a/spec/policies/bulk_upload_policy_spec.rb +++ b/spec/policies/bulk_upload_policy_spec.rb @@ -3,7 +3,7 @@ require "rails_helper" RSpec.describe BulkUploadPolicy do subject(:policy) { described_class } - permissions :summary?, :show? do + permissions :summary?, :show?, :resume? do it "grants access to owner" do user = build(:user) bulk_upload = build(:bulk_upload, user:) diff --git a/spec/views/logs/edit.html.erb_spec.rb b/spec/views/logs/edit.html.erb_spec.rb index 74678b773..dd038448c 100644 --- a/spec/views/logs/edit.html.erb_spec.rb +++ b/spec/views/logs/edit.html.erb_spec.rb @@ -41,5 +41,31 @@ RSpec.describe "logs/edit.html.erb" do expect(fragment).to have_link(text: "Back to sales logs", href: "/sales-logs") end end + + context "when lettings log is bulk uploaded" do + let(:bulk_upload) { create(:bulk_upload, :lettings) } + let(:log) { create(:lettings_log, :completed, bulk_upload:) } + + it "has link 'Back to uploaded logs'" do + render + + fragment = Capybara::Node::Simple.new(rendered) + + expect(fragment).to have_link(text: "Back to uploaded logs", href: "/lettings-logs/bulk-upload-results/#{bulk_upload.id}/resume") + end + end + + context "when sales log is bulk uploaded" do + let(:bulk_upload) { create(:bulk_upload, :sales) } + let(:log) { create(:sales_log, :completed, bulk_upload:) } + + it "has link 'Back to uploaded logs'" do + render + + fragment = Capybara::Node::Simple.new(rendered) + + expect(fragment).to have_link(text: "Back to uploaded logs", href: "/sales-logs/bulk-upload-results/#{bulk_upload.id}/resume") + end + end end end