Bug 18200: Fix a potential issue with preceding space in GetMarcUrls
Trims the URL in order prevent prefixing a space with http:// Normally you won't have a preceding space here, but I saw it happening one day and it does not cost much to resolve it. Bonus: Adding few simple tests in t/db_dependent/Biblio.t. Test plan: [1] Run t/db_dependent/Biblio.t [2] Add a 856$u with preceding space (MARC21) [3] Check opac-detail, Online access with OPACXSLTDetailsDisplay empty. Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl> Followed test plan, works as expected Signed-off-by: Marc Véron <veron@veron.ch> Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org> Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
parent
cd812cb421
commit
d455dc31d4
2 changed files with 15 additions and 3 deletions
|
@ -1988,6 +1988,7 @@ sub GetMarcUrls {
|
||||||
}
|
}
|
||||||
my @urls = $field->subfield('u');
|
my @urls = $field->subfield('u');
|
||||||
foreach my $url (@urls) {
|
foreach my $url (@urls) {
|
||||||
|
$url =~ s/^\s+|\s+$//g; # trim
|
||||||
my $marcurl;
|
my $marcurl;
|
||||||
if ( $marcflavour eq 'MARC21' ) {
|
if ( $marcflavour eq 'MARC21' ) {
|
||||||
my $s3 = $field->subfield('3');
|
my $s3 = $field->subfield('3');
|
||||||
|
|
|
@ -273,6 +273,17 @@ sub run_tests {
|
||||||
is( ( $marcflavour eq 'UNIMARC' && @$a2 == @$a1 + 1 ) ||
|
is( ( $marcflavour eq 'UNIMARC' && @$a2 == @$a1 + 1 ) ||
|
||||||
( $marcflavour ne 'UNIMARC' && @$a2 == @$a1 + 3 ), 1,
|
( $marcflavour ne 'UNIMARC' && @$a2 == @$a1 + 3 ), 1,
|
||||||
'Check the number of returned notes of GetMarcNotes' );
|
'Check the number of returned notes of GetMarcNotes' );
|
||||||
|
|
||||||
|
# test for GetMarcUrls
|
||||||
|
$marc_record->append_fields(
|
||||||
|
MARC::Field->new( '856', '', '', u => ' https://koha-community.org ' ),
|
||||||
|
MARC::Field->new( '856', '', '', u => 'koha-community.org' ),
|
||||||
|
);
|
||||||
|
my $marcurl = GetMarcUrls( $marc_record, $marcflavour );
|
||||||
|
is( @$marcurl, 2, 'GetMarcUrls returns two URLs' );
|
||||||
|
like( $marcurl->[0]->{MARCURL}, qr/^https/, 'GetMarcUrls did not stumble over a preceding space' );
|
||||||
|
ok( $marcflavour ne 'MARC21' || $marcurl->[1]->{MARCURL} =~ /^http:\/\//,
|
||||||
|
'GetMarcUrls prefixed a MARC21 URL with http://' );
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_title_field {
|
sub get_title_field {
|
||||||
|
@ -327,21 +338,21 @@ sub create_issn_field {
|
||||||
}
|
}
|
||||||
|
|
||||||
subtest 'MARC21' => sub {
|
subtest 'MARC21' => sub {
|
||||||
plan tests => 31;
|
plan tests => 34;
|
||||||
run_tests('MARC21');
|
run_tests('MARC21');
|
||||||
$schema->storage->txn_rollback;
|
$schema->storage->txn_rollback;
|
||||||
$schema->storage->txn_begin;
|
$schema->storage->txn_begin;
|
||||||
};
|
};
|
||||||
|
|
||||||
subtest 'UNIMARC' => sub {
|
subtest 'UNIMARC' => sub {
|
||||||
plan tests => 31;
|
plan tests => 34;
|
||||||
run_tests('UNIMARC');
|
run_tests('UNIMARC');
|
||||||
$schema->storage->txn_rollback;
|
$schema->storage->txn_rollback;
|
||||||
$schema->storage->txn_begin;
|
$schema->storage->txn_begin;
|
||||||
};
|
};
|
||||||
|
|
||||||
subtest 'NORMARC' => sub {
|
subtest 'NORMARC' => sub {
|
||||||
plan tests => 31;
|
plan tests => 34;
|
||||||
run_tests('NORMARC');
|
run_tests('NORMARC');
|
||||||
$schema->storage->txn_rollback;
|
$schema->storage->txn_rollback;
|
||||||
$schema->storage->txn_begin;
|
$schema->storage->txn_begin;
|
||||||
|
|
Loading…
Reference in a new issue