Koha/t/db_dependent/Heading_MARC21.t
Nick Clemens d73f567366
Bug 33277: Do not search using thesaurus when linking non 6XX fields
This patch sets thesaurus as undefined when linking any field except 6XX

This fixes the case where authrotiy records don't have the thesaurus defined

Consequently - this means that Koha does not support multiple thesaurus records
for authorities outside of subjects

i.e. Using the default linker, and having both an LCSH and Sears record for 'Shakespeare,William'
A 100 entry will find two results and the heading won't be linked. Previously we always linked to the LCSH

To test:
1 - Import the attached auths and biblio (from bug 33159 comment 24)
2 - Set system preferences:
    RequireChoosingExistingAuthority - don't require
    AutoCreateAuthorities - don't generate
    CatalogModuleRelink - Do
    LinkerKeepStale - Don't
    LinkerModule - default
    LinkerRelink - do
3 - Edit the imported bib
4 - Save it
5 - Headings are not linked except 600
6 - Apply patch
7 - Restart all
8 - Edit and save record
9 - Headings are successfully linked

Signed-off-by: Frank Hansen <frank.hansen@ub.lu.se>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2023-05-10 15:26:22 -03:00

36 lines
1.5 KiB
Perl
Executable file

#!/usr/bin/perl
#
# This Koha test module is a stub!
# Add more tests here!!!
use strict;
use warnings;
use Test::More tests => 10;
use C4::Context;
BEGIN {
use_ok('C4::Heading', qw( field new_from_field display_form search_form ));
}
SKIP: {
skip "MARC21 heading tests not applicable to UNIMARC", 2 if C4::Context->preference('marcflavour') eq 'UNIMARC';
my $field = MARC::Field->new( '650', ' ', '2', a => 'Uncles', x => 'Fiction' );
my $heading = C4::Heading->new_from_field($field);
is($heading->display_form(), 'Uncles--Fiction', 'Display form generation');
is($heading->search_form(), 'Uncles generalsubdiv Fiction', 'Search form generation');
is($heading->{thesaurus}, 'mesh', 'Thesaurus generation');
$field = MARC::Field->new( '830', ' ', '4', a => 'The dark is rising ;', v => '3' );
$heading = C4::Heading->new_from_field($field);
is($heading->display_form(), 'The dark is rising ;', 'Display form generation');
is($heading->search_form(), 'The dark is rising', 'Search form generation');
ok( !defined $heading->{thesaurus}, 'Thesaurus is not generated outside of 6XX fields');
$field = MARC::Field->new( '100', '1', '', a => 'Yankovic, Al', d => '1959-' );
$heading = C4::Heading->new_from_field($field);
is($heading->display_form(), 'Yankovic, Al 1959-', 'Display form generation');
is($heading->search_form(), 'Yankovic, Al 1959', 'Search form generation');
ok( !defined $heading->{thesaurus}, 'Thesaurus is not generated outside of 6XX fields');
}