1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174
|
use strict;
use Wiki::Toolkit::Setup::SQLite;
use OpenGuides::Config;
use OpenGuides;
use OpenGuides::Test;
use Test::More;
eval { require DBD::SQLite; };
if ( $@ ) {
my ($error) = $@ =~ /^(.*?)\n/;
plan skip_all => "DBD::SQLite could not be used - no database to test with. ($error)";
}
eval { require Plucene; };
if ( $@ ) {
plan skip_all => "Plucene not installed";
}
plan tests => 53;
# Clear out the database from any previous runs.
OpenGuides::Test::refresh_db();
my $config = OpenGuides::Config->new(
vars => {
dbtype => "sqlite",
dbname => "t/node.db",
indexing_directory => "t/indexes",
script_name => "wiki.cgi",
script_url => "http://example.com/",
site_name => "Test Site",
template_path => "./templates",
use_plucene => 1,
geo_handler => 1,
}
);
# First check that British National Grid will accept both OS X/Y and lat/long,
# and will store both however the data was given to it.
my $guide = OpenGuides->new( config => $config );
is( $guide->locator->x_field, "os_x", "correct x field" );
is( $guide->locator->y_field, "os_y", "correct y field" );
OpenGuides::Test->write_data(
guide => $guide,
node => "Crabtree Tavern",
os_x => 523465,
os_y => 177490,
categories => "Pubs",
);
my %data = $guide->wiki->retrieve_node( "Crabtree Tavern" );
is( $data{metadata}{os_x}[0], 523465, "os_x stored correctly" );
is( $data{metadata}{os_y}[0], 177490, "os_y stored correctly" );
ok( defined $data{metadata}{latitude}[0], "latitude stored" );
ok( defined $data{metadata}{longitude}[0], "longitude stored" );
OpenGuides::Test->write_data(
guide => $guide,
node => "El Sombrero",
latitude => 51.368,
longitude => -0.097,
categories => "Restaurants",
);
%data = $guide->wiki->retrieve_node( "El Sombrero" );
ok( defined $data{metadata}{os_x}[0], "os_x stored" );
like( $data{metadata}{os_x}[0], qr/^\d+$/, "...as integer" );
ok( defined $data{metadata}{os_y}[0], "os_y stored" );
like( $data{metadata}{os_y}[0], qr/^\d+$/, "...as integer" );
is( $data{metadata}{latitude}[0], 51.368, "latitude stored correctly" );
is( $data{metadata}{longitude}[0], -0.097, "longitude stored correctly" );
eval {
local $SIG{__WARN__} = sub { die $_[0]; };
OpenGuides::Test->write_data(
guide => $guide,
node => "Locationless Page 1",
);
};
is( $@, "",
"commit doesn't warn when using BNG and node has no location data" );
%data = $guide->wiki->retrieve_node( "Locationless Page 1" );
ok( !defined $data{metadata}{latitude}[0], "...and latitude not stored" );
ok( !defined $data{metadata}{longitude}[0], "...nor longitude" );
ok( !defined $data{metadata}{os_x}[0], "...nor os_x" );
ok( !defined $data{metadata}{os_y}[0], "...nor os_y" );
ok( !defined $data{metadata}{osie_x}[0], "...nor osie_x" );
ok( !defined $data{metadata}{osie_y}[0], "...nor osie_y" );
# Now check Irish National Grid.
$config->geo_handler( 2 );
$guide = OpenGuides->new( config => $config );
is( $guide->locator->x_field, "osie_x", "correct x field" );
is( $guide->locator->y_field, "osie_y", "correct y field" );
OpenGuides::Test->write_data(
guide => $guide,
node => "I Made This Place Up",
osie_x => 100000,
osie_y => 200000,
);
%data = $guide->wiki->retrieve_node( "I Made This Place Up" );
is( $data{metadata}{osie_x}[0], 100000, "osie_x stored correctly" );
is( $data{metadata}{osie_y}[0], 200000, "osie_y stored correctly" );
ok( defined $data{metadata}{latitude}[0], "latitude stored" );
ok( defined $data{metadata}{longitude}[0], "longitude stored" );
OpenGuides::Test->write_data(
guide => $guide,
node => "Brambles Coffee Shop",
latitude => 54.6434,
longitude => -5.6731,
);
%data = $guide->wiki->retrieve_node( "Brambles Coffee Shop" );
ok( defined $data{metadata}{osie_x}[0], "osie_x stored" );
like( $data{metadata}{osie_x}[0], qr/^\d+$/, "...as integer" );
ok( defined $data{metadata}{osie_y}[0], "osie_y stored" );
like( $data{metadata}{osie_y}[0], qr/^\d+$/, "...as integer" );
is( $data{metadata}{latitude}[0], 54.6434, "latitude stored correctly" );
is( $data{metadata}{longitude}[0], -5.6731, "longitude stored correctly" );
eval {
local $SIG{__WARN__} = sub { die $_[0]; };
OpenGuides::Test->write_data(
guide => $guide,
node => "Locationless Page 2",
);
};
is( $@, "",
"commit doesn't warn when using ING and node has no location data" );
%data = $guide->wiki->retrieve_node( "Locationless Page 2" );
ok( !defined $data{metadata}{latitude}[0], "...and latitude not stored" );
ok( !defined $data{metadata}{longitude}[0], "...nor longitude" );
ok( !defined $data{metadata}{os_x}[0], "...nor os_x" );
ok( !defined $data{metadata}{os_y}[0], "...nor os_y" );
ok( !defined $data{metadata}{osie_x}[0], "...nor osie_x" );
ok( !defined $data{metadata}{osie_y}[0], "...nor osie_y" );
# Finally check UTM.
$config->geo_handler( 3 );
$config->ellipsoid( "Airy" );
$guide = OpenGuides->new( config => $config );
is( $guide->locator->x_field, "easting", "correct x field" );
is( $guide->locator->y_field, "northing", "correct y field" );
OpenGuides::Test->write_data(
guide => $guide,
node => "London Aquarium",
latitude => 51.502,
longitude => -0.118,
);
%data = $guide->wiki->retrieve_node( "London Aquarium" );
ok( defined $data{metadata}{easting}[0], "easting stored" );
like( $data{metadata}{easting}[0], qr/^\d+$/, "...as integer" );
ok( defined $data{metadata}{northing}[0], "northing stored" );
like( $data{metadata}{northing}[0], qr/^\d+$/, "...as integer" );
is( $data{metadata}{latitude}[0], 51.502, "latitude stored correctly" );
is( $data{metadata}{longitude}[0], -0.118, "longitude stored correctly" );
eval {
local $SIG{__WARN__} = sub { die $_[0]; };
OpenGuides::Test->write_data(
guide => $guide,
node => "Locationless Page 3",
);
};
is( $@, "",
"commit doesn't warn when using UTM and node has no location data" );
%data = $guide->wiki->retrieve_node( "Locationless Page 3" );
ok( !defined $data{metadata}{latitude}[0], "...and latitude not stored" );
ok( !defined $data{metadata}{longitude}[0], "...nor longitude" );
ok( !defined $data{metadata}{os_x}[0], "...nor os_x" );
ok( !defined $data{metadata}{os_y}[0], "...nor os_y" );
ok( !defined $data{metadata}{osie_x}[0], "...nor osie_x" );
ok( !defined $data{metadata}{osie_y}[0], "...nor osie_y" );
|