API-INSEE-Sirene
view release on metacpan or search on metacpan
t/API-INSEE-Sirene.t view on Meta::CPAN
use strict;
use warnings;
use Test::More;
use HTTP::Request;
BEGIN { use_ok('API::INSEE::Sirene') };
my $sirene = API::INSEE::Sirene->new('fake_credential');
$sirene->setCurrentEndpoint('siren');
my @oks_custom_criteria = (
# [ expected_result, field_name, value ... ],
[ '(siret:"12345678901234"~ OR siret:*12345678901234*)', 'siret', '12345678901234', ],
[ '(siret:"12345678901234"~ OR siret:*12345678901234*)', 'siret', '12345678901234', ],
[ 'periode(nomUniteLegale:"foo"~ OR nomUniteLegale:*foo*)', 'nomUniteLegale', 'foo', ],
[ 'periode(nomUniteLegale:"foo%26bar"~ OR nomUniteLegale:*foo%26bar*)', 'nomUniteLegale', 'foo&bar', ],
[ 'periode(nomUniteLegale:foo)', 'nomUniteLegale', 'foo', 'exact' ],
[ 'periode(nomUniteLegale:foo*)', 'nomUniteLegale', 'foo', 'begin' ],
[ 'libelleVoieEtablissement:foo', 'nomvoie', 'foo', 'exact' ],
[ 'periode(denominationUniteLegale:foo)', 'denominationUniteLegale', 'foo', 'exact' ],
[ 'periode(denominationUniteLegale:bar*)', 'denominationUniteLegale', 'bar', 'begin' ],
[ 'periode(denominationUniteLegale:foo%26bar)', 'denominationUniteLegale', 'foo&bar', 'exact' ],
[ 'adresseEtablissement:foo', 'adresseEtablissement', 'foo', 'exact' ],
);
foreach (@oks_custom_criteria) {
my ($expected, @args) = @{ $_ };
ok($expected eq $sirene->getCustomCriteria(@args));
}
$sirene->setDebugMode(1);
my @oks_request_GET = (
[ 'getLegalUnitBySIREN', '123456789' ],
[ 'getEstablishmentBySIRET', '12345678901234' ],
);
foreach (@oks_request_GET) {
my ($method, @args) = @{$_};
can_ok($sirene, $method);
my ($err, $request) = $sirene->$method(@args);
ok(0 == $err);
$request =~ s/^Sent request:\n//m;
my $r = HTTP::Request->parse($request);
ok($r->method eq 'GET');
ok($r->uri =~ qr{/sire[nt]/\d{9,14}\?});
}
my @oks_request_POST = (
[ 'getEstablishmentsByUsualName', 'foo' ],
[ 'getEstablishmentsByName', 'foo' ],
);
=for doc
# q=((denominationUsuelle1UniteLegale%3A%22foo%22~+OR+denominationUsuelle1UniteLegale%3A*foo*))&date=2021-02-02&nombre=20
# q=((denominationUniteLegale%3A%22foo%22~+OR+denominationUniteLegale%3A*foo*))&date=2021-02-02&nombre=20
=cut
foreach (@oks_request_POST) {
my ($method, @args) = @{$_};
can_ok($sirene, $method);
my ($err, $request) = $sirene->$method(@args);
ok(0 == $err);
$request =~ s/^Sent request:\n//m;
my $r = HTTP::Request->parse($request);
ok($r->method eq 'POST');
ok($r->uri =~ qr{/siret$});
my %param = ();
foreach my $param (split '&', $r->content) {
my ($key, $value) = split '=', $param;
$param{$key} = $value;
}
ok(exists $param{'q'} && exists $param{'date'} && exists $param{'nombre'});
}
plan tests => 1 + (scalar @oks_custom_criteria) + (4 * scalar @oks_request_GET) + (5 * scalar @oks_request_POST);
( run in 1.885 second using v1.01-cache-2.11-cpan-39bf76dae61 )