HTML-FormBuilder

 view release on metacpan or  search on metacpan

t/formbuilder_output.t  view on Meta::CPAN

#!/usr/bin/perl

use strict;
use warnings;

use FindBin qw/$Bin/;
use lib "$Bin/lib";
use TestHelper;
use Test::More;
use Test::FailWarnings;
use Test::Exception;
use HTML::FormBuilder;
use HTML::FormBuilder::Select;

my ($form_obj, $result, $expect_result);

$form_obj = HTML::FormBuilder->new(
    data    => {id => 'testid'},
    classes => $classes
);
my $fieldset = $form_obj->add_fieldset({
    legend  => 'a legend',
    header  => 'header',
    comment => 'comment'
});

my $input_field_amount = {
    'label' => {
        'text'    => 'Amount',
        'for'     => 'amount',
        'tooltip' => {
            desc    => "this is a tool tip",
            img_url => "test.png"
        },
        'required_mark' => 1,
    },
    'input' => {
        'heading'   => 'heading',
        'type'      => 'text',
        'id'        => 'amount',
        'name'      => 'amount',
        'maxlength' => 40,
        'value'     => '',
    },
    'comment' => {text => 'commenttext'},
    'error'   => [{text => 'errortext'}],
};

my $input_field_button = {
    'input' => {
        'type'  => 'button',
        'id'    => 'Button',
        'name'  => 'Button name',
        'value' => 'button value',
    },
};

$fieldset->add_field($input_field_amount);
$fieldset->add_field($input_field_button);

lives_ok(sub { $result = $form_obj->build }, 'build tooltip ok');
$expect_result = <<EOF;
<form id="testid" method="get"><div class="rbox form">
    <div class="rbox-wrap">
        <fieldset><legend>a legend</legend><h2>header</h2><div class="grd-grid-12"><p>comment</p></div><div class="grd-row-padding row clear"><div class="extra_tooltip_container"><label for="amount"><em class="required_asterisk">**</em>Amount</label>...
        <span class="tl">&nbsp;</span><span class="tr">&nbsp;</span><span class="bl">&nbsp;</span><span class="br">&nbsp;</span>
    </div>
</div>
</form>
EOF
chomp $expect_result;
is($result, $expect_result, 'tooltip and call_customer_support');

# test heading
$form_obj = HTML::FormBuilder->new(
    data    => {id => 'testid'},
    classes => $classes
);
$fieldset = $form_obj->add_fieldset({});

my $input_field1 = {
    'input' => {
        'heading'   => 'text heading',
        'type'      => 'text',
        'id'        => 'amount',
        'name'      => 'amount',
        'maxlength' => 40,
        'value'     => '',
    },
};

my $input_field2 = {
    'input' => {
        'heading' => 'checkbox heading',
        'type'    => 'checkbox',
        'id'      => 'single_checkbox',
        'name'    => 'single_checkbox',
        'value'   => 'SGLBOX',
    },
};

$fieldset->add_field($input_field1);
$fieldset->add_field($input_field2);
lives_ok(sub { $result = $form_obj->build }, 'build field with heading');

$expect_result = <<EOF;
<form id="testid" method="get"><div class="rbox form">
    <div class="rbox-wrap">
        <fieldset><div class="grd-row-padding row clear"><div class="grd-grid-8"><span id="inputheading">text heading</span><input class=" text" id="amount" maxlength="40" name="amount" type="text"></div></div><div class="grd-row-padding row clear"><...
        <span class="tl">&nbsp;</span><span class="tr">&nbsp;</span><span class="bl">&nbsp;</span><span class="br">&nbsp;</span>
    </div>
</div>
</form>
EOF

chomp($expect_result);
is($result, $expect_result, 'heading result ok');

# test build_confirmation_button_with_all_inputs_hidden
$form_obj = HTML::FormBuilder->new(
    data    => {id => 'testid'},
    classes => $classes
);
$fieldset = $form_obj->add_fieldset({
    legend  => 'a legend',
    header  => 'header',
    comment => 'comment'
});
$fieldset->add_field($input_field_amount);

lives_ok(
    sub {
        $result = $form_obj->build_confirmation_button_with_all_inputs_hidden;
    },
    'build_confirmation_button_with_all_inputs_hidden ok'
);

$expect_result = <<EOF;
<form id="testid" method="get"><input type="hidden" name="amount" value=""/><input type="hidden" name="process" value="1"/><a class="button backbutton" href="javascript:history.go(-1)" ><span class="button backbutton" >Back</span></a> <span class="bu...
EOF

chomp($expect_result);
is($result, $expect_result, 'result of build_confirmation_button_with_all_inputs_hidden');

################################################################################
# stacked
$form_obj = HTML::FormBuilder->new(
    data    => {id => 'testid'},
    classes => $classes
);
$fieldset = $form_obj->add_fieldset({stacked => 0});
lives_ok(sub { $result = $form_obj->build }, 'build field with heading');
$expect_result = <<EOF;
<form id="testid" method="get"><div class="rbox form">
    <div class="rbox-wrap">
        <fieldset stacked="0"><div class="grd-grid-12"></div></fieldset>
        <span class="tl">&nbsp;</span><span class="tr">&nbsp;</span><span class="bl">&nbsp;</span><span class="br">&nbsp;</span>
    </div>
</div>
</form>
EOF

chomp($expect_result);
is($result, $expect_result, 'result of stacked=0 fieldset');

$form_obj      = create_multiset_form();
$expect_result = <<'EOF';
<form action="http://localhost/some/where/test.cgi" class="formObject" id="id_test_form" method="post" name="name_test_form"><div class="rbox form">
    <div class="rbox-wrap">
        <fieldset><div class="grd-row-padding row clear"><div class="grd-grid-4  form_label"><label for="amount">Amount</label></div><div class="grd-grid-8"><input class=" text" id="amount" maxlength="40" name="amount" type="text"><p class="errorfiel...
        <span class="tl">&nbsp;</span><span class="tr">&nbsp;</span><span class="bl">&nbsp;</span><span class="br">&nbsp;</span>
    </div>
</div>
<div class="rbox form">
    <div class="rbox-wrap">
        <fieldset><div class="grd-row-padding row clear"><div class="grd-grid-4  form_label"><label for="amount">Amount</label></div><div class="grd-grid-8"><input class=" text" id="amount" maxlength="40" name="amount" type="text"><p class="errorfiel...
        <span class="tl">&nbsp;</span><span class="tr">&nbsp;</span><span class="bl">&nbsp;</span><span class="br">&nbsp;</span>
    </div>
</div>
<div class="rbox form">
    <div class="rbox-wrap">
        <fieldset><div class="grd-row-padding row clear"><div class="grd-grid-4  form_label"><label for="amount">Amount</label></div><div class="grd-grid-8"><input class=" text" id="amount" maxlength="40" name="amount" type="text"><p class="errorfiel...
        <span class="tl">&nbsp;</span><span class="tr">&nbsp;</span><span class="bl">&nbsp;</span><span class="br">&nbsp;</span>
    </div>
</div>



( run in 0.902 second using v1.01-cache-2.11-cpan-140bd7fdf52 )