Data-Mapper
view release on metacpan or search on metacpan
use t::lib::Utils;
use Test::Requires qw(DBI DBD::SQLite);
use Test::More;
use Test::Fatal;
use t::lib::Data::Mapper;
use t::lib::Another::Mapper;
use Data::Mapper::Adapter::DBI;
my $dbh = t::lib::Utils::dbh;
$dbh->do('create table test (id integer primary key, value text)');
my $adapter = Data::Mapper::Adapter::DBI->new({ driver => $dbh });
my $mapper = t::lib::Data::Mapper->new({ adapter => $adapter });
my $another = t::lib::Another::Mapper->new({ adapter => $adapter });
subtest 'create' => sub {
my $data = $mapper->create(test => { value => 'test create' });
ok $data;
isa_ok $data, 't::lib::Data::Mapper::Data::Test';
like $data->param('id'), qr/^\d+$/;
is $data->param('value'), 'test create';
ok !$data->is_changed;
};
subtest 'find' => sub {
my $created = $mapper->create(test => { value => 'test find' });
my $found = $mapper->find(test => { id => $created->{id} });
ok $found;
isa_ok $found, 't::lib::Data::Mapper::Data::Test';
is_deeply $created, $found;
ok !$found->is_changed;
note 'when not found';
my $ret = $mapper->find(test => { id => 'not found key' });
ok !$ret;
};
subtest 'search' => sub {
my $created1 = $mapper->create(test => { value => 'test search' });
my $created2 = $mapper->create(test => { value => 'test search' });
my $result = $mapper->search(test => {
value => 'test search'
}, {
order_by => 'id desc'
});
ok $result;
is ref $result, 'ARRAY';
is scalar @$result, 2;
for my $record (@$result) {
isa_ok $record, 't::lib::Data::Mapper::Data::Test';
ok !$record->is_changed;
}
is_deeply $result, [$created2, $created1];
};
subtest 'update' => sub {
my $data = $mapper->create(test => { value => 'test update' });
( run in 1.838 second using v1.01-cache-2.11-cpan-54e63673c56 )