The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# This test is for testing Jifty.update() javascript function.

use strict;
use warnings;
use Jifty::Test::Dist tests => 29, actual_server => 1;
use Jifty::Test::WWW::Selenium;
use utf8;

my $server = Jifty::Test->make_server;
my $sel    = Jifty::Test::WWW::Selenium->rc_ok($server);
my $URL    = $server->started_ok;

{
    $sel->open_ok("/1-jifty-update.html");
    $sel->wait_for_text_present_ok("Jifty.update() tests");

    $sel->click_ok("region1");
    $sel->wait_for_text_present_ok("Region One");

    $sel->click_ok("region2");
    $sel->wait_for_text_present_ok("Region Two");

    # Update the same region path with different argument
    $sel->click_ok("region3");
    $sel->wait_for_text_present_ok("Hello, John");

    $sel->click_ok("region4");
    $sel->wait_for_text_present_ok("Hello, Smith");

    $sel->click_ok("append-region");
    $sel->wait_for_text_present_ok("Hello, World");
    my $src = $sel->get_html_source();

    like $src, qr{<p>Hello, Smith</p>.+<p>Hello, World</p>}is;

    $sel->click_ok("prepend-region");
    $sel->pause();
    $sel->wait_for_text_present_ok("Hello, World");

    $src = $sel->get_html_source();

    like $src, qr{<p>Hello, World</p>.+<p>Hello, Smith</p>.+<p>Hello, World</p>}is;

    $sel->click_ok("delete-region");
    $sel->pause();

    ok(! $sel->is_element_present("region-content"), "'content' region is deleted." );

}



{
    # One click updates 3 regions, and triggers an alert.

    $sel->open_ok('/region/multiupdate');
    $sel->click_ok('update');
    $sel->get_alert_ok();

    $sel->wait_for_text_present_ok("Region One");
    $sel->wait_for_text_present_ok("Region Two");
    $sel->wait_for_text_present_ok("Hello, Pony");
}

{
    # Make sure there's 100 <p> element.
    # For any region update, using Jifty.udpate(), javascript code in there are always executed
    # after HTML is all done. This is to test how many <p> elements the javascript code
    # can get. And ithe number should be 100.
    $sel->open_ok('/p/zero');
    $sel->click_ok('xpath=//input');
    $sel->pause();
    my $msg = $sel->get_alert();
    is($msg, "100");
}

$sel->stop;