use strict;
use OpenGuides;
use OpenGuides::Test;
use Test::More;
use Wiki::Toolkit::Setup::SQLite;
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 Test::HTML::Content; };
if ( $@ ) {
plan skip_all => "Test::HTML::Content not installed";
}
plan tests => 16;
# clear out database
OpenGuides::Test::refresh_db();
# Make a guide that works on latitude/longitude, and allows node images.
my $config = OpenGuides::Test->make_basic_config;
$config->geo_handler( 3 );
$config->ellipsoid( "WGS-84" );
$config->enable_node_image( 1 );
my $guide = OpenGuides->new( config => $config );
my $wiki = $guide->wiki;
# Write some data.
OpenGuides::Test->write_data(
guide => $guide,
node => "Crabtree Tavern",
content => "A pub.",
locales => "W6",
categories => "Pubs\r\nPub Food",
latitude => 51.5,
longitude => -0.05,
);
# Make sure the normal edit form doesn't think there's a conflict.
my $output = $guide->display_edit_form(
id => "Crabtree Tavern",
return_output => 1,
);
# Strip Content-Type header to stop Test::HTML::Content getting confused.
$output =~ s/^Content-Type.*[\r\n]+//m;
Test::HTML::Content::no_tag( $output, "div", { class => "warning_text" },
"Normal edit form doesn't contain warning_text" );
# Now try to commit some edits without giving the checksum.
$output = OpenGuides::Test->write_data(
guide => $guide,
node => "Crabtree Tavern",
content => "Still a pub.",
locales => "Hammersmith",
categories => "Beer Garden",
latitude => 41.5,
longitude => -0.04,
omit_checksum => 1,
return_output => 1,
);
# Strip Content-Type header to stop Test::HTML::Content getting confused.
$output =~ s/^Content-Type.*[\r\n]+//m;
Test::HTML::Content::tag_ok( $output, "div", { class => "warning_text" },
"Edit conflict form contains warning_text" );
like( $output, qr/A pub./s, "...and old content" );
like( $output, qr/Still a pub./s, "...and new content" );
like( $output, qr/W6/s, "...and old locales" );
like( $output, qr/Hammersmith/s, "...and new locales" );
like( $output, qr/Pubs/s, "...and old categories" );
like( $output, qr/Pub Food/s, "...both of them" );
like( $output, qr/Beer Garden/s, "...and new categories" );
# Bug #173 (edit conflict form doesn't let you edit everything).
Test::HTML::Content::tag_ok( $output, "input", { name => "node_image" },
"...and 'node_image' input box too" );
# Bug #48 (Edit conflict page erroneously converts lat/lon to os_x, os_y).
Test::HTML::Content::tag_ok( $output, "input", { name => "latitude" },
"UTM guide has 'latitude' input box in edit "
. "conflict" );
Test::HTML::Content::tag_ok( $output, "input", { name => "latitude",
value => 51.5 },
"...with correct value" );
Test::HTML::Content::tag_ok( $output, "input", { name => "longitude" },
"...and 'longitude' input box too" );
Test::HTML::Content::tag_ok( $output, "input", { name => "longitude",
value => -0.05 },
"...with correct value" );
like( $output, qr/41\.5/, "...new latitude is there too" );
like( $output, qr/-0\.04/, "...and new longitude" );