Bug 22051: Add Koha::Exceptions::Object::WrongValue
authorTomas Cohen Arazi <tomascohen@theke.io>
Fri, 28 Dec 2018 14:33:13 +0000 (11:33 -0300)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Thu, 31 Jan 2019 17:13:23 +0000 (17:13 +0000)
This patch adds a new exception to be thrown in Koha::Object->store when
a DBIC exception is thrown regarding bad data format.

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

Signed-off-by: Owen Leonard <oleonard@myacpl.org>

Signed-off-by: Charles Farmer <charles.farmer@inLibro.com>

Signed-off-by: Josef Moravec <josef.moravec@gmail.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit 58cbba3c93fba35920d3257a31dea9c760b37330)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

Koha/Exceptions/Object.pm
t/Koha/Exceptions.t

index 9569182..d36d9dc 100644 (file)
@@ -45,6 +45,11 @@ use Exception::Class (
         isa => 'Koha::Exceptions::Object',
         description => "Method not covered by tests",
     },
+    'Koha::Exceptions::Object::BadValue' => {
+        isa         => 'Koha::Exceptions::Object',
+        description => 'Invalid data passed',
+        fields      => ['type', 'property', 'value'],
+    },
 );
 
 sub full_message {
@@ -56,6 +61,9 @@ sub full_message {
         if ( $self->isa('Koha::Exceptions::Object::FKConstraint') ) {
             $msg = sprintf("Invalid parameter passed, %s=%s does not exist", $self->broken_fk, $self->value );
         }
+        elsif ( $self->isa('Koha::Exceptions::Object::BadValue') ) {
+            $msg = sprintf("Invalid value passed, %s=%s expected type is %s", $self->property, $self->value, $self->type );
+        }
     }
 
     return $msg;
@@ -91,6 +99,10 @@ Exception to be used when an invalid object property has been requested.
 
 Exception to be used when the invoked method is not covered by tests.
 
+=head2 Koha::Exceptions::Object::BadValue
+
+Exception to be used when a bad value has been passed for a property.
+
 =head1 Class methods
 
 =head2 full_message
index 7ecc115..f1be981 100644 (file)
@@ -22,7 +22,7 @@ use Test::Exception;
 
 subtest 'Koha::Exceptions::Object::FKConstraint tests' => sub {
 
-    plan tests => 5;
+    plan tests => 9;
 
     use_ok('Koha::Exceptions::Object');
 
@@ -39,6 +39,25 @@ subtest 'Koha::Exceptions::Object::FKConstraint tests' => sub {
         'Koha::Exceptions::Object::FKConstraint',
         'Exception is thrown :-D';
     is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
+
+    throws_ok {
+        Koha::Exceptions::Object::BadValue->throw(
+            type     => 'datetime',
+            property => 'a_property',
+            value    => 'a_value'
+        );
+    }
+    'Koha::Exceptions::Object::BadValue',
+        'Koha::Exceptions::Object::BadValue exception is thrown :-D';
+
+    # stringify the exception
+    is( "$@", 'Invalid value passed, a_property=a_value expected type is datetime', 'Koha::Exceptions::Object::BadValue stringified correctly' );
+
+    throws_ok
+        { Koha::Exceptions::Object::BadValue->throw( "Manual message exception" ) }
+        'Koha::Exceptions::Object::BadValue',
+        'Koha::Exceptions::Object::BadValue is thrown :-D';
+    is( "$@", 'Manual message exception', 'Koha::Exceptions::Object::BadValue not stringified if manually passed' );
 };
 
 subtest 'Koha::Exceptions::Password tests' => sub {