use Test::More;
use Data::Dump 'pp';
BEGIN {
eval "use DBD::SQLite";
plan $@ ? (skip_all => 'needs DBD::SQLite for testing') : (tests => 10);
}
INIT {
use lib 't/lib';
use_ok( 'DBIx::Class::FormTools' );
use_ok('Test');
}
# Initialize database
my $schema = Test->initialize;
ok($schema, "Schema created");
my $helper = DBIx::Class::FormTools->new({ schema => $schema });
ok($helper,"Helper object created");
# Create test objects in memory
my $film = $schema->resultset('Film')->new({
title => 'Office Space',
comment => 'Funny film',
});
my $actor = $schema->resultset('Actor')->new({
name => 'Cartman',
});
my $role = $schema->resultset('Role')->new({
# charater => 'The New guy',
});
my $formdata = {
# The existing objects
$helper->fieldname($film, 'title', 'o1') => 'Timmy on the run',
$helper->fieldname($film, 'length', 'o1') => 99,
$helper->fieldname($film, 'comment', 'o1') => 'TIMMY!!',
$helper->fieldname($actor, 'name', 'o2') => 'Stan Marsh',
$helper->fieldname($role, 'charater', 'o3', {
film_id => 'o1',
actor_id => 'o2',
}) => 'Kid',
};
ok(1,"Formdata created:\n".pp($formdata));
my $objects = $helper->formdata_to_object_hash($formdata);
ok(keys %$objects == 3, 'Excacly three object retrieved');
isa_ok($objects->{o1}, 'Schema::Film', 'Object is a Film.');
isa_ok($objects->{o2}, 'Schema::Actor', 'Object is a Actor.');
isa_ok($objects->{o3}, 'Schema::Role', 'Object is a Role.');
print 'Final objects: '.pp($objects) ."\n"
if $ENV{DBIX_CLASS_FORMTOOLS_DEBUG};
ok((map { $_->insert_or_update } values %$objects),"Updating objects in db.");
1;