Browse Source

Add missing tests and cancel button

pull/1615/head
Kat 3 years ago
parent
commit
150f45a182
  1. 1
      app/controllers/bulk_upload_lettings_resume_controller.rb
  2. 1
      app/controllers/bulk_upload_sales_resume_controller.rb
  3. 2
      app/models/forms/bulk_upload_lettings_soft_validations_check/soft_errors_valid.rb
  4. 7
      app/views/bulk_upload_lettings_resume/fix_choice.html.erb
  5. 7
      app/views/bulk_upload_sales_resume/fix_choice.html.erb
  6. 5
      config/locales/en.yml
  7. 12
      spec/requests/bulk_upload_lettings_resume_controller_spec.rb
  8. 96
      spec/requests/bulk_upload_sales_resume_controller_spec.rb

1
app/controllers/bulk_upload_lettings_resume_controller.rb

@ -9,6 +9,7 @@ class BulkUploadLettingsResumeController < ApplicationController
def show def show
@bulk_upload = current_user.bulk_uploads.find(params[:id]) @bulk_upload = current_user.bulk_uploads.find(params[:id])
@soft_errors_only = params[:soft_errors_only] == "true"
render form.view_path render form.view_path
end end

1
app/controllers/bulk_upload_sales_resume_controller.rb

@ -9,6 +9,7 @@ class BulkUploadSalesResumeController < ApplicationController
def show def show
@bulk_upload = current_user.bulk_uploads.find(params[:id]) @bulk_upload = current_user.bulk_uploads.find(params[:id])
@soft_errors_only = params[:soft_errors_only] == "true"
render form.view_path render form.view_path
end end

2
app/models/forms/bulk_upload_lettings_soft_validations_check/soft_errors_valid.rb

@ -24,7 +24,7 @@ module Forms
def next_path def next_path
case soft_errors_valid case soft_errors_valid
when "yes" when "yes"
page_bulk_upload_lettings_resume_path(bulk_upload, page: "fix-choice") page_bulk_upload_lettings_resume_path(bulk_upload, page: "fix-choice", soft_errors_only: true)
when "no" when "no"
page_bulk_upload_lettings_soft_validations_check_path(bulk_upload, page: "confirm") page_bulk_upload_lettings_soft_validations_check_path(bulk_upload, page: "confirm")
else else

7
app/views/bulk_upload_lettings_resume/fix_choice.html.erb

@ -30,7 +30,12 @@
:name, :name,
legend: { hidden: true } %> legend: { hidden: true } %>
<%= f.govuk_submit %> <div class="govuk-button-group">
<%= f.govuk_submit %>
<% if @soft_errors_only %>
<%= govuk_button_link_to "Cancel", bulk_upload_lettings_soft_validations_check_url(@bulk_upload, page: "soft-errors-valid"), secondary: true %>
<% end %>
</div>
<% end %> <% end %>
</div> </div>
</div> </div>

7
app/views/bulk_upload_sales_resume/fix_choice.html.erb

@ -30,7 +30,12 @@
:name, :name,
legend: { hidden: true } %> legend: { hidden: true } %>
<%= f.govuk_submit %> <div class="govuk-button-group">
<%= f.govuk_submit %>
<% if @soft_errors_only %>
<%= govuk_button_link_to "Cancel", bulk_upload_sales_soft_validations_check_url(@bulk_upload, page: "soft-errors-valid"), secondary: true %>
<% end %>
</div>
<% end %> <% end %>
</div> </div>
</div> </div>

5
config/locales/en.yml

@ -81,6 +81,11 @@ en:
attributes: attributes:
soft_errors_valid: soft_errors_valid:
blank: You must select if there are errors in these fields blank: You must select if there are errors in these fields
forms/bulk_upload_sales_resume/fix_choice:
attributes:
choice:
blank: You must select how would you like to fix errors
inclusion: You must select one of the following options for how would like to fix errors
activerecord: activerecord:
errors: errors:

12
spec/requests/bulk_upload_lettings_resume_controller_spec.rb

@ -27,6 +27,18 @@ RSpec.describe BulkUploadLettingsResumeController, type: :request do
expect(response.body).to include("2022/23") expect(response.body).to include("2022/23")
expect(response.body).to include("How would you like to fix 2 errors?") expect(response.body).to include("How would you like to fix 2 errors?")
expect(response.body).to include(bulk_upload.filename) expect(response.body).to include(bulk_upload.filename)
expect(response.body).not_to include("Cancel")
end
end
describe "GET /lettings-logs/bulk-upload-resume/:ID/fix-choice?soft_errors_only=true" do
it "displays a cancel button" do
get "/lettings-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice?soft_errors_only=true"
expect(response).to be_successful
expect(response.body).to include("Bulk upload for lettings")
expect(response.body).to include("Cancel")
end end
end end

96
spec/requests/bulk_upload_sales_resume_controller_spec.rb

@ -0,0 +1,96 @@
require "rails_helper"
RSpec.describe BulkUploadSalesResumeController, type: :request do
let(:user) { create(:user) }
let(:bulk_upload) { create(:bulk_upload, :sales, user:, bulk_upload_errors:) }
let(:bulk_upload_errors) { create_list(:bulk_upload_error, 2) }
before do
sign_in user
end
describe "GET /sales-logs/bulk-upload-resume/:ID/start" do
it "redirects to choice page" do
get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/start"
expect(response).to redirect_to("/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice")
end
end
describe "GET /sales-logs/bulk-upload-resume/:ID/fix-choice" do
it "renders the page correctly" do
get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice"
expect(response).to be_successful
expect(response.body).to include("Bulk upload for sales")
expect(response.body).to include("2022/23")
expect(response.body).to include("How would you like to fix 2 errors?")
expect(response.body).to include(bulk_upload.filename)
expect(response.body).not_to include("Cancel")
end
end
describe "GET /sales-logs/bulk-upload-resume/:ID/fix-choice?soft_errors_only=true" do
it "displays a cancel button" do
get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice?soft_errors_only=true"
expect(response).to be_successful
expect(response.body).to include("Bulk upload for sales")
expect(response.body).to include("Cancel")
end
end
describe "PATCH /sales-logs/bulk-upload-resume/:ID/fix-choice" do
context "when no option selected" do
it "renders error message" do
patch "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice"
expect(response).to be_successful
expect(response.body).to include("You must select")
end
end
context "when upload again selected" do
it "sends them to relevant report" do
patch "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice", params: { form: { choice: "upload-again" } }
expect(response).to redirect_to("/sales-logs/bulk-upload-results/#{bulk_upload.id}")
end
end
context "when fix inline selected" do
it "sends them to confirm choice" do
patch "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/fix-choice", params: { form: { choice: "create-fix-inline" } }
expect(response).to redirect_to("/sales-logs/bulk-upload-resume/#{bulk_upload.id}/confirm")
end
end
end
describe "GET /sales-logs/bulk-upload-resume/:ID/confirm" do
it "renders page" do
get "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/confirm"
expect(response).to be_successful
expect(response.body).to include("Are you sure")
end
end
describe "PATCH /sales-logs/bulk-upload-resume/:ID/confirm" do
let(:mock_processor) { instance_double(BulkUpload::Processor, approve: nil) }
it "approves logs for creation" do
allow(BulkUpload::Processor).to receive(:new).with(bulk_upload:).and_return(mock_processor)
patch "/sales-logs/bulk-upload-resume/#{bulk_upload.id}/confirm"
expect(mock_processor).to have_received(:approve)
expect(response).to redirect_to("/sales-logs/bulk-upload-results/#{bulk_upload.id}/resume")
end
end
end
Loading…
Cancel
Save