aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--perllib/FixMyStreet/App/Controller/Report/New.pm10
-rw-r--r--t/app/controller/report_new_open311.t19
3 files changed, 26 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 17e39c6f3..e9c5605a2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -30,6 +30,7 @@
- Do not have bootstrap run sudo commands. #2930
- Fix lookups in templates of categories with &s.
- Fix a few obscure asset layer changing issues.
+ - Fix multiple disable messages for dropdown answers
- Admin improvements:
- Display user name/email for contributed as reports. #2990
- Interface for enabling anonymous reports for certain categories. #2989
diff --git a/perllib/FixMyStreet/App/Controller/Report/New.pm b/perllib/FixMyStreet/App/Controller/Report/New.pm
index a00251171..e7b4d70a7 100644
--- a/perllib/FixMyStreet/App/Controller/Report/New.pm
+++ b/perllib/FixMyStreet/App/Controller/Report/New.pm
@@ -332,12 +332,14 @@ sub disable_form_message : Private {
my %category;
foreach my $opt (@{$_->{values}}) {
if ($opt->{disable}) {
- $category{message} = $opt->{disable_message} || $_->{datatype_description};
- $category{code} = $_->{code};
- push @{$category{answers}}, $opt->{key};
+ my $message = $opt->{disable_message} || $_->{datatype_description};
+ $category{$message} ||= {};
+ $category{$message}->{message} = $message;
+ $category{$message}->{code} = $_->{code};
+ push @{$category{$message}->{answers}}, $opt->{key};
}
}
- push @{$out{questions}}, \%category if %category;
+ push @{$out{questions}}, $_ for values %category;
}
}
diff --git a/t/app/controller/report_new_open311.t b/t/app/controller/report_new_open311.t
index 08435fb2b..7cd6dca09 100644
--- a/t/app/controller/report_new_open311.t
+++ b/t/app/controller/report_new_open311.t
@@ -394,6 +394,14 @@ subtest "Category extras includes form disabling string" => sub {
$contact4->push_extra_fields({ datatype_description => 'Please please ring', description => 'Is it dangerous?', code => 'dangerous',
variable => 'true', order => '0', values => [ { name => 'Yes', key => 'yes', disable => 1 }, { name => 'No', key => 'no' } ]
});
+ $contact4->push_extra_fields({ datatype_description => 'Please ring different numbers', description => 'What sort of dangerous?', code => 'danger_type',
+ variable => 'true', order => '0', values => [
+ { name => 'slightly', key => 'slightly', disable => 1, disable_message => 'Ring the slightly number' },
+ { name => 'very', key => 'very', disable => 1, disable_message => 'Ring the very number' },
+ { name => 'extremely', key => 'extremely', disable => 1, disable_message => 'Ring the very number' },
+ { name => 'No', key => 'no' }
+ ]
+ });
$contact4->update;
for (
{ url => '/report/new/ajax?' },
@@ -401,6 +409,7 @@ subtest "Category extras includes form disabling string" => sub {
) {
my $json = $mech->get_ok_json($_->{url} . '&latitude=55.952055&longitude=-3.189579');
my $output = $json->{by_category} ? $json->{by_category}{Pothole}{disable_form} : $json->{disable_form};
+ $output->{questions} = [ sort { $a->{message} cmp $b->{message} } @{ $output->{questions} } ];
is_deeply $output, {
all => 'Please ring us!',
questions => [
@@ -409,6 +418,16 @@ subtest "Category extras includes form disabling string" => sub {
code => 'dangerous',
answers => [ 'yes' ],
},
+ {
+ message => 'Ring the slightly number',
+ code => 'danger_type',
+ answers => [ 'slightly' ],
+ },
+ {
+ message => 'Ring the very number',
+ code => 'danger_type',
+ answers => [ 'very', 'extremely' ],
+ },
],
};
}