Net-Z3950-FOLIO
view release on metacpan or search on metacpan
t/07-fetch.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use IO::File;
use Cpanel::JSON::XS qw(decode_json);
use MARC::Record;
BEGIN {
use vars qw(@tests);
@tests = (
# format, comp, expectedFile
[ 'JSON', 'F', 'sorted1.json' ],
[ 'XML', 'raw', 'inventory1.xml' ],
[ 'XML', 'usmarc', 'marc1.xml' ],
[ 'XML', 'opac', 'marc1.opac.xml' ],
[ 'USMARC', 'F', 'marc1.usmarc' ],
[ 'USMARC', 'b', 'marc1.usmarc' ],
);
}
use Test::More tests => 5 + 2*scalar(@tests);
use Test::Differences;
oldstyle_diff;
BEGIN { use_ok('Net::Z3950::FOLIO') };
my $SETNAME = 'dummy';
my $session = mock_session();
ok(defined $session, 'mocked session');
my $args = {
HANDLE => $session,
SETNAME => $SETNAME,
OFFSET => 1,
};
foreach my $test (@tests) {
my($format, $comp, $expectedFile) = @$test;
my $format2OID = {
JSON => Net::Z3950::FOLIO::FORMAT_JSON,
XML => Net::Z3950::FOLIO::FORMAT_XML,
USMARC => Net::Z3950::FOLIO::FORMAT_USMARC,
};
my $req_form = $format2OID->{$format};
my $argsCopy = {
%$args,
REQ_FORM => $req_form,
COMP => $comp,
};
Net::Z3950::FOLIO::_fetch_handler($argsCopy);
pass("called _fetch_handler with $format/$comp");
my $res = $argsCopy->{RECORD};
if ($req_form eq Net::Z3950::FOLIO::FORMAT_USMARC) {
my $marc = new_from_usmarc MARC::Record($res);
$res = $marc->as_formatted() . "\n";
}
my $expected = readFile("t/data/fetch/$expectedFile");
eq_or_diff($res, $expected, "$format/$comp record matched expected value ($expectedFile)");
}
sub mock_session {
my $server = new Net::Z3950::FOLIO('t/data/config/foo');
ok(defined $server, 'created Net::Z3950::FOLIO server object');
my $session = $server->getSession('marcHoldings|postProcess');
ok(defined $session, 'created session object');
my $rs = mock_resultSet($session);
ok(defined $session, 'mocked result-set object');
$session->{resultsets} = {};
$session->{resultsets}->{$SETNAME} = $rs;
return $session;
}
( run in 0.507 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )