Geo-Coder-GeocodeFarm

 view release on metacpan or  search on metacpan

t/060_geocode_failure.t  view on Meta::CPAN


use Geo::Coder::GeocodeFarm;

my $ua = My::Mock::HTTP::Tiny->new;

{
    my $geocode = new_ok 'Geo::Coder::GeocodeFarm' => [key => 'xxx', ua => $ua];

    can_ok $geocode, qw(geocode);

    throws_ok {
        $geocode->geocode(no => 'location');
    } qr/Attribute .* is required/;
}

{
    my $geocode = new_ok 'Geo::Coder::GeocodeFarm' => [key => 'xxx', ua => $ua];

    can_ok $geocode, qw(geocode);

    throws_ok {
        $geocode->geocode(location => '530 W Main St Anoka MN 55303 US');
    } qr/FAILED, ACCESS_DENIED/;

    is $ua->{url}, 'https://www.geocode.farm/v3/json/forward/?addr=530+W+Main+St+Anoka+MN+55303+US&key=xxx', 'url matches';
}

{
    my $geocode = new_ok 'Geo::Coder::GeocodeFarm' => [key => 'xxx', ua => $ua, raise_failure => 0];

    can_ok $geocode, qw(geocode);

    my $result = $geocode->geocode(location => '530 W Main St Anoka MN 55303 US');

    isa_ok $result, 'HASH';

    cmp_deeply $result, {
        'LEGAL_COPYRIGHT' => {
            'copyright_logo' => 'https://www.geocode.farm/images/logo.png',
            'privacy_policy' => 'https://www.geocode.farm/policies/privacy-policy/',
            'copyright_notice' => 'Copyright (c) 2015 Geocode.Farm - All Rights Reserved.',
            'terms_of_service' => 'https://www.geocode.farm/policies/terms-of-service/'
        },
        'STATISTICS' => {
            'https_ssl' => 'ENABLED, SECURE'
        },
        'STATUS' => {
            'access' => 'API_KEY_INVALID',
            'status' => 'FAILED, ACCESS_DENIED'
        },
    }, '$result matches deeply';

    is $ua->{url}, 'https://www.geocode.farm/v3/json/forward/?addr=530+W+Main+St+Anoka+MN+55303+US&key=xxx', 'url matches';
}


package My::Mock;

sub new {
    my ($class) = @_;
    return bless +{} => $class;
}


package My::Mock::HTTP::Tiny;

use base 'My::Mock';

sub get {
    my ($self, $url) = @_;
    $self->{url} = $url;
    my $content = << 'END';
{
    "geocoding_results": {
        "LEGAL_COPYRIGHT": {
            "copyright_notice": "Copyright (c) 2015 Geocode.Farm - All Rights Reserved.",
            "copyright_logo": "https:\/\/www.geocode.farm\/images\/logo.png",
            "terms_of_service": "https:\/\/www.geocode.farm\/policies\/terms-of-service\/",
            "privacy_policy": "https:\/\/www.geocode.farm\/policies\/privacy-policy\/"
        },
        "STATUS": {
            "access": "API_KEY_INVALID",
            "status": "FAILED, ACCESS_DENIED"
        },
        "STATISTICS": {
            "https_ssl": "ENABLED, SECURE"
        }
    }
}
END
    my $res = {
        protocol => 'HTTP/1.1',
        status => 200,
        reason => 'OK',
        success => 1,
        content => $content,
    };
    return $res;
}

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 3.223 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-cec75d87357c )