From 96192a0292decd4167a00005599a552103fab36e Mon Sep 17 00:00:00 2001 From: M Somerville Date: Tue, 17 Nov 2020 19:35:56 +0000 Subject: [PATCH] Fix non-JS form when all extra questions answered. The code for deciding whether there were extra questions to answer would always run, even if all the extra questions had been answered. --- CHANGELOG.md | 2 ++ .../FixMyStreet/App/Controller/Report/New.pm | 5 ++++- t/app/controller/report_new_open311.t | 19 ++++++++++++++++--- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 458cb2e1517..431db6ff306 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,8 @@ ## Releases * Unreleased + - Bugfixes: + - Fix non-JS form when all extra questions answered. #3248 * v3.1 (16th November 2020) - Security: diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm index 19bceb4c3f4..7d0f8e318ad 100644 --- a/perllib/FixMyStreet/App/Controller/Report/New.pm +++ b/perllib/FixMyStreet/App/Controller/Report/New.pm @@ -1642,6 +1642,7 @@ sub check_for_category : Private { if ($disable_form_messages->{all}) { $c->stash->{disable_form_message} = $disable_form_messages->{all}; } elsif (my $questions = $disable_form_messages->{questions}) { + my $all_disable_qns_answered = 1; foreach my $question (@$questions) { my $answer = $c->get_param($question->{code}); my $message = $question->{message}; @@ -1651,10 +1652,12 @@ sub check_for_category : Private { $c->stash->{disable_form_message} = $message; } } + } else { + $all_disable_qns_answered = 0; } } if (!$c->stash->{disable_form_message}) { - $c->stash->{have_disable_qn_to_answer} = 1; + $c->stash->{have_disable_qn_to_answer} = !$all_disable_qns_answered; } } } diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t index ebbb0656716..8a55926a917 100644 --- a/t/app/controller/report_new_open311.t +++ b/t/app/controller/report_new_open311.t @@ -436,7 +436,7 @@ subtest "Category extras includes form disabling string" => sub { # Test new non-JS form disabling flow $mech->get_ok('/report/new?latitude=55.952055&longitude=-3.189579'); $mech->content_contains('name="submit_category_part_only"'); - $mech->submit_form_ok({ with_fields => { category => 'Pothole' } }); + $mech->submit_form_ok({ with_fields => { category => $contact4->category } }); $mech->content_contains('