The current implementation of GetMarcISBN contradicts the documented API.
It currently returns an array of hashes with only one key (marcisbn)
which doesn't add any value to it.
I chose to fix GetMarcISBN to honour the API instead of changing thex
docs, because it seems a really silly change.
To test:
- Run:
prove t/db_dependent/Biblio.t
=> SUCCESS
- catalogue/detail.pl should correctly show ISBNs.
- opac/opac-detail.pl should correctly show ISBNs in both prog and bootstrap.
- opac-opac-sendshelf.pl should correctly show ISBNs in the email.
Sponsored-by: Universidad Nacional de Cordoba
Signed-off-by: Nicolas Legrand <nicolas.legrand@bulac.fr>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
} else { # assume marc21 if not unimarc
$scope = '020';
}
+
my @marcisbns;
- my $marcisbn;
foreach my $field ( $record->field($scope) ) {
my $isbn = $field->as_string();
if ( $isbn ne "" ) {
- $marcisbn = { marcisbn => $isbn, };
- push @marcisbns, $marcisbn;
+ push @marcisbns, $isbn;
}
}
<div class="yui-u" style="margin-top: 1em;">
<ul>
[% IF ( MARCISBNS ) %]
- <li><strong>ISBN:</strong><ul>[% FOREACH MARCISBN IN MARCISBNS %]<li>[% MARCISBN.marcisbn %]</li>[% END %]</ul></li>
+ <li><strong>ISBN:</strong><ul>[% FOREACH MARCISBN IN MARCISBNS %]<li>[% MARCISBN %]</li>[% END %]</ul></li>
[% ELSE %]
[% IF ( normalized_isbn ) %]
<li><strong>ISBN:</strong> [% normalized_isbn %]</li>
[% END %]
[% IF ( MARCISBNS ) %]
- <span class="results_summary isbn"><span class="label">ISBN:</span>[% FOREACH MARCISBN IN MARCISBNS %][% MARCISBN.marcisbn %][% IF ( loop.last ) %].[% ELSE %]; [% END %][% END %]</span>
+ <span class="results_summary isbn"><span class="label">ISBN:</span>[% FOREACH MARCISBN IN MARCISBNS %][% MARCISBN %][% IF ( loop.last ) %].[% ELSE %]; [% END %][% END %]</span>
[% ELSE %]
[% IF ( normalized_isbn ) %]
<span class="results_summary isbn"><span class="label">ISBN: </span>[% normalized_isbn %]</span>
[% IF ( BIBLIO_RESULT.ISBN && BIBLIO_RESULT.size > 0 ) %]
<span>
ISBN: [% FOREACH isbn IN BIBLIO_RESULT.ISBN %]
- [% isbn.marcisbn %]
+ [% isbn %]
[% UNLESS ( loop.last ) %]; [% END %]
[% END %]
</span><br/>
[% IF ( pages ) %]<span class="results_summary physical"><span class="label">Physical details:</span> [% pages %] [% illus %] [% size %]</span>[% END %]
[% IF ( MARCISBNS ) %]
- <span class="results_summary isbn"><span class="label">ISBN:</span>[% FOREACH MARCISBN IN MARCISBNS %][% MARCISBN.marcisbn %][% IF ( loop.last ) %].[% ELSE %]; [% END %][% END %]</span>
+ <span class="results_summary isbn"><span class="label">ISBN:</span>[% FOREACH MARCISBN IN MARCISBNS %][% MARCISBN %][% IF ( loop.last ) %].[% ELSE %]; [% END %][% END %]</span>
[% ELSE %]
[% IF ( normalized_isbn ) %]
<span class="results_summary isbn"><span class="label">ISBN: </span>[% normalized_isbn %]</span>
[% IF ( BIBLIO_RESULT.ISBN && BIBLIO_RESULT.size > 0 ) %]
<span>
ISBN: [% FOREACH isbn IN BIBLIO_RESULT.ISBN %]
- [% isbn.marcisbn %]
+ [% isbn %]
[% UNLESS ( loop.last ) %]; [% END %]
[% END %]
</span><br/>
use Test::More tests => 3;
use Test::MockModule;
-use Data::Dumper;
use MARC::Record;
$record_for_isbn->append_fields( $isbn_field );
$isbns = GetMarcISBN( $record_for_isbn, $marcflavour );
is( scalar @$isbns, 1, '(GetMarcISBN) The record contains one ISBN');
- is( $isbns->[0]->{ marcisbn }, $isbn, '(GetMarcISBN) The record contains our ISBN');
+ is( $isbns->[0], $isbn, '(GetMarcISBN) The record contains our ISBN');
# We add 3 more ISBNs
$record_for_isbn = MARC::Record->new();
$isbns = GetMarcISBN( $record_for_isbn, $marcflavour );
is( scalar @$isbns, 4, '(GetMarcISBN) The record contains 4 ISBNs');
for my $i (0 .. $#more_isbns) {
- is( $isbns->[$i]->{ marcisbn }, $more_isbns[$i],
+ is( $isbns->[$i], $more_isbns[$i],
"(GetMarcISBN) Corretly retrieves ISBN #". ($i + 1));
}