Bug 27833: (follow-up) Add InvalidType exception

Working on bug 27857 showed we needed one more exception, for when the
passed attribute type is invalid.

This patch adds the Koha::Exceptions::Patron::Attribute::InvalidType
exception. It adds a format for stringifying it, and tests are added.
The previous exceptions tests lacked one case, so I add them on this
patch as well.

To test:
1. Apply this patch
2. Run:
   $ kshell
  k$ prove tt/Koha/Exceptions.t
=> SUCCESS: Tests pass!
3. Sign off :-D

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Tomas Cohen Arazi 2021-03-04 07:39:27 -03:00 committed by Jonathan Druart
parent 35aefaa11c
commit 577a405407
2 changed files with 73 additions and 3 deletions

View File

@ -7,6 +7,11 @@ use Exception::Class (
'Koha::Exceptions::Patron::Attribute' => {
description => 'Something went wrong'
},
'Koha::Exceptions::Patron::Attribute::InvalidType' => {
isa => 'Koha::Exceptions::Patron::Attribute',
description => "the passed type is invalid",
fields => [ "type" ]
},
'Koha::Exceptions::Patron::Attribute::NonRepeatable' => {
isa => 'Koha::Exceptions::Patron::Attribute',
description => "repeatable not set for attribute type and tried to add a new attribute for the same code",
@ -39,6 +44,12 @@ sub full_message {
$self->attribute->attribute
);
}
elsif ( $self->isa('Koha::Exceptions::Patron::Attribute::InvalidType') ) {
$msg = sprintf(
"Tried to use an invalid attribute type. type=%s",
$self->type
);
}
}
return $msg;

View File

@ -200,7 +200,7 @@ subtest 'Koha::Exceptions::Object::NotInstantiated tests' => sub {
subtest 'Koha::Exceptions::Patron::Attribute::* tests' => sub {
plan tests => 5;
plan tests => 13;
use_ok("Koha::Exceptions::Patron::Attribute");
@ -218,11 +218,70 @@ subtest 'Koha::Exceptions::Patron::Attribute::* tests' => sub {
'Exception is thrown :-D';
# stringify the exception
is( "$@", "Tried to add more than one non-repeatable attributes. code=$code attribute=$attribute", 'Exception stringified correctly' );
is(
"$@",
"Tried to add more than one non-repeatable attributes. code=$code attribute=$attribute",
'Exception stringified correctly'
);
throws_ok
{ Koha::Exceptions::Patron::Attribute::NonRepeatable->throw( "Manual message exception" ) }
'Koha::Exceptions::Patron::Attribute::NonRepeatable',
'Exception is thrown :-D';
is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
is(
"$@",
'Manual message exception',
'Exception not stringified if manually passed'
);
throws_ok
{ Koha::Exceptions::Patron::Attribute::UniqueIDConstraint->throw(
attribute => $mocked_attribute ); }
'Koha::Exceptions::Patron::Attribute::UniqueIDConstraint',
'Exception is thrown :-D';
# stringify the exception
is(
"$@",
"Your action breaks a unique constraint on the attribute. code=$code attribute=$attribute",
'Exception stringified correctly'
);
throws_ok
{ Koha::Exceptions::Patron::Attribute::UniqueIDConstraint->throw( "Manual message exception" ) }
'Koha::Exceptions::Patron::Attribute::UniqueIDConstraint',
'Exception is thrown :-D';
is(
"$@",
'Manual message exception',
'Exception not stringified if manually passed'
);
my $type = "SOME_TYPE";
throws_ok
{ Koha::Exceptions::Patron::Attribute::InvalidType->throw(
type => $type ); }
'Koha::Exceptions::Patron::Attribute::InvalidType',
'Exception is thrown :-D';
# stringify the exception
is(
"$@",
"Tried to use an invalid attribute type. type=$type",
'Exception stringified correctly'
);
throws_ok
{ Koha::Exceptions::Patron::Attribute::InvalidType->throw( "Manual message exception" ) }
'Koha::Exceptions::Patron::Attribute::InvalidType',
'Exception is thrown :-D';
is(
"$@",
'Manual message exception',
'Exception not stringified if manually passed'
);
};