#!perl -w
# $Id: /local/CPAN/Mango/t/provider.t 1644 2008-06-02T01:46:53.055259Z claco $
use strict;
use warnings;
BEGIN {
use lib 't/lib';
use Test::More;
use Mango::Test ();
eval 'require DBD::SQLite';
if($@) {
plan skip_all => 'DBD::SQLite not installed';
} else {
plan tests => 15;
};
use_ok('Mango::Provider');
use_ok('Mango::Exception', ':try');
};
my $schema = Mango::Test->init_schema;
my $provider = Mango::Provider->new({
result_class => 'Mango::Cart'
});
isa_ok($provider, 'Mango::Provider');
is($provider->result_class, 'Mango::Cart');
$provider->setup([
result_class => 'Mango::Order'
]);
is($provider->result_class, 'Mango::Cart');
## create type not implemented
{
try {
local $ENV{'LANG'} = 'en';
$provider->create;
fail('no exception thrown');
} catch Mango::Exception with {
pass('Argument exception thrown');
like(shift, qr/overriden/i, 'must be overriden');
} otherwise {
fail('Other exception thrown');
};
};
## delete type not implemented
{
try {
local $ENV{'LANG'} = 'en';
$provider->delete;
fail('no exception thrown');
} catch Mango::Exception with {
pass('Argument exception thrown');
like(shift, qr/overriden/i, 'must be overriden');
} otherwise {
fail('Other exception thrown');
};
};
## search type not implemented
{
try {
local $ENV{'LANG'} = 'en';
$provider->search;
fail('no exception thrown');
} catch Mango::Exception with {
pass('Argument exception thrown');
like(shift, qr/overriden/i, 'must be overriden');
} otherwise {
fail('Other exception thrown');
};
};
## update type not implemented
{
try {
local $ENV{'LANG'} = 'en';
$provider->update;
fail('no exception thrown');
} catch Mango::Exception with {
pass('Argument exception thrown');
like(shift, qr/overriden/i, 'must be overriden');
} otherwise {
fail('Other exception thrown');
};
};
## set_component_class goes boom if class can't be loaded
{
try {
local $ENV{'LANG'} = 'en';
$provider->result_class('Foo');
fail('no exception thrown');
} catch Mango::Exception with {
pass('Argument exception thrown');
like(shift, qr/loaded/i, 'class cant be loaded');
} otherwise {
fail('Other exception thrown');
};
};