Skip to content

Commit

Permalink
fix using multiple disable messages on category questions
Browse files Browse the repository at this point in the history
Provide a stopper per disable message, rather than per question.
Previously there was one stopper per dropdown so only the last message
encountered was used.
  • Loading branch information
struan committed Sep 21, 2020
1 parent 193ff9c commit 75c205f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 4 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
10 changes: 6 additions & 4 deletions perllib/FixMyStreet/App/Controller/Report/New.pm
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}

Expand Down
19 changes: 19 additions & 0 deletions t/app/controller/report_new_open311.t
Original file line number Diff line number Diff line change
Expand Up @@ -394,13 +394,22 @@ 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?' },
{ url => '/report/new/category_extras?category=Pothole' },
) {
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 => [
Expand All @@ -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' ],
},
],
};
}
Expand Down

0 comments on commit 75c205f

Please sign in to comment.