use strict;
use warnings;
use Test::More;
# tests behavior for an empty compound field, where the compund field value
# is undef
{
{
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';
has_field 'bar';
}
my $form = MyApp::Test::Compound->new;
ok( $form );
my $params = {
'comp_foo.one' => '',
'comp_foo.two' => '',
'comp_foo.three' => '',
'bar' => 'my_bar',
};
$form->process( params => $params );
my $value = $form->value;
my $exp_value = {
comp_foo => undef,
bar => 'my_bar',
};
is_deeply( $value, $exp_value, 'got expected value' );
}
# tests behavior for an empty compound field with 'not_nullable', where the
# compund field contains empty values
{
{
package MyApp::Test::Compound;
use HTML::FormHandler::Moose;
extends 'HTML::FormHandler';
has_field 'comp_foo' => ( type => 'Compound', not_nullable => 1 );
has_field 'comp_foo.one';
has_field 'comp_foo.two';
has_field 'comp_foo.three';
has_field 'bar';
}
my $form = MyApp::Test::Compound->new;
ok( $form );
my $params = {
'comp_foo.one' => '',
'comp_foo.two' => '',
'comp_foo.three' => '',
'bar' => 'my_bar',
};
$form->process( params => $params );
my $value = $form->value;
my $exp_value = {
comp_foo => {
one => undef,
two => undef,
three => undef,
},
bar => 'my_bar',
};
is_deeply( $value, $exp_value, 'got expected value' );
}
done_testing;