use Test::More tests => 4; use Test::MockObject; use_ok('HTML::Widget'); my $w = HTML::Widget->new; $w->element( 'Radio', 'foo' )->value('foo')->label('Foo'); $w->element( 'Radio', 'bar' )->value(23)->label('Bar'); $w->element( 'Radio', 'bar' )->checked('checked')->label('Bar2'); $w->element( 'Radio', 'bar' )->label('Bar3'); $w->constraint( 'Integer', 'foo' ); $w->constraint( 'Integer', 'bar' ); # Without query { my $f = $w->process; is( "$f", <
EOF } # With mocked basic query { my $query = Test::MockObject->new; my $data = { foo => 'yada', bar => '23' }; $query->mock( 'param', sub { my ( $self, $param ) = @_; if ( @_ == 1 ) { return keys %$data } else { unless ( exists $data->{$param} ) { return wantarray ? () : undef; } if ( ref $data->{$param} eq 'ARRAY' ) { return (wantarray) ? @{ $data->{$param} } : $data->{$param}->[0]; } else { return (wantarray) ? ( $data->{$param} ) : $data->{$param}; } } } ); my $f = $w->process($query); is( "$f", <
Invalid Input
EOF } # With mocked basic query and container { my $w1 = HTML::Widget->new; $w1->element( 'Radio', 'foo' )->value('foo')->label('Foo'); $w1->element( 'Radio', 'bar' )->value(23)->label('Bar'); $w1->element( 'Radio', 'bar' )->checked('checked')->label('Bar2'); $w1->element( 'Radio', 'bar' )->label('Bar3'); $w1->constraint( 'Integer', 'foo' ); $w1->constraint( 'Integer', 'bar' ); my $query = Test::MockObject->new; my $data = { foo => 'yada', bar => '23' }; $query->mock( 'param', sub { $_[1] ? ( return $data->{ $_[1] } ) : ( keys %$data ) } ); my $w2 = HTML::Widget->new('something'); $w2->embed($w1); my $f = $w2->process($query); is( "$f", <
Invalid Input
EOF }