Browse Source

Reset errors if a log gets successfully updated (#459)

* reset errors if a log gets successfully updated

* Add test
pull/460/head
kosiakkatrina 3 years ago committed by GitHub
parent
commit
f64a2b7d92
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      app/controllers/form_controller.rb
  2. 19
      spec/requests/form_controller_spec.rb

1
app/controllers/form_controller.rb

@ -8,6 +8,7 @@ class FormController < ApplicationController
@page = @case_log.form.get_page(params[:case_log][:page]) @page = @case_log.form.get_page(params[:case_log][:page])
responses_for_page = responses_for_page(@page) responses_for_page = responses_for_page(@page)
if @case_log.update(responses_for_page) if @case_log.update(responses_for_page)
session[:errors] = nil
if is_referrer_check_answers? && !@case_log.form.next_page(@page, @case_log).to_s.include?("value_check") if is_referrer_check_answers? && !@case_log.form.next_page(@page, @case_log).to_s.include?("value_check")
redirect_to(send("case_log_#{@case_log.form.subsection_for_page(@page).id}_check_answers_path", @case_log)) redirect_to(send("case_log_#{@case_log.form.subsection_for_page(@page).id}_check_answers_path", @case_log))
elsif @case_log.form.is_last_question?(@page, @case_log.form.subsection_for_page(@page), @case_log) elsif @case_log.form.is_last_question?(@page, @case_log.form.subsection_for_page(@page), @case_log)

19
spec/requests/form_controller_spec.rb

@ -120,16 +120,35 @@ RSpec.describe FormController, type: :request do
}, },
} }
end end
let(:valid_params) do
{
id: case_log.id,
case_log: {
page: page_id,
age1: valid_answer,
},
}
end
before do before do
post "/logs/#{case_log.id}/form", params: params post "/logs/#{case_log.id}/form", params: params
end end
context "with invalid answers" do context "with invalid answers" do
let(:page) { Capybara::Node::Simple.new(response.body) }
let(:answer) { 2000 } let(:answer) { 2000 }
let(:valid_answer) { 20 }
it "re-renders the same page with errors if validation fails" do it "re-renders the same page with errors if validation fails" do
expect(response).to redirect_to("/logs/#{case_log.id}/#{page_id.dasherize}") expect(response).to redirect_to("/logs/#{case_log.id}/#{page_id.dasherize}")
follow_redirect!
expect(page).to have_content("There is a problem")
end
it "resets errors when fixed" do
post "/logs/#{case_log.id}/form", params: valid_params
get "/logs/#{case_log.id}/#{page_id.dasherize}"
expect(page).not_to have_content("There is a problem")
end end
end end

Loading…
Cancel
Save