Browse Source

fix choice decision persisted

pull/1670/head
Phil Lee 3 years ago committed by Kat
parent
commit
8da99eb51a
  1. 4
      app/controllers/bulk_upload_lettings_resume_controller.rb
  2. 31
      app/models/forms/bulk_upload_lettings_resume/chosen.rb
  3. 16
      app/models/forms/bulk_upload_lettings_resume/confirm.rb
  4. 12
      app/models/forms/bulk_upload_lettings_resume/fix_choice.rb
  5. 14
      app/views/bulk_upload_lettings_resume/chosen.html.erb
  6. 24
      spec/requests/bulk_upload_lettings_resume_controller_spec.rb

4
app/controllers/bulk_upload_lettings_resume_controller.rb

@ -11,6 +11,8 @@ class BulkUploadLettingsResumeController < ApplicationController
@bulk_upload = current_user.bulk_uploads.find(params[:id])
@soft_errors_only = params[:soft_errors_only] == "true"
return redirect_to form.preflight_redirect unless form.preflight_valid?
render form.view_path
end
@ -30,6 +32,8 @@ private
@form ||= case params[:page]
when "fix-choice"
Forms::BulkUploadLettingsResume::FixChoice.new(form_params.merge(bulk_upload: @bulk_upload))
when "chosen"
Forms::BulkUploadLettingsResume::Chosen.new(form_params.merge(bulk_upload: @bulk_upload))
when "confirm"
Forms::BulkUploadLettingsResume::Confirm.new(form_params.merge(bulk_upload: @bulk_upload))
else

31
app/models/forms/bulk_upload_lettings_resume/chosen.rb

@ -0,0 +1,31 @@
module Forms
module BulkUploadLettingsResume
class Chosen
include ActiveModel::Model
include ActiveModel::Attributes
include Rails.application.routes.url_helpers
attribute :bulk_upload
def view_path
"bulk_upload_lettings_resume/chosen"
end
def back_path
lettings_logs_path
end
def next_path
lettings_logs_path
end
def save!
true
end
def preflight_valid?
true
end
end
end
end

16
app/models/forms/bulk_upload_lettings_resume/confirm.rb

@ -20,11 +20,23 @@ module Forms
end
def save!
processor = BulkUpload::Processor.new(bulk_upload:)
processor.approve
ApplicationRecord.transaction do
processor = BulkUpload::Processor.new(bulk_upload:)
processor.approve
bulk_upload.update!(choice: "create-fix-inline")
end
true
end
def preflight_valid?
bulk_upload.choice != "create-fix-inline"
end
def preflight_redirect
page_bulk_upload_lettings_resume_path(bulk_upload, :chosen)
end
end
end
end

12
app/models/forms/bulk_upload_lettings_resume/fix_choice.rb

@ -46,7 +46,17 @@ module Forms
end
def save!
bulk_upload.update(choice:)
bulk_upload.update!(choice:) if choice == "upload-again"
true
end
def preflight_valid?
bulk_upload.choice != "create-fix-inline"
end
def preflight_redirect
page_bulk_upload_lettings_resume_path(bulk_upload, :chosen)
end
end
end

14
app/views/bulk_upload_lettings_resume/chosen.html.erb

@ -0,0 +1,14 @@
<% content_for :before_content do %>
<%= govuk_back_link href: @form.back_path %>
<% end %>
<div class="govuk-grid-row">
<div class="govuk-grid-column-two-thirds">
<span class="govuk-caption-l">Bulk upload for lettings (<%= @bulk_upload.year_combo %>)</span>
<h1 class="govuk-heading-l">You need to fix logs from your bulk upload</h1>
<p class="govuk-body">You have chosen to create logs from your recent bulk upload. To view and complete these logs, return to the list of lettings logs.</p>
<%= govuk_button_link_to "Return to lettings logs", lettings_logs_path %>
</div>
</div>

24
spec/requests/bulk_upload_lettings_resume_controller_spec.rb

@ -29,6 +29,16 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
expect(response.body).to include(bulk_upload.filename)
expect(response.body).not_to include("Cancel")
end
context "and previosuly told us to fix inline" do
let(:bulk_upload) { create(:bulk_upload, :lettings, user:, bulk_upload_errors:, choice: "create-fix-inline") }
it "redirects to chosen" do
get "/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice"
expect(response).to redirect_to("/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/chosen")
end
end
end
describe "GET /lettings-logs/bulk-upload-resume/:ID/fix-choice?soft_errors_only=true" do
@ -68,6 +78,8 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
patch "/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice", params: { form: { choice: "create-fix-inline" } }
expect(response).to redirect_to("/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/confirm")
expect(bulk_upload.reload.choice).to be_blank
end
end
end
@ -80,6 +92,16 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
expect(response.body).to include("Are you sure")
end
context "and previosuly told us to fix inline" do
let(:bulk_upload) { create(:bulk_upload, :lettings, user:, bulk_upload_errors:, choice: "create-fix-inline") }
it "redirects to chosen" do
get "/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/confirm"
expect(response).to redirect_to("/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/chosen")
end
end
end
describe "PATCH /lettings-logs/bulk-upload-resume/:ID/confirm" do
@ -92,6 +114,8 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
expect(mock_processor).to have_received(:approve)
expect(bulk_upload.reload.choice).to eql("create-fix-inline")
expect(response).to redirect_to("/lettings-logs/bulk-upload-results/#{bulk_upload.id}/resume")
end
end

Loading…
Cancel
Save