use strict; use warnings; use Test::More tests => 19; use HTML::Widget; use lib 't/lib'; use HTMLWidget::TestLib; my $w = HTML::Widget->new; my $elem_foo = $w->element( 'Textfield', 'foo' ); my $elem_bar = $w->element( 'Textfield', 'bar' ); my $elem_baz = $w->element( 'Textfield', 'baz' ); my $constraint = $w->constraint( 'Equal', 'foo', 'bar', 'baz' ); # Valid { my $query = HTMLWidget::TestLib->mock_query( { foo => 'yada', bar => 'yada', baz => 'yada', } ); my $f = $w->process($query); is( $f->param('foo'), 'yada', 'foo value' ); is( $f->param('foo'), $f->param('bar'), 'foo eq bar' ); ok( !$f->errors, 'no errors' ); } # Valid (blank 1) SKIP: { skip "drunken feature", 1; my $query = HTMLWidget::TestLib->mock_query( { foo => '', bar => 'yada', } ); my $f = $w->process($query); is( "$f", <
EOF } # Valid (blank 2) SKIP: { skip "drunken feature", 1; my $query = HTMLWidget::TestLib->mock_query( { foo => 'yada', bar => '', } ); my $f = $w->process($query); is( "$f", <
EOF } # Invalid { my $query = HTMLWidget::TestLib->mock_query( { foo => 'yada', bar => 'nada', baz => 'yada', } ); my $f = $w->process($query); ok( $f->errors('foo'), 'foo has errors' ); ok( $f->errors('bar'), 'bar has errors' ); ok( $f->errors('baz'), 'baz has errors' ); ok( !$f->param('foo'), 'param foo is undef due to error' ); ok( !$f->param('bar'), 'param bar is undef due to error' ); ok( !$f->param('baz'), 'param baz is undef due to error' ); } # Display error on first value only { $constraint->render_errors(qw/ foo /); my $query = HTMLWidget::TestLib->mock_query( { foo => 'yada', bar => 'nada', baz => 'nada', } ); my $f = $w->process($query); ok( $f->errors('foo'), 'foo has errors' ); ok( $f->errors('bar'), 'bar has errors' ); ok( $f->errors('baz'), 'baz has errors' ); is( "$f", <
Invalid Input
EOF } # Display error on some { $constraint->render_errors(qw/ foo bar /); my $query = HTMLWidget::TestLib->mock_query( { foo => 'yada', bar => 'nada', baz => 'something completely different', } ); my $f = $w->process($query); ok( $f->errors('foo'), 'foo has errors' ); ok( $f->errors('bar'), 'bar has errors' ); ok( $f->errors('baz'), 'baz has errors' ); is( "$f", <
Invalid InputInvalid Input
EOF }