From 3f4aed78d2aee2b2d22cc98edfffed24bfa10fe8 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 22 Feb 2008 00:15:44 +0000 Subject: [PATCH] Valiadate inputs to create. --- lib/WebGUI/Shop/ShipDriver.pm | 18 ++++++++++++++---- t/Shop/ShipDriver.t | 12 +++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/WebGUI/Shop/ShipDriver.pm b/lib/WebGUI/Shop/ShipDriver.pm index a211a90db..7754b6a02 100644 --- a/lib/WebGUI/Shop/ShipDriver.pm +++ b/lib/WebGUI/Shop/ShipDriver.pm @@ -32,7 +32,6 @@ These subroutines are available from this package: readonly session => my %session; readonly className => my %className; readonly shipperId => my %shipperId; -readonly label => my %label; readonly options => my %options; #------------------------------------------------------------------- @@ -46,7 +45,7 @@ to do calculations. #------------------------------------------------------------------- -=head2 create ( $session, $properties ) +=head2 create ( $session, $options ) Constructor for new WebGUI::Shop::ShipperDriver objects. Returns a WebGUI::Shop::ShipperDriver object. To access driver objects that have already been configured, use C. @@ -55,7 +54,7 @@ To access driver objects that have already been configured, use C. A WebGUI::Session object. -=head4 $properties +=head4 $options A list of properties to assign to this ShipperDriver. See C for details. @@ -64,10 +63,21 @@ A list of properties to assign to this ShipperDriver. See C for det sub create { my $class = shift; my $session = shift; + my $options = shift; + croak "You must pass a hashref of options to create a new ShipDriver object" + unless defined($options) and ref $options eq 'HASH' and scalar keys %{ $options }; my $self = {}; bless $self, $class; register $self; - $session{ id $self } = $session; + + my $shipperId = $session->id->generate; + my $id = id $self; + + $session{ $id } = $session; + $shipperId{ $id } = $shipperId; + $options{ $id } = $options; + $className{ $id } = __PACKAGE__; + return $self; } diff --git a/t/Shop/ShipDriver.t b/t/Shop/ShipDriver.t index 18e51e7e9..981a27be7 100644 --- a/t/Shop/ShipDriver.t +++ b/t/Shop/ShipDriver.t @@ -28,7 +28,7 @@ my $session = WebGUI::Test->session; #---------------------------------------------------------------------------- # Tests -my $tests = 3; +my $tests = 4; plan tests => 1 + $tests; #---------------------------------------------------------------------------- @@ -96,8 +96,14 @@ cmp_deeply( # ####################################################################### -#my $driver = WebGUI::Shop::ShipDriver->create($session); -# +my $driver; + +eval { $driver = WebGUI::Shop::ShipDriver->create($session); }; +like ($@, qr/You must pass a hashref of options to create a new ShipDriver object/, 'create croaks without a hashref of options'); + +eval { $driver = WebGUI::Shop::ShipDriver->create($session, {}); }; +like ($@, qr/You must pass a hashref of options to create a new ShipDriver object/, 'create croaks with an empty hashref of options'); + #isa_ok($driver, 'WebGUI::Shop::ShipDriver'); # #isa_ok($driver->session, 'WebGUI::Session', 'session method returns a session object');