aboutsummaryrefslogtreecommitdiffstats
path: root/t/cobrand/closest.t
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2011-12-05 11:52:25 +0000
committerStruan Donald <struan@exo.org.uk>2011-12-05 11:52:25 +0000
commita34bd2635ae720403a942ca2ef41a2b2951ba31f (patch)
treec00869a170f94d31b295cef8dad110485f278418 /t/cobrand/closest.t
parente816c4cbe34f138d0ce5659000955b75745da009 (diff)
add in some tests for closest address methods
Diffstat (limited to 't/cobrand/closest.t')
-rw-r--r--t/cobrand/closest.t77
1 files changed, 77 insertions, 0 deletions
diff --git a/t/cobrand/closest.t b/t/cobrand/closest.t
new file mode 100644
index 000000000..bb5dc8dae
--- /dev/null
+++ b/t/cobrand/closest.t
@@ -0,0 +1,77 @@
+use strict;
+use warnings;
+
+use Test::More;
+
+use mySociety::Locale;
+use FixMyStreet::App;
+
+use_ok 'FixMyStreet::Cobrand';
+
+mySociety::Locale::gettext_domain( 'FixMyStreet' );
+
+my $c = FixMyStreet::Cobrand::Default->new();
+
+my $user =
+ FixMyStreet::App->model('DB::User')
+ ->find_or_create( { email => 'test@example.com', name => 'Test User' } );
+ok $user, "created test user";
+
+my $dt = DateTime->new(
+ year => 2011,
+ month => 04,
+ day => 16,
+ hour => 15,
+ minute => 47,
+ second => 23
+);
+
+my $report = FixMyStreet::App->model('DB::Problem')->find_or_create(
+ {
+ postcode => 'SW1A 1AA',
+ council => '2504',
+ areas => ',105255,11806,11828,2247,2504,',
+ category => 'Other',
+ title => 'Test 2',
+ detail => 'Test 2 Detail',
+ used_map => 't',
+ name => 'Test User',
+ anonymous => 'f',
+ state => 'closed',
+ confirmed => $dt->ymd . ' ' . $dt->hms,
+ lang => 'en-gb',
+ service => '',
+ cobrand => 'default',
+ cobrand_data => '',
+ send_questionnaire => 't',
+ latitude => '51.5016605453401',
+ longitude => '-0.142497580865087',
+ user_id => $user->id,
+ }
+);
+my $report_id = $report->id;
+ok $report, "created test report - $report_id";
+
+$report->geocode( undef );
+
+ok !$report->geocode, 'no gecode entry for report';
+
+my $near = $c->find_closest( $report->latitude, $report->longitude, $report );
+
+ok $report->geocode, 'geocode entry added to report';
+
+like $near, qr/Constitution Hill/i, 'nearest street looks right';
+like $near, qr/Nearest postcode .*: SW1A 1AA/i, 'nearest postcode looks right';
+
+$near = $c->find_closest_address_for_rss( $report->latitude, $report->longitude, $report );
+
+like $near, qr/Constitution Hill/i, 'nearest street for RSS looks right';
+unlike $near, qr/Nearest postcode/i, 'no nearest postcode in RSS text';
+
+$report->geocode( undef );
+$near = $c->find_closest_address_for_rss( $report->latitude, $report->longitude, $report );
+
+ok !$near, 'no closest address for RSS if not cached';
+
+# all done
+done_testing();