use strict;
use warnings;
use Test::More;
# tests that a 'default' hashref on a compound field works
{
{
package MyApp::Test::Compound;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
has_field 'comp_foo' => ( type => 'Compound', default => { one => 1, two => 2, three => 3 } );
has_field 'comp_foo.one';
has_field 'comp_foo.two';
has_field 'comp_foo.three';
}
my $form = MyApp::Test::Compound->new;
ok( $form );
$form->process;
is( $form->field('comp_foo.one')->value, 1, 'value is one' );
is_deeply( $form->field('comp_foo')->value, { one => 1, two => 2, three => 3 },
'value for compound is correct' );
}
# tests that default object for a compound field works
# object provided by default_method
{
{
package MyApp::Foo;
use Moose;
has 'one' => ( is => 'ro', default => 1 );
has 'two' => ( is => 'ro', default => 2 );
has 'three' => ( is => 'ro', default => 3 );
}
{
package MyApp::Test::Compound2;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
has_field 'comp_foo' => ( type => 'Compound', default_method => \&default_comp_foo );
has_field 'comp_foo.one';
has_field 'comp_foo.two';
has_field 'comp_foo.three';
sub default_comp_foo {
return MyApp::Foo->new;
}
}
my $form = MyApp::Test::Compound2->new;
ok( $form );
is( $form->field('comp_foo.one')->value, 1, 'value is one' );
is( ref $form->field('comp_foo')->item, 'MyApp::Foo', 'item saved' );
}
done_testing;