#!perl
use strict;
use warnings;
use lib 't/lib';
use Test::More tests => 6;
use_ok('App::Addex');
my @calls;
my $callback = sub {
my ($self, $addex, $entry) = @_;
push @calls, ($entry->emails)[0]->address;
};
my $addex = App::Addex->new({
classes => {
addressbook => 'App::Addex::AddressBook::Test',
output => [ 'App::Addex::Output::Callback' ],
},
'App::Addex::Output::Callback' => {
callback => $callback,
},
});
isa_ok($addex, 'App::Addex');
$addex->run;
is(@calls, 6, "callback called twice");
eval { App::Addex->new; };
like(
$@,
qr/no addressbook class/,
"exception thrown when no addressbook class given",
);
eval {
App::Addex->new({
classes => { addressbook => 'App::Addex::AddressBook::Test' }
});
};
like(
$@,
qr/no output class/,
"exception thrown when no output classes given",
);
eval {
App::Addex->new({
classes => {
addressbook => 'App::Addex::AddressBook::Test',
output => [ 'App::Addex::FailsToLoad' ],
}
});
};
like(
$@,
qr/FailsToLoad/,
"if a plugin fails to load, the exception is propagated",
);