#!/usr/bin/perl
-# $Id: bop.t,v 1.5 2006-08-31 15:08:16 lawrence Exp $
+# $Id: bop.t,v 1.6 2006-08-31 19:49:55 plobbes Exp $
use strict;
use warnings;
-use Test::More tests => 50;
+use Test::More tests => 54;
BEGIN { use_ok("Business::OnlinePayment") or exit; }
-{ # fake test driver 1
+{ # fake test driver 1 (no submit method)
package Business::OnlinePayment::MOCK1;
use strict;
use warnings;
use base qw(Business::OnlinePayment);
+}
+
+{ # fake test driver 2 (with submit method)
+ package Business::OnlinePayment::MOCK2;
+ use strict;
+ use warnings;
+ use base qw(Business::OnlinePayment);
+ sub submit { die("in processor submit\n"); }
}
my $package = "Business::OnlinePayment";
-my $driver = "MOCK1";
+my @drivers = qw(MOCK1 MOCK2);
+my $driver = $drivers[0];
# trick to make use() happy (called in Business::OnlinePayment->new)
-$INC{"Business/OnlinePayment/${driver}.pm"} = "testing";
+foreach my $drv (@drivers) {
+ $INC{"Business/OnlinePayment/${drv}.pm"} = "testing";
+}
{ # new
can_ok( $package, qw(new) );
can_ok( $package, qw(submit) );
can_ok( $obj, qw(submit) );
-
eval { $obj->submit; };
like( $@, qr/^Processor subclass did not /, "missing submit() croaks" );
+ is( $obj->can("submit"), $package->can("submit"), "submit unchanged" );
+
+ my $mock2 = $package->new("MOCK2");
+ can_ok( $mock2, qw(submit) );
+
+ isnt( $mock2->can("submit"), $package->can("submit"), "submit changed" );
+ eval { $mock2->submit; };
+ like( $@, qr/^in processor submit/, "processor submit() is called" );
}
{ # dump_contents