The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings; 

use Config;

use Test::More tests => 14;

use CGI::Test;

use constant WINDOWS => eval { $^O =~ /Win32|cygwin/ };

$ENV{PATH} = $Config{bin} . (WINDOWS ? ';' : ':') . $ENV{PATH};

my $BASE = "http://server:18/cgi-bin";
my $SCRIPT = WINDOWS ? "getform.bat" : "getform";

my $ct = CGI::Test->new(
	-base_url	=> $BASE,
	-cgi_dir	=> "t/cgi",
);

ok defined $ct, "Got CGI::Test object";
isa_ok $ct, 'CGI::Test', 'isa';

my $page = $ct->GET("$BASE/$SCRIPT");

ok $page->is_ok, "Page 1 OK";
ok !$page->is_error, "Page 1 error code " . $page->error_code;

my $form = $page->forms->[0];

is $form->method, 'GET', "Page 1 form method";

my @submit = $form->submits_named("Send");

is @submit, 1, "Number of Send submits in page 1";

my $months = $form->widget_by_name("months");
$months->select("Jan");

my $send = $form->submit_by_name("Send");
my $page2 = $send->press;

ok !$page2->is_error, "Page 2 error code " . $page2->error_code;
is $page2->form_count, 1, "Page 2 form count";

my $form2 = $page2->forms->[0];
@submit = $form2->submits_named("Send");

is @submit, 1, "Number of Send submits in page 2";
is $form2->method, 'GET', "Form 2 method";
like $form2->enctype, qr/urlencoded/, "Form 2 encoding";

my $months2 = $form2->widget_by_name("months");

ok $months2->is_selected("Jul"), "Form 2 Jul is selected";
ok $months2->is_selected("Jan"), "Form 2 Jan is selected";
ok !$months2->is_selected("Feb"), "Form 2 Feb is not selected";