File: display.t

package info (click to toggle)
libhtml-formhandler-perl 0.40057-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 2,320 kB
  • ctags: 685
  • sloc: perl: 8,849; makefile: 2
file content (68 lines) | stat: -rw-r--r-- 2,059 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
use strict;
use warnings;
use Test::More;
use HTML::FormHandler::Test;

{
    package Test::Field::Rendering;
    use HTML::FormHandler::Moose;
    extends 'HTML::FormHandler';

    has_field 'my_html' => ( type => 'Display', html => '<h2>You got here!</h2>' );
    has_field 'explanation' => ( type => 'Display' );
    has_field 'between' => ( type => 'Display', set_html => 'between_html' );
    has_field 'nolabel' => ( type => 'Text', do_label => 0 );

    sub html_explanation {
       my ( $self, $field ) = @_;
       return "<p>I have an explanation somewhere around here...</p>";
    }

    sub between_html {
        my ( $self, $field ) = @_;
        return "<div>Somewhere, over the rainbow...</div>";
    }

}

my $form = Test::Field::Rendering->new;
is_html( $form->field('my_html')->render, '<h2>You got here!</h2>', 'display field renders with html attribute' );
is_html( $form->field('explanation')->render, '<p>I have an explanation somewhere around here...</p>',
    'display field renders with form method' );
is_html( $form->field('between')->render, '<div>Somewhere, over the rainbow...</div>',
    'set_html field renders' );
is_html( $form->field('nolabel')->render, '
<div><input type="text" name="nolabel" id="nolabel" value="" />
</div>', 'do_label => 0 works');

# test render_method
{
    package MyApp::Form::Test;
    use HTML::FormHandler::Moose;
    extends 'HTML::FormHandler';

    has_field 'foo';
    has_field 'bar' => (
        type => 'Display',
        render_method => \&render_bar,
    );
    sub render_bar {
        my $self = shift; # $self is field
        my $name = $self->name;
        return "<p>This is field $name!</p>";
    }
    has_field 'moy' => (
        type => 'Display',
        html => '<p>From the html attribute...</p>',
    );

}

$form = MyApp::Form::Test->new;

my $rendered = $form->render;
ok( $rendered, 'it rendered' );
like( $rendered, qr/This is field bar/, 'rendered from render_method' );
like( $rendered, qr/From the html attribute/, 'rendered from html attribute' );

done_testing;