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 )