The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use Test::Fatal;

use Class::Load qw( load_class );
use FindBin; use lib "$FindBin::Bin/lib";

my $t = new_ok( load_class('Test::Business::CyberSource') );

my $authc = load_class('Business::CyberSource::Request::Authorization');

my $ptc = load_class('Business::CyberSource::RequestPart::PurchaseTotals');

my $ptotals = new_ok( $ptc => [{ currency => 'USD' }]);

my $auth
	= $authc->new({
		reference_code  => $t->resolve(
				service => '/request/reference_code'
			),
			bill_to         => $t->resolve( service => '/helper/bill_to' ),
			card            => $t->resolve( service => '/helper/card' ),
			purchase_totals => $ptotals,
	});

my $exception2 = exception { $auth->serialize };

like $exception2, qr/you must define either items or total/, 'check either items or total';

done_testing;