X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=t%2Fbop.t;h=ba4c6cd1451040483fae21f444ba0feb9007a392;hb=e1bf5c280a8581314d4832de6d1baf2181b389c6;hp=db12334a2732a528f948186278f53c434ee7e0d3;hpb=7970453a32726aba2f490c7e67cea29c11935f91;p=Business-OnlinePayment.git diff --git a/t/bop.t b/t/bop.t index db12334..ba4c6cd 100644 --- a/t/bop.t +++ b/t/bop.t @@ -1,26 +1,41 @@ #!/usr/bin/perl -# $Id: bop.t,v 1.5 2006-08-31 15:08:16 lawrence Exp $ use strict; use warnings; -use Test::More tests => 50; +use Test::More tests => 57; -BEGIN { use_ok("Business::OnlinePayment") or exit; } +use Business::OnlinePayment; -{ # 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 that dies) + + package Business::OnlinePayment::MOCK2; + use base qw(Business::OnlinePayment::MOCK1); + sub submit { my $self = shift; die("in processor submit\n"); } +} +{ # fake test driver 3 (with submit method) + + package Business::OnlinePayment::MOCK3; + use base qw(Business::OnlinePayment::MOCK1); + sub submit { my $self = shift; return 1; } } my $package = "Business::OnlinePayment"; -my $driver = "MOCK1"; +my @drivers = qw(MOCK1 MOCK2 MOCK3); +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) ); @@ -76,7 +91,23 @@ $INC{"Business/OnlinePayment/${driver}.pm"} = "testing"; # XXX # { # _risk_detect } -# { # _pre_submit } + +{ # _pre_submit + + my $s_orig = Business::OnlinePayment::MOCK3->can("submit"); + is( ref $s_orig, "CODE", "MOCK3 submit code ref $s_orig" ); + + # test to ensure we do not go recursive when wrapping submit + my $obj1 = $package->new("MOCK3"); + my $s_new1 = $obj1->can("submit"); + + isnt( $s_new1, $s_orig, "MOCK3 submit code ref $s_new1 (wrapped)" ); + is( $obj1->submit, "1", "MOCK3(obj1) submit returns 1" ); + + my $obj2 = $package->new("MOCK3"); + my $s_new2 = $obj2->can("submit"); + is( $obj2->submit, "1", "MOCK3(obj2) submit returns 1" ); +} { # content my $obj; @@ -104,7 +135,7 @@ $INC{"Business/OnlinePayment/${driver}.pm"} = "testing"; is( $obj->required_fields, 0, "no required fields" ); eval { $obj->required_fields("field1"); }; - like( $@, qr/^missing required field/, "missing required_fields() croaks" ); + like( $@, qr/^missing required field/, "missing required_fields croaks" ); } { # get_fields @@ -149,9 +180,16 @@ $INC{"Business/OnlinePayment/${driver}.pm"} = "testing"; can_ok( $package, qw(submit) ); can_ok( $obj, qw(submit) ); - eval { $obj->submit; }; like( $@, qr/^Processor subclass did not /, "missing submit() croaks" ); + isnt( $obj->can("submit"), $package->can("submit"), "submit changed" ); + + 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