Add a field to the InvalidParam exception.

Use it in Ship.pm for documenting bad requested classes, and test
its use.
This commit is contained in:
Colin Kuskie 2008-02-29 04:17:23 +00:00
parent d780700013
commit aab533623e
3 changed files with 8 additions and 2 deletions

View file

@ -28,6 +28,7 @@ use Exception::Class (
'WebGUI::Error::InvalidParam' => {
isa => 'WebGUI::Error',
description => "Expected to get a param we didn't get.",
fields => ["param"],
},
'WebGUI::Error::ObjectNotFound' => {
isa => 'WebGUI::Error',
@ -120,6 +121,10 @@ The object type we got.
Used when an invalid parameter is passed into a subroutine.
=head3 param
Used to return the bad parameter, if present.
=head2 WebGUI::Error::ObjectNotFound
Used when an object is trying to be retrieved, but does not exist. ISA WebGUI::Error.

View file

@ -56,7 +56,7 @@ sub create {
my $requestedClass = shift;
WebGUI::Error::InvalidParam->throw(error => q{Must provide a class to create an object})
unless defined $requestedClass;
WebGUI::Error::InvalidParam->throw(error => qq{The requested class $requestedClass is not enabled in your WebGUI configuration file})
WebGUI::Error::InvalidParam->throw(error => q{The requested class is not enabled in your WebGUI configuration file}, param => $requestedClass)
unless isIn($requestedClass, @{ WebGUI::Shop::Ship->getDrivers($session) } );
my $options = shift;
WebGUI::Error::InvalidParam->throw(error => q{You must pass a hashref of options to create a new ShipDriver object})

View file

@ -109,7 +109,8 @@ isa_ok($e, 'WebGUI::Error::InvalidParam', 'create croaks without a configured cl
cmp_deeply(
$e,
methods(
error => 'The requested class WebGUI::Shop::ShipDriver::FreeShipping is not enabled in your WebGUI configuration file',
error => 'The requested class is not enabled in your WebGUI configuration file',
param => 'WebGUI::Shop::ShipDriver::FreeShipping',
),
'create croaks without a configured class',
);