#!perl -wT
# $Id$
use strict;
use warnings;
BEGIN {
use lib 't/lib';
use Handel::Test;
eval 'require DBD::SQLite';
if($@) {
plan skip_all => 'DBD::SQLite not installed';
} else {
plan tests => 19;
};
use_ok('Handel::Test::RDBO::Order');
use_ok('Handel::Test::RDBO::Order::Item');
use_ok('Handel::Constants', ':order');
use_ok('Handel::Exception', ':try');
};
## This is a hack, but it works. :-)
my $schema = Handel::Test->init_schema(no_populate => 1);
&run('Handel::Test::RDBO::Order', 'Handel::Test::RDBO::Order::Item', 1);
sub run {
my ($subclass, $itemclass, $dbsuffix) = @_;
Handel::Test->populate_schema($schema, clear => 1);
local $ENV{'HandelDBIDSN'} = $schema->dsn;
## test for Handel::Exception::Constraint for invalid type
{
my $it = $subclass->search({
id => '11111111-1111-1111-1111-111111111111'
});
isa_ok($it, 'Handel::Iterator');
is($it, 1);
my $order = $it->first;
isa_ok($order, 'Handel::Order');
isa_ok($order, $subclass);
try {
$order->type('abc');
fail;
} catch Handel::Exception::Constraint with {
pass;
} otherwise {
fail;
};
};
## Load a cart, save it and validate type
{
my $it = $subclass->search({
id => '11111111-1111-1111-1111-111111111111'
});
isa_ok($it, 'Handel::Iterator');
is($it, 1);
my $order = $it->first;
isa_ok($order, 'Handel::Order');
isa_ok($order, $subclass);
is($order->type, ORDER_TYPE_TEMP);
$order->save;
my $reit = $subclass->search({
id => '11111111-1111-1111-1111-111111111111'
});
isa_ok($reit, 'Handel::Iterator');
is($reit, 1);
my $reorder = $reit->first;
isa_ok($reorder, 'Handel::Order');
isa_ok($reorder, $subclass);
is($order->type, ORDER_TYPE_SAVED);
};
};