use Test::Modern;
use t::lib::Harness qw(lob);
plan skip_all => 'LOB_API_KEY not in ENV' unless defined lob();
use Storable qw(dclone);
subtest 'Testing verify_address parameter errors' => sub {
my %address_params = (
address_line1 => '370 Townsend St',
address_city => 'Boulder',
address_state => 'CO',
address_zip => '80305',
address_country => 'US',
);
for my $key (keys %address_params) {
my %params = %{ dclone(\%address_params) };
delete $params{$key};
like exception { lob->verify_address(%params) },
qr/$key must be a string/,
"failed correctly on missing parameter: $key";
}
};
subtest 'Testing verify_address address errors' => sub {
isa_ok exception { lob->verify_address(
address_line1 => '370 Townsend St',
address_city => 'Boulder',
address_state => 'CO',
address_zip => '80305',
address_country => 'US',
)}, 'WebService::Lob::Exception::AddressNotFound';
isa_ok exception { lob->verify_address(
address_line1 => '1529 Queen Anne Ave N',
address_city => 'Seattle',
address_state => 'WA',
address_zip => '98109',
address_country => 'US',
)}, 'WebService::Lob::Exception::AddressMissingInformation';
};
subtest 'Testing verify_address address lookup' => sub {
my $address = lob->verify_address(
address_line1 => '370 Townsend St',
address_city => 'San Francisco',
address_state => 'CA',
address_zip => '94107',
address_country => 'US',
);
cmp_deeply $address => {
object => 'address',
address_line1 => '370 TOWNSEND ST',
address_line2 => '',
address_city => 'SAN FRANCISCO',
address_state => 'CA',
address_zip => '94107-1607',
address_country => 'US',
}, 'successful simple address lookup'
or diag explain $address;
$address = lob->verify_address(
address_line1 => '1109 9th St',
address_line2 => '#123',
address_city => 'Phoenix',
address_state => 'AZ',
address_zip => '88888',
address_country => 'US',
);
cmp_deeply $address => {
object => 'address',
address_line1 => '1109 N 9TH ST',
address_line2 => '# 123',
address_city => 'PHOENIX',
address_state => 'AZ',
address_zip => '85006-2734',
address_country => 'US',
}, 'successful corrective address lookup'
or diag explain $address;
};
done_testing;