+ $controlnumber = GetMarcControlnumber( $marc_record, $marcflavour );
+ is( $controlnumber, '', 'GetMarcControlnumber handles records with empty 001' );
+
+ $field = $marc_record->field('001');
+ $field->update('123456789X');
+ $controlnumber = GetMarcControlnumber( $marc_record, $marcflavour );
+ is( $controlnumber, '123456789X', 'GetMarcControlnumber handles records with 001' );
+
+ ## Testing GetMarcISBN
+ my $record_for_isbn = MARC::Record->new();
+ my $isbns = GetMarcISBN( $record_for_isbn, $marcflavour );
+ is( scalar @$isbns, 0, '(GetMarcISBN) The record contains no ISBN');
+
+ # We add one ISBN
+ $isbn_field = create_isbn_field( $isbn, $marcflavour );
+ $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], $isbn, '(GetMarcISBN) The record contains our ISBN');
+
+ # We add 3 more ISBNs
+ $record_for_isbn = MARC::Record->new();
+ my @more_isbns = qw/1111111111 2222222222 3333333333 444444444/;
+ foreach (@more_isbns) {
+ $field = create_isbn_field( $_, $marcflavour );
+ $record_for_isbn->append_fields($field);
+ }
+ $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], $more_isbns[$i],
+ "(GetMarcISBN) Corretly retrieves ISBN #". ($i + 1));
+ }
+
+
+ is( GetMarcPrice( $record_for_isbn, $marcflavour ), 100,
+ "GetMarcPrice returns the correct value");
+}
+
+sub mock_marcfromkohafield {
+
+ $context->mock('marcfromkohafield',
+ sub {
+ my ( $self ) = shift;
+
+ if ( C4::Context->preference('marcflavour') eq 'MARC21' ||
+ C4::Context->preference('marcflavour') eq 'NORMARC' ) {
+
+ return {
+ '' => {
+ 'biblio.title' => [ '245', 'a' ],
+ 'biblio.biblionumber' => [ '999', 'c' ],
+ 'biblioitems.isbn' => [ '020', 'a' ],
+ 'biblioitems.issn' => [ '022', 'a' ],
+ 'biblioitems.biblioitemnumber' => [ '999', 'd' ]
+ }
+ };
+ } elsif ( C4::Context->preference('marcflavour') eq 'UNIMARC' ) {
+
+ return {
+ '' => {
+ 'biblio.title' => [ '200', 'a' ],
+ 'biblio.biblionumber' => [ '999', 'c' ],
+ 'biblioitems.isbn' => [ '010', 'a' ],
+ 'biblioitems.issn' => [ '011', 'a' ],
+ 'biblioitems.biblioitemnumber' => [ '090', 'a' ]
+ }
+ };
+ }
+ });
+}
+
+sub create_title_field {
+ my ( $title, $marcflavour ) = @_;
+
+ my $title_field = ( $marcflavour eq 'UNIMARC' ) ? '200' : '245';
+ my $field = MARC::Field->new( $title_field,'','','a' => $title);
+
+ return $field;
+}
+
+sub create_isbn_field {
+ my ( $isbn, $marcflavour ) = @_;
+
+ my $isbn_field = ( $marcflavour eq 'UNIMARC' ) ? '010' : '020';
+ my $field = MARC::Field->new( $isbn_field,'','','a' => $isbn);
+ # Add the price subfield
+ my $price_subfield = ( $marcflavour eq 'UNIMARC' ) ? 'd' : 'c' ;
+ $field->add_subfields( $price_subfield => '$100' );
+
+ return $field;
+}
+
+sub create_issn_field {
+ my ( $issn, $marcflavour ) = @_;
+
+ my $issn_field = ( $marcflavour eq 'UNIMARC' ) ? '011' : '022';
+ my $field = MARC::Field->new( $issn_field,'','','a' => $issn);
+
+ return $field;
+}
+
+subtest 'MARC21' => sub {
+ plan tests => 26;
+ run_tests('MARC21');
+ $dbh->rollback;