#!/usr/bin/env perl
BEGIN { use_ok(
'TimeZone::TimeZoneDB'
) }
my
$mock_ua
= Test::MockModule->new(
'LWP::UserAgent'
);
$mock_ua
->mock(
get
=>
sub
{
my
(
$self
,
$url
) =
@_
;
my
$response
= HTTP::Response->new(200);
$response
->content(
'{"status":"OK","zoneName":"America/New_York"}'
);
return
$response
;
});
subtest
'Object Creation'
=>
sub
{
my
$tzdb
= TimeZone::TimeZoneDB->new(
key
=>
'dummy_key'
);
ok(
$tzdb
,
'Object created successfully'
);
isa_ok(
$tzdb
,
'TimeZone::TimeZoneDB'
,
'Object is of correct class'
);
};
subtest
'Missing API Key'
=>
sub
{
dies_ok {
my
$tzdb
= TimeZone::TimeZoneDB->new() }
'Creation fails without an API key'
;
};
subtest
'Get Time Zone'
=>
sub
{
my
$tzdb
= TimeZone::TimeZoneDB->new(
key
=>
'dummy_key'
,
ua
=> LWP::UserAgent->new());
my
$result
=
$tzdb
->get_time_zone({
latitude
=> 40.7128,
longitude
=> -74.0060 });
ok(
$result
,
'Valid API response received'
);
is(
$result
->{
'zoneName'
},
'America/New_York'
,
'Correct timezone returned'
);
};
subtest
'Get Time Zone - Missing Parameters'
=>
sub
{
my
$tzdb
= TimeZone::TimeZoneDB->new(
key
=>
'dummy_key'
,
ua
=> LWP::UserAgent->new());
my
$result
=
$tzdb
->get_time_zone();
is(
$result
,
undef
,
'Returns undef when missing parameters'
);
};