Spica
view release on metacpan or search on metacpan
t/02_row/001_inflate.t view on Meta::CPAN
use Test::More;
use Spica;
use Spica::Spec::Declare;
use Spica::Receiver::Row;
{
package t::Mock::Name;
sub new {
my ($class, %args) = @_;
return bless \%args => $class;
}
sub value { shift->{name}; }
package t::Mock::Birth;
sub new {
my ($class, %args) = @_;
return bless \%args => $class;
}
sub value { shift->{value}; }
}
my $spica = Spica->new(
host => 'localhost',
spec => spec {
client {
name 'default';
columns qw(id name birth_year birth_month friend_birth);
inflate 'name' => sub {
my $value = shift;
return t::Mock::Name->new(name => $value);
};
inflate qr{^birth} => sub {
my $value = shift;
return t::Mock::Birth->new(value => $value);
};
};
},
);
my $client = $spica->spec->get_client('default');
subtest 'basic' => sub {
my $row = $spica->spec->get_row_class('default')->new(
spica => $spica,
client => $client,
client_name => $client->name,
data => +{
id => 1,
name => 'perl',
birth_year => 2013,
birth_month => 1,
friend_birth => '2013-10-10',
},
);
isa_ok $row->name => 't::Mock::Name';
is $row->name->value => 'perl';
isa_ok $row->birth_year => 't::Mock::Birth';
is $row->birth_year->value => 2013;
isa_ok $row->birth_month => 't::Mock::Birth';
is $row->birth_month->value => 1;
is $row->friend_birth => '2013-10-10';
};
done_testing;
( run in 2.775 seconds using v1.01-cache-2.11-cpan-5e09290becf )