#!/usr/bin/perl
use strict;
use warnings;
use Test::More tests => 14;
use WWW::Mechanize;
#use Test::HTML::Tidy;
my $SERVER = 'http://localhost:8080';
my $url = $SERVER;
my $mech = WWW::Mechanize->new;
$mech->get($url);
is $mech->status, 200, 'main page fetched';
like $mech->content, qr{Our languages}, 'content';
$mech->follow_link( text => 'calculator' );
is $mech->status, 200, 'calculator page fetched';
like $mech->content, qr{Calculator}, 'start page ok';
#html_tidy_ok $mech->content, "html is tidy";
my @forms = $mech->forms;
is @forms, 1, 'there is one form on this page';
# Shall we check if all the parts of the form are there?
is $forms[0]->action, "$SERVER/cgi/cgi_sum.pl", "action URL is correct";
my @inputs = $forms[0]->inputs;
is @inputs, 3, "there are 3 input fields on this form";
{
my $a = $forms[0]->find_input('a');
isa_ok $a, 'HTML::Form::TextInput';
my $b = $forms[0]->find_input('b');
isa_ok $b, 'HTML::Form::TextInput';
my $s = $forms[0]->find_input('submit');
isa_ok $s, 'HTML::Form::SubmitInput';
}
# Shall we check the name of the form ?
$mech->submit_form(
fields => {
a => 23,
b => 19,
},
);
like $mech->content, qr{<h1 align="center">42</h1>}, 'get 42';
#html_tidy_ok $mech->content, "result html is tidy";
$mech->back;
my @comps = (
[23, 19, 42],
[1, 2, 3],
[1, -1, 0],
);
foreach my $c (@comps) {
$mech->submit_form(
fields => {
a => $c->[0],
b => $c->[1],
},
);
like $mech->content,
qr{<h1 align="center">$c->[2]</h1>},
"$c->[0]+$c->[1]=$c->[2]";
$mech->back;
}
Output:
1..14
ok 1 - main page fetched
ok 2 - content
ok 3 - calculator page fetched
ok 4 - start page ok
ok 5 - there is one form on this page
ok 6 - action URL is correct
ok 7 - there are 3 input fields on this form
ok 8 - The object isa HTML::Form::TextInput
ok 9 - The object isa HTML::Form::TextInput
ok 10 - The object isa HTML::Form::SubmitInput
ok 11 - get 42
ok 12 - 23+19=42
ok 13 - 1+2=3
ok 14 - 1+-1=0