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',
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;
use Modern::Perl;
-use Test::More tests => 5;
+use Test::More tests => 6;
use Test::MockObject;
use Test::Exception;
'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' );
+};