The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/env perl

use strict;
use warnings FATAL => 'all';
use Test::More;
use Test::Exception;

my $pkg;
my $pkg_fix;

BEGIN {
    $pkg     = 'Catmandu::Importer::Inspire';
    $pkg_fix = 'Catmandu::Fix::inspire_extract_id';
    use_ok $pkg;
    use_ok $pkg_fix;
}
require_ok $pkg;
require_ok $pkg_fix;

dies_ok { $pkg->new( fmt => 'endnote' ) } "die of missing arguments";
lives_ok { $pkg->new( doi => '10.1088/1126-6708/2009/03/112' ) } "I'm alive";
lives_ok { $pkg->new( id  => '811388' ) } "I'm alive";
lives_ok { $pkg->new( query => "hadronization" ) } "I'm alive";

my $fixer = Catmandu::Fix->new( fixes => ['inspire_extract_id()'] );

my $importer = $pkg->new(
    fmt => 'marc',
    doi => '10.1088/1126-6708/2009/03/112',
);

isa_ok( $importer, $pkg );
can_ok( $importer, 'each' );

my $importer2 = $pkg->new(
    fmt => 'marc',
    id  => '811388',
);

isa_ok( $importer2, $pkg );
can_ok( $importer2, 'each' );

my $f  = $fixer->fix($importer);
my $f2 = $fixer->fix($importer2);

my $data = {
    'url'  => 'http://inspirehep.net/record/811388',
    'id'   => '811388',
    'cern' => {
        'url' => 'http://cds.cern.ch/record/1156806',
        'id'  => '1156806'
    },
    'arxiv' => {
        'url' => 'http://arxiv.org/abs/0901.3094',
        'id'  => '0901.3094'
    },
    'doi' => '10.1088/1126-6708/2009/03/112',
};

is_deeply $f->first,  $data, "compare records";
is_deeply $f2->first, $data, "compare records";

done_testing;