#!/usr/bin/perl
-# $Id: bop.t,v 1.8 2006-11-20 05:29:14 plobbes Exp $
use strict;
use warnings;
-use Test::More tests => 60;
+use Test::More tests => 62;
BEGIN { use_ok("Business::OnlinePayment") or exit; }
{ # fake test driver 2 (with submit method that dies)
package Business::OnlinePayment::MOCK2;
- use strict;
- use warnings;
- use base qw(Business::OnlinePayment);
- sub submit { die("in processor submit\n"); }
+ 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 strict;
- use warnings;
- use base qw(Business::OnlinePayment);
- sub submit { return (1); }
+ use base qw(Business::OnlinePayment::MOCK1);
+ sub submit { my $self = shift; return 1; }
}
my $package = "Business::OnlinePayment";
is( $obj2->submit, "1", "MOCK3(obj2) submit returns 1" );
# fraud detection failure modes
- my $obj = $package->new("MOCK3");
- my $proc = "__BOGUS_PROCESSOR";
+ my $obj = $package->new("MOCK3");
+ my $bogus = "__BOGUS_PROCESSOR";
+ my $valid = "preCharge";
- is( $obj->fraud_detect($proc), $proc, "fraud_detect set to '$proc'" );
+ is( $obj->fraud_detect($bogus), $bogus, "fraud_detect set to '$bogus'" );
eval { $obj->submit; };
is( $@, "", "fraud_detect ignores non-existant processors" );
- # XXX: need more test cases for when fraud detection is enabled
+ is( $obj->fraud_detect($valid), $valid, "fraud_detect set to '$valid'" );
+ eval { $obj->submit; };
+ like( $@, qr/^missing required /, "fraud_detect($valid) missing fields" );
+
+ # XXX: more test cases for preCharge needed
}
{ # content
eval { $obj->submit; };
like( $@, qr/^Processor subclass did not /, "missing submit() croaks" );
- is( $obj->can("submit"), $package->can("submit"), "submit unchanged" );
+ isnt( $obj->can("submit"), $package->can("submit"), "submit changed" );
my $mock2 = $package->new("MOCK2");
can_ok( $mock2, qw(submit) );