use strict;
use warnings;
use Test::More tests => 3, import => ['is_deeply'];
# TEST
use ok 'Object::Declare' => copula => {
is => '',
are => 'plural_',
},
aliases => { field2 => 'fun', },
mapping => {
column => 'MyApp::Column',
alt_col => sub { return { alt => column(), @_ } }
};
sub column { 1 }
sub MyApp::Column::new { shift; return {@_} }
sub do_declare
{
declare
{
column
x => is rw,
is Very::Happy,
field1 is 'xxx',
field2 are 'XXX', 'XXX', is field3,
parts are column( is happy ), column( !is happy );
alt_col
y => !is Very::Happy,
field1 is 'yyy',
field2 is 'YYY',
col is column( is happy );
}
}
my @objects = do_declare;
# TEST
is_deeply(
\@objects => [
x => {
'name' => 'x',
'field1' => 'xxx',
'plural_field2' => [ 'XXX', 'XXX' ],
'plural_parts' => [ { happy => 1 }, { happy => '' }, ],
'field3' => 1,
'rw' => 1,
'Very::Happy' => 1,
},
y => {
'name' => 'y',
'field1' => 'yyy',
'fun' => 'YYY',
'alt' => 1,
col => {
'name' => 'col',
'happy' => 1,
},
'Very::Happy' => '',
},
],
'object declared correctly (list context)'
);
my $objects = do_declare;
# TEST
is_deeply(
$objects => {
x => {
'name' => 'x',
'field1' => 'xxx',
'plural_field2' => [ 'XXX', 'XXX' ],
'plural_parts' => [ { happy => 1 }, { happy => '' }, ],
'field3' => 1,
'rw' => 1,
'Very::Happy' => 1,
},
y => {
'name' => 'y',
'field1' => 'yyy',
'fun' => 'YYY',
'alt' => 1,
col => {
'name' => 'col',
'happy' => 1,
},
'Very::Happy' => '',
},
},
'object declared correctly (scalar context)'
);