diff options
author | Matthew Somerville <matthew@mysociety.org> | 2017-10-04 15:31:44 +0100 |
---|---|---|
committer | Matthew Somerville <matthew@mysociety.org> | 2017-10-05 13:07:41 +0100 |
commit | 861b3ace16097b5558d749210509afe4f0bdf70f (patch) | |
tree | 650eb3c0a8c0bbaeea63b4181bab62bda045dc43 | |
parent | aed38e8dfca568ef4aabd8e222c03c6ac7bb69ad (diff) |
Return page with "No results" if no ref found.
This lookup is often performed by inspectors with appcache switched on,
which means they were getting the intercepted Glitch page rather than a
404; give them a no results page instead.
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Around.pm | 8 | ||||
-rw-r--r-- | t/app/controller/around.t | 23 | ||||
-rw-r--r-- | templates/web/base/around/lookup_by_ref.html | 6 |
4 files changed, 23 insertions, 15 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index a36271bf7..3a39807e3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ - Admin improvements: - Character length limit can be placed on report detailed information #1848 - Inspector panel shows nearest address if available #1850 + - Return a 200 rather than 404 for ref ID lookup. * v2.2 (13th September 2017) - New features: diff --git a/perllib/FixMyStreet/App/Controller/Around.pm b/perllib/FixMyStreet/App/Controller/Around.pm index db5361247..30c023317 100644 --- a/perllib/FixMyStreet/App/Controller/Around.pm +++ b/perllib/FixMyStreet/App/Controller/Around.pm @@ -373,13 +373,11 @@ sub lookup_by_ref : Private { 0; }; - if ( $count == 0 ) { - $c->detach( '/page_error_404_not_found', [] ); - } elsif ( $count == 1 ) { - $c->res->redirect( $c->uri_for( '/report', $problems->first->id ) ); - } else { + if ($count > 1) { $c->stash->{ref} = $ref; $c->stash->{matching_reports} = [ $problems->all ]; + } elsif ($count == 1) { + $c->res->redirect( $c->uri_for( '/report', $problems->first->id ) ); } } diff --git a/t/app/controller/around.t b/t/app/controller/around.t index fbb4e76cd..cdaeaf363 100644 --- a/t/app/controller/around.t +++ b/t/app/controller/around.t @@ -92,15 +92,22 @@ foreach my $test ( }; } -subtest 'check non public reports are not displayed on around page' => sub { - my $params = { - postcode => 'EH1 1BB', - latitude => 55.9519637512, - longitude => -3.17492254484, - }; - my @edinburgh_problems = - $mech->create_problems_for_body( 5, 2651, 'Around page', $params ); +my @edinburgh_problems = $mech->create_problems_for_body( 5, 2651, 'Around page', { + postcode => 'EH1 1BB', + latitude => 55.9519637512, + longitude => -3.17492254484, +}); +subtest 'check lookup by reference' => sub { + $mech->get_ok('/'); + $mech->submit_form_ok( { with_fields => { pc => 'ref:12345' } }, 'bad ref'); + $mech->content_contains('Searching found no reports'); + my $id = $edinburgh_problems[0]->id; + $mech->submit_form_ok( { with_fields => { pc => "ref:$id" } }, 'good ref'); + is $mech->uri->path, "/report/$id", "redirected to report page"; +}; + +subtest 'check non public reports are not displayed on around page' => sub { $mech->get_ok('/'); FixMyStreet::override_config { ALLOWED_COBRANDS => [ { 'fixmystreet' => '.' } ], diff --git a/templates/web/base/around/lookup_by_ref.html b/templates/web/base/around/lookup_by_ref.html index aded05638..5c08a7ceb 100644 --- a/templates/web/base/around/lookup_by_ref.html +++ b/templates/web/base/around/lookup_by_ref.html @@ -1,7 +1,7 @@ [% pre_container_extra = INCLUDE 'around/postcode_form.html', pc = ref %] [% INCLUDE 'header.html', title = loc('Reporting a problem'), bodyclass = 'frontpage fullwidthpage' %] -<div class="tablewrapper"> +[% IF matching_reports %] <p>[% loc('We found more than one match for that problem reference:') %]</p> <ul class="pc_alternatives"> [% FOREACH report IN matching_reports %] @@ -13,6 +13,8 @@ </li> [% END %] </ul> -</div> + [% ELSE %] + <p>[% loc('Searching found no reports.') %]</p> +[% END %] [% INCLUDE 'footer.html' %] |