Bug 19693: (QA follow-up) Replace changed tag test

The test
  $MARCfrom->field('1..', '2..'))[0]->tag ne ($MARCto->field('1..', '2..'))[0]->tag
is not completely consistent with following code in sub merge.
I decided to get the authtype code from the old record that comes
from Koha and should include the type.
Remaining changes refer to indentation/comments.

Test plan:
Run t/db_dependent/Authority/Merge.t
Note: The test actually could be extended a bit for mocking MARC
flavor, but needs some additional framework support to work.

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Marcel de Rooy 2022-10-07 08:41:20 +00:00 committed by Tomas Cohen Arazi
parent 03da66ce20
commit d7d33744ba
No known key found for this signature in database
GPG Key ID: 0A272EA1B2F3C15F
1 changed files with 11 additions and 8 deletions

View File

@ -1418,15 +1418,18 @@ sub merge {
# Search authtypes and reporting tags
my $authfrom = Koha::Authorities->find($mergefrom);
my $authto = Koha::Authorities->find($mergeto);
my $authtypefrom = $authfrom ? Koha::Authority::Types->find($authfrom->authtypecode) : undef;
# If it is a mod ($authfrom == $authto) and there was a change of a heading tag $authtypefrom read from the database is of the current version of the auth rec., which is misleading, so we ignore it
if ($mergeto && $mergefrom == $mergeto && $MARCfrom && $MARCto &&
$MARCfrom->field('1..', '2..') && $MARCto->field('1..', '2..') && ($MARCfrom->field('1..', '2..'))[0]->tag ne ($MARCto->field('1..', '2..'))[0]->tag) {
undef $authtypefrom;
undef $authfrom;
}
my $authtypefrom;
my $authtypeto = $authto ? Koha::Authority::Types->find($authto->authtypecode) : undef;
if( $mergeto && $mergefrom == $mergeto && $MARCfrom ) {
# bulkmarcimport may have changed the authtype; see BZ 19693
my $old_type = $MARCfrom->subfield( get_auth_type_location() ); # going via default
if( $old_type && $authto && $old_type ne $authto->authtypecode ) {
# Type change: handled by simulating a postponed merge where the auth record has been deleted already
# This triggers a walk through all auth controlled tags
undef $authfrom;
}
}
$authtypefrom = Koha::Authority::Types->find($authfrom->authtypecode) if $authfrom;
my $auth_tag_to_report_from = $authtypefrom ? $authtypefrom->auth_tag_to_report : '';
my $auth_tag_to_report_to = $authtypeto ? $authtypeto->auth_tag_to_report : '';