From c7a500e3c10e2fa5a1cf6f3cc25538e10d56993e Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Fri, 26 Mar 2021 13:12:11 -0300 Subject: [PATCH] Bug 14957: (QA follow-up) Rename 'merge' => 'overlay' This patch acknowledges the fact that 'merging' has a different meaning in Koha than the behavior this great patchset introduces. The more idiomatic way of describing the behavior is to talk about 'overlay rules'. This patch also: - Fixes kohastructure.sql missing table encoding a collation - Fixes the atomic update completely missing a table - Moves the syspref entry to 'Importing', probably a rebase issue Signed-off-by: Tomas Cohen Arazi Signed-off-by: Martin Renvoize --- C4/Biblio.pm | 43 +++++++----- .../{MarcMergeRule.pm => MarcOverlayRule.pm} | 22 +++--- Koha/{MarcMergeRule.pm => MarcOverlayRule.pm} | 10 +-- ...{MarcMergeRules.pm => MarcOverlayRules.pm} | 44 ++++++------ ...c-merge-rules.pl => marc-overlay-rules.pl} | 23 +++--- .../bug_14957-marc-merge-rules.perl | 64 ++++++++++------- installer/data/mysql/kohastructure.sql | 28 ++++---- installer/data/mysql/mandatory/sysprefs.sql | 2 +- .../data/mysql/mandatory/userpermissions.sql | 2 +- .../prog/en/includes/admin-menu.inc | 4 +- .../prog/en/includes/permissions.inc | 6 +- .../prog/en/modules/admin/admin-home.tt | 4 +- ...c-merge-rules.tt => marc-overlay-rules.tt} | 70 +++++++++---------- .../admin/preferences/cataloguing.pref | 14 ++-- .../{MarcMergeRules.t => MarcOverlayRules.t} | 62 ++++++++-------- 15 files changed, 204 insertions(+), 194 deletions(-) rename Koha/Exceptions/{MarcMergeRule.pm => MarcOverlayRule.pm} (65%) rename Koha/{MarcMergeRule.pm => MarcOverlayRule.pm} (83%) rename Koha/{MarcMergeRules.pm => MarcOverlayRules.pm} (88%) rename admin/{marc-merge-rules.pl => marc-overlay-rules.pl} (83%) rename koha-tmpl/intranet-tmpl/prog/en/modules/admin/{marc-merge-rules.tt => marc-overlay-rules.tt} (90%) rename t/db_dependent/Biblio/{MarcMergeRules.t => MarcOverlayRules.t} (88%) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index 472754e028..f1c94d09b7 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -59,7 +59,7 @@ BEGIN { DelBiblio BiblioAutoLink LinkBibHeadingsToAuthorities - ApplyMarcMergeRules + ApplyMarcOverlayRules TransformMarcToKoha TransformHtmlToMarc TransformHtmlToXml @@ -101,12 +101,12 @@ use Koha::Acquisition::Currencies; use Koha::Biblio::Metadatas; use Koha::Holds; use Koha::ItemTypes; +use Koha::MarcOverlayRules; use Koha::Plugins; use Koha::SearchEngine; use Koha::SearchEngine::Indexer; use Koha::Libraries; use Koha::Util::MARC; -use Koha::MarcMergeRules; use vars qw($debug $cgi_debug); @@ -327,9 +327,9 @@ The C<$options> argument is a hashref with additional parameters: =item C -This parameter is forwared to L where it is used for -selecting the current rule set if Marc Merge Rules is enabled. -See L for more details. +This parameter is forwarded to L where it is used for +selecting the current rule set if MARCOverlayRules is enabled. +See L for more details. =item C @@ -378,12 +378,17 @@ sub ModBiblio { _strip_item_fields($record, $frameworkcode); - # apply merge rules - if (C4::Context->preference('MARCMergeRules') && $biblionumber && defined $options && exists $options->{'context'}) { - $record = ApplyMarcMergeRules({ + # apply overlay rules + if ( C4::Context->preference('MARCOverlayRules') + && $biblionumber + && defined $options + && exists $options->{'context'} ) + { + $record = ApplyMarcOverlayRules( + { biblionumber => $biblionumber, - record => $record, - context => $options->{'context'}, + record => $record, + context => $options->{'context'}, } ); } @@ -3241,9 +3246,9 @@ sub RemoveAllNsb { return $record; } -=head2 ApplyMarcMergeRules +=head2 ApplyMarcOverlayRules - my $record = ApplyMarcMergeRules($params) + my $record = ApplyMarcOverlayRules($params) Applies marc merge rules to a record. @@ -3279,30 +3284,28 @@ fields with this field tag from C. =cut -sub ApplyMarcMergeRules { +sub ApplyMarcOverlayRules { my ($params) = @_; my $biblionumber = $params->{biblionumber}; my $incoming_record = $params->{record}; if (!$biblionumber) { - carp 'ApplyMarcMergeRules called on undefined biblionumber'; + carp 'ApplyMarcOverlayRules called on undefined biblionumber'; return; } if (!$incoming_record) { - carp 'ApplyMarcMergeRules called on undefined record'; + carp 'ApplyMarcOverlayRules called on undefined record'; return; } my $old_record = GetMarcBiblio({ biblionumber => $biblionumber }); - # Skip merge rules if called with no context + # Skip overlay rules if called with no context if ($old_record && defined $params->{context}) { - return Koha::MarcMergeRules->merge_records($old_record, $incoming_record, $params->{context}); + return Koha::MarcOverlayRules->merge_records($old_record, $incoming_record, $params->{context}); } return $incoming_record; } -1; - =head2 _after_biblio_action_hooks Helper method that takes care of calling all plugin hooks @@ -3326,6 +3329,8 @@ sub _after_biblio_action_hooks { ); } +1; + __END__ =head1 AUTHOR diff --git a/Koha/Exceptions/MarcMergeRule.pm b/Koha/Exceptions/MarcOverlayRule.pm similarity index 65% rename from Koha/Exceptions/MarcMergeRule.pm rename to Koha/Exceptions/MarcOverlayRule.pm index a3cd708c45..f3596022e7 100644 --- a/Koha/Exceptions/MarcMergeRule.pm +++ b/Koha/Exceptions/MarcOverlayRule.pm @@ -1,4 +1,4 @@ -package Koha::Exceptions::MarcMergeRule; +package Koha::Exceptions::MarcOverlayRule; # This file is part of Koha. # @@ -19,34 +19,34 @@ use Modern::Perl; use Exception::Class ( - 'Koha::Exceptions::MarcMergeRule' => { + 'Koha::Exceptions::MarcOverlayRule' => { description => 'Something went wrong!', }, - 'Koha::Exceptions::MarcMergeRule::InvalidTagRegExp' => { - isa => 'Koha::Exceptions::MarcMergeRule', + 'Koha::Exceptions::MarcOverlayRule::InvalidTagRegExp' => { + isa => 'Koha::Exceptions::MarcOverlayRule', description => 'Invalid regular expression for tag' }, - 'Koha::Exceptions::MarcMergeRule::InvalidControlFieldActions' => { - isa => 'Koha::Exceptions::MarcMergeRule', + 'Koha::Exceptions::MarcOverlayRule::InvalidControlFieldActions' => { + isa => 'Koha::Exceptions::MarcOverlayRule', description => 'Invalid control field actions' } ); =head1 NAME -Koha::Exceptions::MarcMergeRule - Base class for MarcMergeRule exceptions +Koha::Exceptions::MarcOverlayRule - Base class for MarcOverlayRule exceptions =head1 Exceptions -=head2 Koha::Exceptions::MarcMergeRule +=head2 Koha::Exceptions::MarcOverlayRule -Generic MarcMergeRule exception +Generic MarcOverlayRule exception -=head2 Koha::Exceptions::MarcMergeRule::InvalidTagRegExp +=head2 Koha::Exceptions::MarcOverlayRule::InvalidTagRegExp Exception for rule validation when rule tag is an invalid regular expression -=head2 Koha::Exceptions::MarcMergeRule::InvalidControlFieldActions +=head2 Koha::Exceptions::MarcOverlayRule::InvalidControlFieldActions Exception for rule validation for control field rules with invalid combination of actions diff --git a/Koha/MarcMergeRule.pm b/Koha/MarcOverlayRule.pm similarity index 83% rename from Koha/MarcMergeRule.pm rename to Koha/MarcOverlayRule.pm index d1bdbbac18..9a753ef544 100644 --- a/Koha/MarcMergeRule.pm +++ b/Koha/MarcOverlayRule.pm @@ -1,4 +1,4 @@ -package Koha::MarcMergeRule; +package Koha::MarcOverlayRule; # This file is part of Koha. # @@ -23,7 +23,7 @@ my $cache = Koha::Caches->get_instance(); =head1 NAME -Koha::MarcMergeRule - Koha MarcMergeRule Object class +Koha::MarcOverlayRule - Koha MarcOverlayRule Object class =cut @@ -35,7 +35,7 @@ Override C to clear marc merge rules cache. sub store { my $self = shift @_; - $cache->clear_from_cache('marc_merge_rules'); + $cache->clear_from_cache('marc_overlay_rules'); $self->SUPER::store(@_); } @@ -47,12 +47,12 @@ Override C to clear marc merge rules cache. sub delete { my $self = shift @_; - $cache->clear_from_cache('marc_merge_rules'); + $cache->clear_from_cache('marc_overlay_rules'); $self->SUPER::delete(@_); } sub _type { - return 'MarcMergeRule'; + return 'MarcOverlayRule'; } 1; diff --git a/Koha/MarcMergeRules.pm b/Koha/MarcOverlayRules.pm similarity index 88% rename from Koha/MarcMergeRules.pm rename to Koha/MarcOverlayRules.pm index 555402ff22..11b33d1928 100644 --- a/Koha/MarcMergeRules.pm +++ b/Koha/MarcOverlayRules.pm @@ -1,4 +1,4 @@ -package Koha::MarcMergeRules; +package Koha::MarcOverlayRules; # This file is part of Koha. # @@ -17,10 +17,10 @@ package Koha::MarcMergeRules; use Modern::Perl; use List::Util qw(first); -use Koha::MarcMergeRule; +use Koha::MarcOverlayRule; use Carp; -use Koha::Exceptions::MarcMergeRule; +use Koha::Exceptions::MarcOverlayRule; use Try::Tiny; use Scalar::Util qw(looks_like_number); @@ -30,11 +30,11 @@ my $cache = Koha::Caches->get_instance(); =head1 NAME -Koha::MarcMergeRules - Koha MarcMergeRules Object set class +Koha::MarcOverlayRules - Koha MarcOverlayRules Object set class =head1 API -=head2 Class Methods +=head2 Class methods =head3 operations @@ -48,9 +48,9 @@ sub operations { =head3 context_rules - my $rules = Koha::MarcMergeRules->context_rules($context); + my $rules = Koha::MarcOverlayRules->context_rules($context); -Gets all MARC merge rules for the supplied C<$context> (hashref with { module => filter, ... } values). +Gets all MARC overlay rules for the supplied C<$context> (hashref with { module => filter, ... } values). =cut @@ -59,7 +59,7 @@ sub context_rules { return unless %{$context}; - my $rules = $cache->get_from_cache('marc_merge_rules', { unsafe => 1 }); + my $rules = $cache->get_from_cache('marc_overlay_rules', { unsafe => 1 }); if (!$rules) { $rules = {}; @@ -93,7 +93,7 @@ sub context_rules { push @{$regexps}, [$rule{tag}, $operations]; } } - $cache->set_in_cache('marc_merge_rules', $rules); + $cache->set_in_cache('marc_overlay_rules', $rules); } my $context_rules = undef; @@ -120,9 +120,9 @@ sub context_rules { =head3 merge_records - my $merged_record = Koha::MarcMergeRules->merge_records($old_record, $incoming_record, $context); + my $merged_record = Koha::MarcOverlayRules->merge_records($old_record, $incoming_record, $context); -Merge C<$old_record> with C<$incoming_record> applying merge rules for C<$context>. +Overlay C<$old_record> with C<$incoming_record> applying overlay rules for C<$context>. Returns merged record C<$merged_record>. C<$old_record>, C<$incoming_record> and C<$merged_record> are all MARC::Record objects. @@ -289,12 +289,12 @@ sub merge_records { } sub _clear_caches { - $cache->clear_from_cache('marc_merge_rules'); + $cache->clear_from_cache('marc_overlay_rules'); } =head2 find_or_create -Override C to clear marc merge rules cache. +Override C to clear marc overlay rules cache. =cut @@ -306,7 +306,7 @@ sub find_or_create { =head2 update -Override C to clear marc merge rules cache. +Override C to clear marc overlay rules cache. =cut @@ -318,7 +318,7 @@ sub update { =head2 delete -Override C to clear marc merge rules cache. +Override C to clear marc overlay rules cache. =cut @@ -330,11 +330,11 @@ sub delete { =head2 validate - Koha::MarcMergeRules->validate($rule_data); + Koha::MarcOverlayRules->validate($rule_data); -Validates C<$rule_data>. Throws C +Validates C<$rule_data>. Throws C if C<$rule_data->{tag}> contains an invalid regular expression. Throws -C if contains invalid +C if contains invalid combination of actions for control fields. Otherwise returns true. =cut @@ -346,7 +346,7 @@ sub validate { if ($rule_data->{tag} ne '*') { eval { qr/$rule_data->{tag}/ }; if ($@) { - Koha::Exceptions::MarcMergeRule::InvalidTagRegExp->throw( + Koha::Exceptions::MarcOverlayRule::InvalidTagRegExp->throw( "Invalid tag regular expression" ); } @@ -358,7 +358,7 @@ sub validate { $rule_data->{append} && !$rule_data->{remove} ) { - Koha::Exceptions::MarcMergeRule::InvalidControlFieldActions->throw( + Koha::Exceptions::MarcOverlayRule::InvalidControlFieldActions->throw( "Combination of allow append and skip remove not permitted for control fields" ); } @@ -367,7 +367,7 @@ sub validate { } sub _type { - return 'MarcMergeRule'; + return 'MarcOverlayRule'; } =head3 object_class @@ -375,7 +375,7 @@ sub _type { =cut sub object_class { - return 'Koha::MarcMergeRule'; + return 'Koha::MarcOverlayRule'; } 1; diff --git a/admin/marc-merge-rules.pl b/admin/marc-overlay-rules.pl similarity index 83% rename from admin/marc-merge-rules.pl rename to admin/marc-overlay-rules.pl index 0c9a5433fe..e143f6c448 100755 --- a/admin/marc-merge-rules.pl +++ b/admin/marc-overlay-rules.pl @@ -34,11 +34,10 @@ use C4::ImportBatch; use C4::Matcher; use C4::BackgroundJob; use C4::Labels::Batch; -use Koha::MarcMergeRules; -use Koha::MarcMergeRule; -use Koha::Patron::Categories; # TODO: Required? Try without use +use Koha::MarcOverlayRules; +use Koha::Patron::Categories; -my $script_name = "/cgi-bin/koha/admin/marc-merge-rules.pl"; +my $script_name = "/cgi-bin/koha/admin/marc-overlay-rules.pl"; my $input = new CGI; my $op = $input->param('op') || ''; @@ -67,11 +66,11 @@ my $rule_from_cgi = sub { my ($template, $loggedinuser, $cookie) = get_template_and_user( { - template_name => "admin/marc-merge-rules.tt", + template_name => "admin/marc-overlay-rules.tt", query => $input, type => "intranet", authnotrequired => 0, - flagsrequired => { parameters => 'manage_marc_merge_rules' }, + flagsrequired => { parameters => 'manage_marc_overlay_rules' }, debug => 1, } ); @@ -83,7 +82,7 @@ our $sessionID = $cookies{'CGISESSID'}->value; my $get_rules = sub { # TODO: order? - return [map { { $_->get_columns() } } Koha::MarcMergeRules->_resultset->all]; + return [map { { $_->get_columns() } } Koha::MarcOverlayRules->_resultset->all]; }; my $rules; @@ -101,7 +100,7 @@ if ($op eq 'remove' || $op eq 'doremove') { elsif ($op eq 'doremove') { my @remove_ids = $input->multi_param('batchremove'); push @remove_ids, scalar $input->param('id') if $input->param('id'); - Koha::MarcMergeRules->search({ id => { in => \@remove_ids } })->delete(); + Koha::MarcOverlayRules->search({ id => { in => \@remove_ids } })->delete(); $rules = $get_rules->(); } } @@ -120,19 +119,19 @@ elsif ($op eq 'doedit' || $op eq 'add') { my $rule_data = $rule_from_cgi->($input); if (!@{$errors}) { try { - Koha::MarcMergeRules->validate($rule_data); + Koha::MarcOverlayRules->validate($rule_data); } catch { die $_ unless blessed $_ && $_->can('rethrow'); - if ($_->isa('Koha::Exceptions::MarcMergeRule::InvalidTagRegExp')) { + if ($_->isa('Koha::Exceptions::MarcOverlayRule::InvalidTagRegExp')) { push @{$errors}, { type => 'error', code => 'invalid_tag_regexp', tag => $rule_data->{tag}, }; } - elsif ($_->isa('Koha::Exceptions::MarcMergeRule::InvalidControlFieldActions')) { + elsif ($_->isa('Koha::Exceptions::MarcOverlayRule::InvalidControlFieldActions')) { push @{$errors}, { type => 'error', code => 'invalid_control_field_actions', @@ -144,7 +143,7 @@ elsif ($op eq 'doedit' || $op eq 'add') { } }; if (!@{$errors}) { - my $rule = Koha::MarcMergeRules->find_or_create($rule_data); + my $rule = Koha::MarcOverlayRules->find_or_create($rule_data); # Need to call set and store here in case we have an update $rule->set($rule_data); $rule->store(); diff --git a/installer/data/mysql/atomicupdate/bug_14957-marc-merge-rules.perl b/installer/data/mysql/atomicupdate/bug_14957-marc-merge-rules.perl index e6f1c69c6c..e915f5bc87 100644 --- a/installer/data/mysql/atomicupdate/bug_14957-marc-merge-rules.perl +++ b/installer/data/mysql/atomicupdate/bug_14957-marc-merge-rules.perl @@ -1,41 +1,51 @@ $DBversion = 'XXX'; # will be replaced by the RM if( CheckVersion( $DBversion ) ) { - my $sql = q{ - CREATE TABLE IF NOT EXISTS `marc_merge_rules` ( - `id` int(11) NOT NULL auto_increment, - `tag` varchar(255) NOT NULL, - `module` varchar(127) NOT NULL, - `filter` varchar(255) NOT NULL, - `add` tinyint NOT NULL, - `append` tinyint NOT NULL, - `remove` tinyint NOT NULL, - `delete` tinyint NOT NULL, - PRIMARY KEY(`id`) - ); - }; - $dbh->do( $sql ); - $sql = q{ + unless (TableExists('marc_overlay_rules_modules')) { + $dbh->do(q{ + CREATE TABLE `marc_overlay_rules_modules` ( + `name` varchar(127) NOT NULL, + `description` varchar(255), + `specificity` int(11) NOT NULL UNIQUE, + PRIMARY KEY(`name`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + }); + } + + unless (TableExists('marc_overlay_rules')) { + $dbh->do(q{ + CREATE TABLE IF NOT EXISTS `marc_overlay_rules` ( + `id` int(11) NOT NULL auto_increment, + `tag` varchar(255) NOT NULL, -- can be regexp, so need > 3 chars + `module` varchar(127) NOT NULL, + `filter` varchar(255) NOT NULL, + `add` TINYINT(1) NOT NULL DEFAULT 0, + `append` TINYINT(1) NOT NULL DEFAULT 0, + `remove` TINYINT(1) NOT NULL DEFAULT 0, + `delete` TINYINT(1) NOT NULL DEFAULT 0, + PRIMARY KEY(`id`), + CONSTRAINT `marc_overlay_rules_ibfk1` FOREIGN KEY (`module`) REFERENCES `marc_overlay_rules_modules` (`name`) ON DELETE CASCADE ON UPDATE CASCADE + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + }); + } + + $dbh->do(q{ INSERT IGNORE INTO systempreferences (`variable`, `value`, `options`, `explanation`, `type`) VALUES ( - 'MARCMergeRules', + 'MARCOverlayRules', '0', NULL, - 'Use the MARC merge rules system to decide what actions to take for each field when modifying records.', + 'Use the MARC record overlay rules system to decide what actions to take for each field when modifying records.', 'YesNo' ); - }; - $dbh->do( $sql ); + }); - $sql = q{ + $dbh->do(q{ INSERT IGNORE INTO permissions (module_bit, code, description) VALUES ( 3, - 'manage_marc_merge_rules', - 'Manage MARC merge rules configuration' + 'manage_marc_overlay_rules', + 'Manage MARC overlay rules configuration' ); - }; - $dbh->do( $sql ); + }); - # Always end with this (adjust the bug info) - SetVersion( $DBversion ); - print "Upgrade to $DBversion done (Bug 14957 - Write protecting MARC fields based on source of import)\n"; + NewVersion( $DBversion, 14957, "Add a way to define overlay rules for incoming MARC records)\n"; } diff --git a/installer/data/mysql/kohastructure.sql b/installer/data/mysql/kohastructure.sql index 27bec2b562..c6a9beac53 100644 --- a/installer/data/mysql/kohastructure.sql +++ b/installer/data/mysql/kohastructure.sql @@ -3387,11 +3387,11 @@ CREATE TABLE `marc_matchers` ( /*!40101 SET character_set_client = @saved_cs_client */; -- --- Table structure for table `marc_merge_rules_modules` +-- Table structure for table `marc_overlay_rules_modules` -- -DROP TABLE IF EXISTS `marc_merge_rules_modules`; -CREATE TABLE `marc_merge_rules_modules` ( +DROP TABLE IF EXISTS `marc_overlay_rules_modules`; +CREATE TABLE `marc_overlay_rules_modules` ( `name` varchar(127) NOT NULL, `description` varchar(255), `specificity` int(11) NOT NULL UNIQUE, @@ -3399,22 +3399,22 @@ CREATE TABLE `marc_merge_rules_modules` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- --- Table structure for table `marc_merge_rules` +-- Table structure for table `marc_overlay_rules` -- -DROP TABLE IF EXISTS `marc_merge_rules`; -CREATE TABLE IF NOT EXISTS `marc_merge_rules` ( - `id` int(11) NOT NULL auto_increment, - `tag` varchar(255) NOT NULL, -- can be regexp, so need > 3 chars +DROP TABLE IF EXISTS `marc_overlay_rules`; +CREATE TABLE IF NOT EXISTS `marc_overlay_rules` ( + `id` int(11) NOT NULL auto_increment, + `tag` varchar(255) NOT NULL, -- can be regexp, so need > 3 chars `module` varchar(127) NOT NULL, `filter` varchar(255) NOT NULL, - `add` tinyint NOT NULL, - `append` tinyint NOT NULL, - `remove` tinyint NOT NULL, - `delete` tinyint NOT NULL, + `add` TINYINT(1) NOT NULL DEFAULT 0, + `append` TINYINT(1) NOT NULL DEFAULT 0, + `remove` TINYINT(1) NOT NULL DEFAULT 0, + `delete` TINYINT(1) NOT NULL DEFAULT 0, PRIMARY KEY(`id`), - CONSTRAINT `marc_merge_rules_ibfk1` FOREIGN KEY (`module`) REFERENCES `marc_merge_rules_modules` (`name`) ON DELETE CASCADE ON UPDATE CASCADE -); + CONSTRAINT `marc_overlay_rules_ibfk1` FOREIGN KEY (`module`) REFERENCES `marc_overlay_rules_modules` (`name`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -- Table structure for table `marc_modification_template_actions` diff --git a/installer/data/mysql/mandatory/sysprefs.sql b/installer/data/mysql/mandatory/sysprefs.sql index 55238bf415..1e3b422be4 100644 --- a/installer/data/mysql/mandatory/sysprefs.sql +++ b/installer/data/mysql/mandatory/sysprefs.sql @@ -329,9 +329,9 @@ INSERT INTO systempreferences ( `variable`, `value`, `options`, `explanation`, ` ('MarcFieldForModifierName','',NULL,'Where to store the name of the record''s last modifier','Free'), ('MarcFieldsToOrder','',NULL,'Set the mapping values for a new order line created from a MARC record in a staged file. In a YAML format.','textarea'), ('MarcItemFieldsToOrder','',NULL,'Set the mapping values for new item records created from a MARC record in a staged file. In a YAML format.','textarea'), -('MARCMergeRules','0',NULL,'Use the MARC merge rules system to decide what actions to take for each field when modifying records.','YesNo'), ('MarkLostItemsAsReturned','batchmod,moredetail,cronjob,additem,pendingreserves,onpayment','claim_returned|batchmod|moredetail|cronjob|additem|pendingreserves|onpayment','Mark items as returned when flagged as lost','multiple'), ('MARCOrgCode','OSt','','Define MARC Organization Code for MARC21 records - http://www.loc.gov/marc/organizations/orgshome.html','free'), +('MARCOverlayRules','0',NULL,'Use the MARC record overlay rules system to decide what actions to take for each field when modifying records.','YesNo'), ('MaxFine',NULL,'','Maximum fine a patron can have for all late returns at one moment. Single item caps are specified in the circulation rules matrix.','Integer'), ('MaxItemsToDisplayForBatchDel','1000',NULL,'Display up to a given number of items in a single item deletionbatch.','Integer'), ('MaxItemsToDisplayForBatchMod','1000',NULL,'Display up to a given number of items in a single item modification batch.','Integer'), diff --git a/installer/data/mysql/mandatory/userpermissions.sql b/installer/data/mysql/mandatory/userpermissions.sql index 17e7e2a42c..ca50f66103 100644 --- a/installer/data/mysql/mandatory/userpermissions.sql +++ b/installer/data/mysql/mandatory/userpermissions.sql @@ -25,7 +25,7 @@ INSERT INTO permissions (module_bit, code, description) VALUES ( 3, 'manage_oai_sets', 'Manage OAI sets'), ( 3, 'manage_item_search_fields', 'Manage item search fields'), ( 3, 'manage_search_engine_config', 'Manage search engine configuration'), - ( 3, 'manage_marc_merge_rules', 'Manage MARC merge rules configuration'), + ( 3, 'manage_marc_overlay_rules', 'Manage MARC overlay rules configuration'), ( 3, 'manage_search_targets', 'Manage Z39.50 and SRU server configuration'), ( 3, 'manage_didyoumean', 'Manage Did you mean? configuration'), ( 3, 'manage_column_config', 'Manage column configuration'), diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc index cf17c193e4..8efc1fe246 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/admin-menu.inc @@ -93,8 +93,8 @@ [% IF ( CAN_user_parameters_manage_search_engine_config ) %]
  • Search engine configuration (Elasticsearch)
  • [% END %] - [% IF ( CAN_user_parameters_manage_marc_merge_rules ) %] -
  • MARC merge rules
  • + [% IF ( CAN_user_parameters_manage_marc_overlay_rules ) %] +
  • MARC overlay rules
  • [% END %] [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc index 3b1bbdf2e2..27a0a9a168 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc +++ b/koha-tmpl/intranet-tmpl/prog/en/includes/permissions.inc @@ -210,9 +210,9 @@ Manage search engine configuration ([% name | html %]) - [%- CASE 'manage_marc_merge_rules' -%] - - Manage MARC merge rules configuration + [%- CASE 'manage_marc_overlay_rules' -%] + + Manage MARC overlay rules configuration ([% name | html %]) [%- CASE 'manage_search_targets' -%] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt index b58bfd42b6..a6961a5ca8 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/admin-home.tt @@ -183,8 +183,8 @@
    Search engine configuration (Elasticsearch)
    Manage indexes, facets, and their mappings to MARC fields and subfields
    [% END %] -
    MARC merge rules
    -
    Managed MARC field merge rules
    +
    MARC overlay rules
    +
    Managed MARC field overlay rules
    [% END %] diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-merge-rules.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt similarity index 90% rename from koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-merge-rules.tt rename to koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt index 950eadd879..b23d1d99e7 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-merge-rules.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/marc-overlay-rules.tt @@ -1,6 +1,6 @@ [% USE Koha %] [% INCLUDE 'doc-head-open.inc' %] -Koha › Administration › MARC merge rules +Koha › Administration › MARC overlay rules [% INCLUDE 'doc-head-close.inc' %] [% Asset.css("css/datatables.css") %] [% INCLUDE 'datatables.inc' %] @@ -16,20 +16,20 @@ function doSubmit(op, id) { $('') .attr('name', 'op') .attr('value', op) - .appendTo('#marc-merge-rules-form'); + .appendTo('#marc-overlay-rules-form'); if(id) { $('') .attr('name', 'id') .attr('value', id) - .appendTo('#marc-merge-rules-form'); + .appendTo('#marc-overlay-rules-form'); } var valid = true; if (op == 'add' || op == 'edit') { var validate = [ - $('#marc-merge-rules-form input[name="filter"]'), - $('#marc-merge-rules-form input[name="tag"]') + $('#marc-overlay-rules-form input[name="filter"]'), + $('#marc-overlay-rules-form input[name="tag"]') ]; for(var i = 0; i < validate.length; i++) { if (validate[i].length) { @@ -44,7 +44,7 @@ function doSubmit(op, id) { } if (valid) { - $('#marc-merge-rules-form').submit(); + $('#marc-overlay-rules-form').submit(); } return valid; @@ -87,7 +87,7 @@ $(document).ready(function(){ }); } - $('#marc-merge-rules').dataTable($.extend(true, {}, dataTablesDefaults, { + $('#marc-overlay-rules').dataTable($.extend(true, {}, dataTablesDefaults, { "aoColumns": [ {"bSearchable": false, "bSortable": false}, {"sSortDataType": "dom-input"}, @@ -104,56 +104,56 @@ $(document).ready(function(){ "pagingType": "simple" })); - var merge_rules_presets = {}; - merge_rules_presets[_("Protect")] = { + var overlay_rules_presets = {}; + overlay_rules_presets[_("Protect")] = { 'add': 0, 'append': 0, 'remove': 0, 'delete': 0 }; - merge_rules_presets[_("Overwrite")] = { + overlay_rules_presets[_("Overwrite")] = { 'add': 1, 'append': 1, 'remove': 1, 'delete': 1 }; - merge_rules_presets[_("Add new")] = { + overlay_rules_presets[_("Add new")] = { 'add': 1, 'append': 0, 'remove': 0, 'delete': 0 }; - merge_rules_presets[_("Add and append")] = { + overlay_rules_presets[_("Add and append")] = { 'add': 1, 'append': 1, 'remove': 0, 'delete': 0 }; - merge_rules_presets[_("Protect from deletion")] = { + overlay_rules_presets[_("Protect from deletion")] = { 'add': 1, 'append': 1, 'remove': 1, 'delete': 0 }; - var merge_rules_label_to_value = {}; - merge_rules_label_to_value[_("Add")] = 1; - merge_rules_label_to_value[_("Append")] = 1; - merge_rules_label_to_value[_("Remove")] = 1; - merge_rules_label_to_value[_("Delete")] = 1; - merge_rules_label_to_value[_("Skip")] = 0; + var overlay_rules_label_to_value = {}; + overlay_rules_label_to_value[_("Add")] = 1; + overlay_rules_label_to_value[_("Append")] = 1; + overlay_rules_label_to_value[_("Remove")] = 1; + overlay_rules_label_to_value[_("Delete")] = 1; + overlay_rules_label_to_value[_("Skip")] = 0; function hash_config(config) { return JSON.stringify(config, Object.keys(config).sort()); } - var merge_rules_preset_map = {}; - $.each(merge_rules_presets, function(preset, config) { - merge_rules_preset_map[hash_config(config)] = preset; + var overlay_rules_preset_map = {}; + $.each(overlay_rules_presets, function(preset, config) { + overlay_rules_preset_map[hash_config(config)] = preset; }); - function operations_config_merge_rule_preset(config) { - return merge_rules_preset_map[hash_config(config)] || ''; + function operations_config_overlay_rule_preset(config) { + return overlay_rules_preset_map[hash_config(config)] || ''; } /* Set preset values according to operation config */ @@ -162,10 +162,10 @@ $(document).ready(function(){ var operations_config = {}; $('.rule-operation-action', $this).each(function() { var $operation = $(this); - operations_config[$operation.data('operation')] = merge_rules_label_to_value[$operation.text()]; + operations_config[$operation.data('operation')] = overlay_rules_label_to_value[$operation.text()]; }); $('.rule-preset', $this).text( - operations_config_merge_rule_preset(operations_config) || _("Custom") + operations_config_overlay_rule_preset(operations_config) || _("Custom") ); }); @@ -178,7 +178,7 @@ $(document).ready(function(){ operations_config[$this.attr('name')] = parseInt($this.val()); }); $('select[name="preset"]', $parent_row).val( - operations_config_merge_rule_preset(operations_config) + operations_config_overlay_rule_preset(operations_config) ); }); @@ -188,7 +188,7 @@ $(document).ready(function(){ var $parent_row = $this.closest('tr'); var preset = $this.val(); if (preset) { - $.each(merge_rules_presets[preset], function(operation, action) { + $.each(overlay_rules_presets[preset], function(operation, action) { $('select[name="' + operation + '"]', $parent_row).val(action); }); } @@ -264,19 +264,19 @@ $(document).ready(function(){ }); - + [% INCLUDE 'header.inc' %] [% INCLUDE 'cat-search.inc' %]
    -

    Manage MARC merge rules

    +

    Manage MARC overlay rules

    [% FOR m IN messages %]
    @@ -291,9 +291,9 @@ $(document).ready(function(){
    [% END %] -[% UNLESS Koha.Preference( 'MARCMergeRules' ) %] +[% UNLESS Koha.Preference( 'MARCOverlayRules' ) %]
    - The MARCMergeRules preference is not set, don't forget to enable it for rules to take effect. + The MARCOverlayRules preference is not set, don't forget to enable it for rules to take effect.
    [% END %] [% IF removeConfirm %] @@ -308,8 +308,8 @@ $(document).ready(function(){
    [% END %] -
    - + +
    diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref index bea83babae..be76b9b2cd 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/cataloguing.pref @@ -279,7 +279,12 @@ Cataloging: 1: "do" 0: "don't" - attempt to match aggressively by trying all variations of the ISSNs in the imported record as a phrase in the ISSN fields of already cataloged records. - + - + - pref: MARCOverlayRules + choices: + yes: "Use" + no: "Don't use" + - MARC overlay rules for incoming records, to decide which action to take for each field. Exporting: - - "Include the following fields when exporting BibTeX:" @@ -305,10 +310,3 @@ Cataloging: - "All values of repeating tags and subfields will be printed with the given RIS tag." - "
    " - "Use of TY ( record type ) as a key will replace the default TY with the field value of your choosing." - - - - When importing records - - pref: MARCMergeRules - choices: - yes: "use" - no: "don't use" - - MARC merge rules to decide which action to take for each field. diff --git a/t/db_dependent/Biblio/MarcMergeRules.t b/t/db_dependent/Biblio/MarcOverlayRules.t similarity index 88% rename from t/db_dependent/Biblio/MarcMergeRules.t rename to t/db_dependent/Biblio/MarcOverlayRules.t index cf178063d8..0a13426a7d 100755 --- a/t/db_dependent/Biblio/MarcMergeRules.t +++ b/t/db_dependent/Biblio/MarcOverlayRules.t @@ -22,19 +22,19 @@ use MARC::Record; use C4::Context; use C4::Biblio; -use Koha::Database; #?? +use Koha::Database; use Test::More tests => 23; use Test::MockModule; -use Koha::MarcMergeRules; +use Koha::MarcOverlayRules; use t::lib::Mocks; my $schema = Koha::Database->schema; $schema->storage->txn_begin; -t::lib::Mocks::mock_preference('MARCMergeRules', '1'); +t::lib::Mocks::mock_preference('MARCOverlayRules', '1'); # Create a record my $orig_record = MARC::Record->new(); @@ -54,11 +54,11 @@ $incoming_record->append_fields( MARC::Field->new('501', '', '', 'a' => 'Two cold bottles of beer in the fridge'), # Added ); -# Test default behavior when MARCMergeRules is enabled, but no rules defined (overwrite) +# Test default behavior when MARCOverlayRules is enabled, but no rules defined (overwrite) subtest 'Record fields has been overwritten when no merge rules are defined' => sub { plan tests => 4; - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); @@ -79,7 +79,7 @@ subtest 'Record fields has been overwritten when no merge rules are defined' => ); }; -my $rule = Koha::MarcMergeRules->find_or_create({ +my $rule = Koha::MarcOverlayRules->find_or_create({ tag => '*', module => 'source', filter => '*', @@ -92,7 +92,7 @@ my $rule = Koha::MarcMergeRules->find_or_create({ subtest 'Record fields has been protected when matched merge all rule operations are set to "0"' => sub { plan tests => 3; - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); @@ -122,7 +122,7 @@ subtest 'Only new fields has been added when add = 1, append = 0, remove = 0, de ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); @@ -159,7 +159,7 @@ subtest 'Only appended fields has been added when add = 0, append = 1, remove = ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); @@ -191,7 +191,7 @@ subtest 'Appended and added fields has been added when add = 1, append = 1, remo ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 6, "Record has the expected number of fields"); @@ -228,7 +228,7 @@ subtest 'Record fields has been only removed when add = 0, append = 0, remove = ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); @@ -258,7 +258,7 @@ subtest 'Record fields has been added and removed when add = 1, append = 0, remo ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); @@ -294,7 +294,7 @@ subtest 'Record fields has been appended and removed when add = 0, append = 1, r ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); @@ -324,7 +324,7 @@ subtest 'Record fields has been added, appended and removed when add = 0, append ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); @@ -361,7 +361,7 @@ subtest 'Record fields has been deleted when add = 0, append = 0, remove = 0, de ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); @@ -386,7 +386,7 @@ subtest 'Record fields has been added and deleted when add = 1, append = 0, remo ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); @@ -417,7 +417,7 @@ subtest 'Record fields has been appended and deleted when add = 0, append = 1, r ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); @@ -442,7 +442,7 @@ subtest 'Record fields has been added, appended and deleted when add = 1, append ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); @@ -473,7 +473,7 @@ subtest 'Record fields has been removed and deleted when add = 0, append = 0, re ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 1, "Record has the expected number of fields"); @@ -498,7 +498,7 @@ subtest 'Record fields has been added, removed and deleted when add = 1, append ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); @@ -529,7 +529,7 @@ subtest 'Record fields has been appended, removed and deleted when add = 0, appe ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); @@ -554,7 +554,7 @@ subtest 'Record fields has been overwritten when add = 1, append = 1, remove = 1 ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); @@ -578,7 +578,7 @@ subtest 'Record fields has been overwritten when add = 1, append = 1, remove = 1 # Test rule tag specificity # Protect field 500 with more specific tag value -my $skip_all_rule = Koha::MarcMergeRules->find_or_create({ +my $skip_all_rule = Koha::MarcOverlayRules->find_or_create({ tag => '500', module => 'source', filter => '*', @@ -591,7 +591,7 @@ my $skip_all_rule = Koha::MarcMergeRules->find_or_create({ subtest '"500" field has been protected when rule matching on tag "500" is add = 0, append = 0, remove = 0, delete = 0' => sub { plan tests => 4; - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); @@ -626,7 +626,7 @@ subtest '"5XX" fields has been protected when rule matching on regexp "5\d{2}" i ); $skip_all_rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); @@ -655,7 +655,7 @@ subtest 'Record fields has been overwritten when non wild card rule with filter ); $rule->store(); - my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); + my $merged_record = Koha::MarcOverlayRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); my @all_fields = $merged_record->fields(); @@ -679,7 +679,7 @@ subtest 'Record fields has been overwritten when non wild card rule with filter subtest 'An exception is thrown when append = 1, remove = 0 is set for control field rule' => sub { plan tests => 2; my $exception = try { - Koha::MarcMergeRules->validate({ + Koha::MarcOverlayRules->validate({ 'tag' => '008', 'append' => 1, 'remove' => 0, @@ -689,14 +689,14 @@ subtest 'An exception is thrown when append = 1, remove = 0 is set for control f return $_; }; ok(defined $exception, "Exception was caught"); - ok($exception->isa('Koha::Exceptions::MarcMergeRule::InvalidControlFieldActions'), "Exception is of correct class"); + ok($exception->isa('Koha::Exceptions::MarcOverlayRule::InvalidControlFieldActions'), "Exception is of correct class"); }; subtest 'An exception is thrown when rule tag is set to invalid regexp' => sub { plan tests => 2; my $exception = try { - Koha::MarcMergeRules->validate({ + Koha::MarcOverlayRules->validate({ 'tag' => '**' }); } @@ -704,7 +704,7 @@ subtest 'An exception is thrown when rule tag is set to invalid regexp' => sub { return $_; }; ok(defined $exception, "Exception was caught"); - ok($exception->isa('Koha::Exceptions::MarcMergeRule::InvalidTagRegExp'), "Exception is of correct class"); + ok($exception->isa('Koha::Exceptions::MarcOverlayRule::InvalidTagRegExp'), "Exception is of correct class"); }; $skip_all_rule->delete(); @@ -775,5 +775,3 @@ subtest 'context option in ModBiblio is handled correctly' => sub { $rule->delete(); $schema->storage->txn_rollback; - -1; -- 2.20.1
    Rule Module