use strict;
use warnings;
-use Test::More tests => 6;
+use Test::More tests => 17;
use MARC::Record;
use C4::Biblio;
BEGIN {
- use_ok('C4::Biblio');
+ use_ok('C4::Biblio');
}
my $isbn = '0590353403';
is($itemdata->{title},$title,'First test of GetBiblioItemData to get same result of previous two GetBiblioData tests.');
is($itemdata->{isbn},$isbn,'Second test checking it returns the correct isbn.');
+my $success = 0;
+$field = MARC::Field->new(
+ 655, ' ', ' ',
+ 'a' => 'Auction catalogs',
+ '9' => '1'
+ );
+eval {
+ $marc_record->append_fields($field);
+ $success = ModBiblio($marc_record,$biblionumber,'');
+} or do {
+ diag($@);
+ $success = 0;
+};
+ok($success, "ModBiblio handles authority-linked 655");
+
+eval {
+ $field->delete_subfields('a');
+ $marc_record->append_fields($field);
+ $success = ModBiblio($marc_record,$biblionumber,'');
+} or do {
+ diag($@);
+ $success = 0;
+};
+ok($success, "ModBiblio handles 655 with authority link but no heading");
+
+eval {
+ $field->delete_subfields('9');
+ $marc_record->append_fields($field);
+ $success = ModBiblio($marc_record,$biblionumber,'');
+} or do {
+ diag($@);
+ $success = 0;
+};
+ok($success, "ModBiblio handles 655 with no subfields");
+
+# Testing GetMarcISSN
+my $issns;
+$issns = GetMarcISSN( $marc_record, 'MARC21' );
+is( $issns->[0], undef,
+ 'GetMarcISSN handles records without 022 (list is empty)' );
+is( scalar @$issns, 0, 'GetMarcISSN handles records without 022 (number of elements correct)' );
+
+my $issn = '1234-1234';
+$field = MARC::Field->new( '022', '', '', 'a', => $issn );
+$marc_record->append_fields($field);
+$issns = GetMarcISSN( $marc_record, 'MARC21' );
+is( $issns->[0], $issn,
+ 'GetMarcISSN handles records with single 022 (first element is correct)' );
+is( scalar @$issns, 1, 'GetMARCISSN handles records with single 022 (number of elements correct)'
+);
+
+my @more_issns = qw/1111-1111 2222-2222 3333-3333/;
+foreach (@more_issns) {
+ $field = MARC::Field->new( '022', '', '', 'a', => $_ );
+ $marc_record->append_fields($field);
+}
+$issns = GetMarcISSN( $marc_record, 'MARC21' );
+is( scalar @$issns, 4, 'GetMARCISSN handles records with multiple 022 (number of elements correct)'
+);
+
+# Testing GetMarcControlnumber
+my $controlnumber;
+$controlnumber = GetMarcControlnumber( $marc_record, 'MARC21' );
+is( $controlnumber, '', 'GetMarcControlnumber handles records without 001' );
+
+$field = MARC::Field->new( '001', '' );
+$marc_record->append_fields($field);
+$controlnumber = GetMarcControlnumber( $marc_record, 'MARC21' );
+is( $controlnumber, '', 'GetMarcControlnumber handles records with empty 001' );
+
+$field = $marc_record->field('001');
+$field->update('123456789X');
+$controlnumber = GetMarcControlnumber( $marc_record, 'MARC21' );
+is( $controlnumber, '123456789X', 'GetMarcControlnumber handles records with 001' );
# clean up after ourselves
DelBiblio($biblionumber);