source: trunk/t/33_supersearch_advanced_search_utm.t @ 562

Last change on this file since 562 was 562, checked in by kake, 17 years ago

Pull out common testing code into OpenGuides::Test

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 4.9 KB
Line 
1use strict;
2use CGI::Wiki::Setup::SQLite;
3use Config::Tiny;
4use OpenGuides::SuperSearch;
5use OpenGuides::Test;
6use Test::More;
7
8eval { require DBD::SQLite; };
9if ( $@ ) {
10    plan skip_all => "DBD::SQLite not installed";
11}
12
13eval { require Plucene; };
14if ( $@ ) {
15    plan skip_all => "Plucene not installed";
16}
17
18eval { require Geo::Coordinates::UTM; };
19if ( $@ ) {
20    plan skip_all => "Geo::Coordinates::UTM not installed";
21}
22
23plan tests => 4;
24
25# Clear out the database from any previous runs.
26unlink "t/node.db";
27unlink <t/indexes/*>;
28CGI::Wiki::Setup::SQLite::setup( { dbname => "t/node.db" } );
29
30my $config = Config::Tiny->new;
31$config->{_} = {
32                 dbtype             => "sqlite",
33                 dbname             => "t/node.db",
34                 indexing_directory => "t/indexes",
35                 script_name        => "wiki.cgi",
36                 script_url         => "http://example.com/",
37                 site_name          => "Test Site",
38                 template_path      => "./templates",
39                 use_plucene        => 1,
40                 geo_handler        => 3,
41                 ellipsoid          => "Airy",
42           };
43my $search = OpenGuides::SuperSearch->new( config => $config );
44my $guide = OpenGuides->new( config => $config );
45
46# Write some data.
47OpenGuides::Test->write_data(
48                              guide      => $guide,
49                              node       => "Crabtree Tavern",
50                              latitude   => 51.482385,
51                              longitude  => -0.221743,
52                              categories => "Pubs",
53                            );
54
55OpenGuides::Test->write_data(
56                              guide      => $guide,
57                              node       => "Blue Anchor",
58                              latitude   => 51.489176,
59                              longitude  => -0.229488,
60                              categories => "Pubs",
61                            );
62
63OpenGuides::Test->write_data(
64                              guide      => $guide,
65                              node       => "Star Tavern",
66                              latitude   => 51.498043,
67                              longitude  => -0.154247,
68                              categories => "Pubs",
69                            );
70
71OpenGuides::Test->write_data(
72                              guide      => $guide,
73                              node       => "Hammersmith Bridge",
74                              latitude   => 51.488135,
75                              longitude  => -0.228463,
76                            );
77
78# Sanity check.
79print "# Distances should be round about:\n";
80my $locator = $guide->locator;
81foreach my $node ( "Blue Anchor", "Crabtree Tavern", "Hammersmith Bridge"){
82    print "# $node: " . $locator->distance( from_x  => 692756,
83                                            from_y  => 5706917,
84                                            to_node => $node ) . "\n";
85}
86
87# Check that a lat/long distance search finds them.
88my %tt_vars = $search->run(
89                            return_tt_vars => 1,
90                            vars => {
91                                      latitude     => 51.484320,
92                                      longitude    => -0.223484,
93                                      latlong_dist => 1000,
94                                    },
95                          );
96my @ordered = map { $_->{name} } @{ $tt_vars{results} || [] };
97my @found = sort @ordered;
98is_deeply( \@found,
99           [ "Blue Anchor", "Crabtree Tavern", "Hammersmith Bridge" ],
100           "distance search finds the right things" );
101is_deeply( \@ordered,
102           [ "Crabtree Tavern", "Hammersmith Bridge", "Blue Anchor" ],
103           "...and returns them in the right order" );
104
105%tt_vars = $search->run(
106                         return_tt_vars => 1,
107                         vars => {
108                                   latitude     => 51.484320,
109                                   longitude    => -0.223484,
110                                   latlong_dist => 1000,
111                                   search       => " ",
112                                 },
113                       );
114@ordered = map { $_->{name} } @{ $tt_vars{results} || [] };
115@found = sort @ordered;
116is_deeply( \@found,
117           [ "Blue Anchor", "Crabtree Tavern", "Hammersmith Bridge" ],
118           "...still works if whitespace-only search text supplied" );
119
120%tt_vars = $search->run(
121                     return_tt_vars => 1,
122                     vars => {
123                               latitude     => 51.484320,
124                               longitude    => -0.223484,
125                               latlong_dist => 1000,
126                               search       => "pubs",
127                             },
128                   );
129@found = sort map { $_->{name} } @{ $tt_vars{results} || [] };
130is_deeply( \@found, [ "Blue Anchor", "Crabtree Tavern", ],
131       "distance search in combination with text search works" );
Note: See TracBrowser for help on using the repository browser.