Bug 25423: Add Koha::Exceptions::Object::NotInstantiated

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Tomas Cohen Arazi 2020-05-08 08:39:10 -03:00 committed by Jonathan Druart
parent b5ff3696b5
commit 02fc6ca6d1
2 changed files with 31 additions and 1 deletions

View File

@ -55,6 +55,11 @@ use Exception::Class (
description => 'Invalid data passed',
fields => ['type', 'property', 'value'],
},
'Koha::Exceptions::Object::NotInstantiated' => {
isa => 'Koha::Exceptions::Object',
description => 'Tried to access a method on an uninstantiated object',
fields => ['class','method']
},
'Koha::Exceptions::Object::NotInStorage' => {
isa => 'Koha::Exceptions::Object',
description => 'The object is not in storage yet',
@ -76,6 +81,9 @@ sub full_message {
elsif ( $self->isa('Koha::Exceptions::Object::ReadOnlyProperty') ) {
$msg = sprintf("Invalid attempt to change readonly property: %s", $self->property );
}
elsif ( $self->isa('Koha::Exceptions::Object::NotInstantiated') ) {
$msg = sprintf("Tried to access the '%s' method, but %s is not instantiated", $self->method, $self->class );
}
}
return $msg;

View File

@ -17,7 +17,7 @@
use Modern::Perl;
use Test::More tests => 5;
use Test::More tests => 6;
use Test::MockObject;
use Test::Exception;
@ -176,3 +176,25 @@ subtest 'Koha::Exceptions::Patron::Relationship tests' => sub {
'Exception is thrown :-D';
is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
};
subtest 'Koha::Exceptions::Object::NotInstantiated tests' => sub {
plan tests => 5;
use_ok('Koha::Exceptions::Object::NotInstantiated');
throws_ok
{ Koha::Exceptions::Object::NotInstantiated->throw(
method => 'brain_explode', class => 'Koha::JD' ); }
'Koha::Exceptions::Object::NotInstantiated',
'Exception is thrown :-D';
# stringify the exception
is( "$@", 'Tried to access the \'brain_explode\' method, but Koha::JD is not instantiated', 'Exception stringified correctly' );
throws_ok
{ Koha::Exceptions::Object::NotInstantiated->throw( "Manual message exception" ) }
'Koha::Exceptions::Object::NotInstantiated',
'Exception is thrown :-D';
is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
};