diff --git a/t/db_dependent/OAI/Server.t b/t/db_dependent/OAI/Server.t index 00b4c2191d..cfb56e3c27 100755 --- a/t/db_dependent/OAI/Server.t +++ b/t/db_dependent/OAI/Server.t @@ -107,14 +107,23 @@ foreach my $index ( 0 .. NUMBER_OF_MARC_RECORDS - 1 ) { $timestamp .= 'Z'; $timestamp =~ s/ /T/; my $biblio = Koha::Biblios->find($biblionumber); - $record = $biblio->metadata_record; + + # Use the same interface => 'opac' filter that get_biblio_marcxml applies, so + # the expected data reflects exactly what the OAI server will return regardless + # of MARC framework field-visibility settings. + $record = $biblio->metadata_record( { interface => 'opac' } ); my $record_transformed = $record->clone; $record_transformed->delete_fields( $record_transformed->field('952') ); + + # Derive dc:title from the filtered MARC record before converting to an XMLin + # hash, so oai_dc expectations stay consistent with the filtered output. + my $title_tag = C4::Context->preference('marcflavour') eq 'UNIMARC' ? '200' : '245'; + my $title_field = $record->field($title_tag); + $record_transformed = XMLin( $record_transformed->as_xml_record ); $record = XMLin( $record->as_xml_record ); push @header, { datestamp => $timestamp, identifier => "TEST:$biblionumber" }; my $dc = { - 'dc:title' => "Title $index", 'dc:language' => "lng", 'dc:type' => {}, 'xmlns:xsi' => 'http://www.w3.org/2001/XMLSchema-instance', @@ -123,6 +132,7 @@ foreach my $index ( 0 .. NUMBER_OF_MARC_RECORDS - 1 ) { 'xsi:schemaLocation' => 'http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd', }; + $dc->{'dc:title'} = $title_field->subfield('a') if $title_field; if ( C4::Context->preference('marcflavour') eq 'UNIMARC' ) { $dc->{'dc:identifier'} = $biblionumber; }