Lines 28-34
use Test::More tests => 23;
Link Here
|
28 |
use Test::MockModule; |
28 |
use Test::MockModule; |
29 |
|
29 |
|
30 |
use Koha::MarcMergeRules; |
30 |
use Koha::MarcMergeRules; |
31 |
use Koha::MarcMergeRulesModules; |
|
|
32 |
|
31 |
|
33 |
use t::lib::Mocks; |
32 |
use t::lib::Mocks; |
34 |
|
33 |
|
Lines 45-54
$orig_record->append_fields (
Link Here
|
45 |
MARC::Field->new('500', '','', 'a' => 'One bottle of beer in the fridge'), |
44 |
MARC::Field->new('500', '','', 'a' => 'One bottle of beer in the fridge'), |
46 |
); |
45 |
); |
47 |
|
46 |
|
48 |
my $modules_rs = Koha::MarcMergeRulesModules->search(undef, { order_by => { -desc => 'specificity' } }); |
|
|
49 |
my @modules; |
50 |
push @modules, $modules_rs->next; |
51 |
|
52 |
my $incoming_record = MARC::Record->new(); |
47 |
my $incoming_record = MARC::Record->new(); |
53 |
$incoming_record->append_fields( |
48 |
$incoming_record->append_fields( |
54 |
MARC::Field->new('250', '', '', 'a' => '256 bottles of beer on the wall'), # Unchanged |
49 |
MARC::Field->new('250', '', '', 'a' => '256 bottles of beer on the wall'), # Unchanged |
Lines 63-69
$incoming_record->append_fields(
Link Here
|
63 |
subtest 'Record fields has been overwritten when no merge rules are defined' => sub { |
58 |
subtest 'Record fields has been overwritten when no merge rules are defined' => sub { |
64 |
plan tests => 4; |
59 |
plan tests => 4; |
65 |
|
60 |
|
66 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
61 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
67 |
|
62 |
|
68 |
my @all_fields = $merged_record->fields(); |
63 |
my @all_fields = $merged_record->fields(); |
69 |
|
64 |
|
Lines 86-92
subtest 'Record fields has been overwritten when no merge rules are defined' =>
Link Here
|
86 |
|
81 |
|
87 |
my $rule = Koha::MarcMergeRules->find_or_create({ |
82 |
my $rule = Koha::MarcMergeRules->find_or_create({ |
88 |
tag => '*', |
83 |
tag => '*', |
89 |
module => $modules[0]->name, |
84 |
module => 'source', |
90 |
filter => '*', |
85 |
filter => '*', |
91 |
add => 0, |
86 |
add => 0, |
92 |
append => 0, |
87 |
append => 0, |
Lines 97-103
my $rule = Koha::MarcMergeRules->find_or_create({
Link Here
|
97 |
subtest 'Record fields has been protected when matched merge all rule operations are set to "0"' => sub { |
92 |
subtest 'Record fields has been protected when matched merge all rule operations are set to "0"' => sub { |
98 |
plan tests => 3; |
93 |
plan tests => 3; |
99 |
|
94 |
|
100 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
95 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
101 |
|
96 |
|
102 |
my @all_fields = $merged_record->fields(); |
97 |
my @all_fields = $merged_record->fields(); |
103 |
cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); |
98 |
cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); |
Lines 127-133
subtest 'Only new fields has been added when add = 1, append = 0, remove = 0, de
Link Here
|
127 |
); |
122 |
); |
128 |
$rule->store(); |
123 |
$rule->store(); |
129 |
|
124 |
|
130 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
125 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
131 |
|
126 |
|
132 |
my @all_fields = $merged_record->fields(); |
127 |
my @all_fields = $merged_record->fields(); |
133 |
cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); |
128 |
cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); |
Lines 164-170
subtest 'Only appended fields has been added when add = 0, append = 1, remove =
Link Here
|
164 |
); |
159 |
); |
165 |
$rule->store(); |
160 |
$rule->store(); |
166 |
|
161 |
|
167 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
162 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
168 |
|
163 |
|
169 |
my @all_fields = $merged_record->fields(); |
164 |
my @all_fields = $merged_record->fields(); |
170 |
cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); |
165 |
cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); |
Lines 196-202
subtest 'Appended and added fields has been added when add = 1, append = 1, remo
Link Here
|
196 |
); |
191 |
); |
197 |
$rule->store(); |
192 |
$rule->store(); |
198 |
|
193 |
|
199 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
194 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
200 |
|
195 |
|
201 |
my @all_fields = $merged_record->fields(); |
196 |
my @all_fields = $merged_record->fields(); |
202 |
cmp_ok(scalar @all_fields, '==', 6, "Record has the expected number of fields"); |
197 |
cmp_ok(scalar @all_fields, '==', 6, "Record has the expected number of fields"); |
Lines 233-239
subtest 'Record fields has been only removed when add = 0, append = 0, remove =
Link Here
|
233 |
); |
228 |
); |
234 |
$rule->store(); |
229 |
$rule->store(); |
235 |
|
230 |
|
236 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
231 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
237 |
|
232 |
|
238 |
my @all_fields = $merged_record->fields(); |
233 |
my @all_fields = $merged_record->fields(); |
239 |
cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); |
234 |
cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); |
Lines 263-269
subtest 'Record fields has been added and removed when add = 1, append = 0, remo
Link Here
|
263 |
); |
258 |
); |
264 |
$rule->store(); |
259 |
$rule->store(); |
265 |
|
260 |
|
266 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
261 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
267 |
|
262 |
|
268 |
my @all_fields = $merged_record->fields(); |
263 |
my @all_fields = $merged_record->fields(); |
269 |
cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); |
264 |
cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); |
Lines 299-305
subtest 'Record fields has been appended and removed when add = 0, append = 1, r
Link Here
|
299 |
); |
294 |
); |
300 |
$rule->store(); |
295 |
$rule->store(); |
301 |
|
296 |
|
302 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
297 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
303 |
|
298 |
|
304 |
my @all_fields = $merged_record->fields(); |
299 |
my @all_fields = $merged_record->fields(); |
305 |
cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); |
300 |
cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); |
Lines 329-335
subtest 'Record fields has been added, appended and removed when add = 0, append
Link Here
|
329 |
); |
324 |
); |
330 |
$rule->store(); |
325 |
$rule->store(); |
331 |
|
326 |
|
332 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
327 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
333 |
|
328 |
|
334 |
my @all_fields = $merged_record->fields(); |
329 |
my @all_fields = $merged_record->fields(); |
335 |
cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); |
330 |
cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); |
Lines 366-372
subtest 'Record fields has been deleted when add = 0, append = 0, remove = 0, de
Link Here
|
366 |
); |
361 |
); |
367 |
$rule->store(); |
362 |
$rule->store(); |
368 |
|
363 |
|
369 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
364 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
370 |
|
365 |
|
371 |
my @all_fields = $merged_record->fields(); |
366 |
my @all_fields = $merged_record->fields(); |
372 |
cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); |
367 |
cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); |
Lines 391-397
subtest 'Record fields has been added and deleted when add = 1, append = 0, remo
Link Here
|
391 |
); |
386 |
); |
392 |
$rule->store(); |
387 |
$rule->store(); |
393 |
|
388 |
|
394 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
389 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
395 |
|
390 |
|
396 |
my @all_fields = $merged_record->fields(); |
391 |
my @all_fields = $merged_record->fields(); |
397 |
cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); |
392 |
cmp_ok(scalar @all_fields, '==', 4, "Record has the expected number of fields"); |
Lines 422-428
subtest 'Record fields has been appended and deleted when add = 0, append = 1, r
Link Here
|
422 |
); |
417 |
); |
423 |
$rule->store(); |
418 |
$rule->store(); |
424 |
|
419 |
|
425 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
420 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
426 |
|
421 |
|
427 |
my @all_fields = $merged_record->fields(); |
422 |
my @all_fields = $merged_record->fields(); |
428 |
cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); |
423 |
cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); |
Lines 447-453
subtest 'Record fields has been added, appended and deleted when add = 1, append
Link Here
|
447 |
); |
442 |
); |
448 |
$rule->store(); |
443 |
$rule->store(); |
449 |
|
444 |
|
450 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
445 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
451 |
|
446 |
|
452 |
my @all_fields = $merged_record->fields(); |
447 |
my @all_fields = $merged_record->fields(); |
453 |
cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); |
448 |
cmp_ok(scalar @all_fields, '==', 5, "Record has the expected number of fields"); |
Lines 478-484
subtest 'Record fields has been removed and deleted when add = 0, append = 0, re
Link Here
|
478 |
); |
473 |
); |
479 |
$rule->store(); |
474 |
$rule->store(); |
480 |
|
475 |
|
481 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
476 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
482 |
|
477 |
|
483 |
my @all_fields = $merged_record->fields(); |
478 |
my @all_fields = $merged_record->fields(); |
484 |
cmp_ok(scalar @all_fields, '==', 1, "Record has the expected number of fields"); |
479 |
cmp_ok(scalar @all_fields, '==', 1, "Record has the expected number of fields"); |
Lines 503-509
subtest 'Record fields has been added, removed and deleted when add = 1, append
Link Here
|
503 |
); |
498 |
); |
504 |
$rule->store(); |
499 |
$rule->store(); |
505 |
|
500 |
|
506 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
501 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
507 |
|
502 |
|
508 |
my @all_fields = $merged_record->fields(); |
503 |
my @all_fields = $merged_record->fields(); |
509 |
cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); |
504 |
cmp_ok(scalar @all_fields, '==', 3, "Record has the expected number of fields"); |
Lines 534-540
subtest 'Record fields has been appended, removed and deleted when add = 0, appe
Link Here
|
534 |
); |
529 |
); |
535 |
$rule->store(); |
530 |
$rule->store(); |
536 |
|
531 |
|
537 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
532 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
538 |
|
533 |
|
539 |
my @all_fields = $merged_record->fields(); |
534 |
my @all_fields = $merged_record->fields(); |
540 |
cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); |
535 |
cmp_ok(scalar @all_fields, '==', 2, "Record has the expected number of fields"); |
Lines 559-565
subtest 'Record fields has been overwritten when add = 1, append = 1, remove = 1
Link Here
|
559 |
); |
554 |
); |
560 |
$rule->store(); |
555 |
$rule->store(); |
561 |
|
556 |
|
562 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
557 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
563 |
|
558 |
|
564 |
my @all_fields = $merged_record->fields(); |
559 |
my @all_fields = $merged_record->fields(); |
565 |
|
560 |
|
Lines 585-591
subtest 'Record fields has been overwritten when add = 1, append = 1, remove = 1
Link Here
|
585 |
# Protect field 500 with more specific tag value |
580 |
# Protect field 500 with more specific tag value |
586 |
my $skip_all_rule = Koha::MarcMergeRules->find_or_create({ |
581 |
my $skip_all_rule = Koha::MarcMergeRules->find_or_create({ |
587 |
tag => '500', |
582 |
tag => '500', |
588 |
module => $modules[0]->name, |
583 |
module => 'source', |
589 |
filter => '*', |
584 |
filter => '*', |
590 |
add => 0, |
585 |
add => 0, |
591 |
append => 0, |
586 |
append => 0, |
Lines 596-602
my $skip_all_rule = Koha::MarcMergeRules->find_or_create({
Link Here
|
596 |
subtest '"500" field has been protected when rule matching on tag "500" is add = 0, append = 0, remove = 0, delete = 0' => sub { |
591 |
subtest '"500" field has been protected when rule matching on tag "500" is add = 0, append = 0, remove = 0, delete = 0' => sub { |
597 |
plan tests => 4; |
592 |
plan tests => 4; |
598 |
|
593 |
|
599 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
594 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
600 |
|
595 |
|
601 |
my @all_fields = $merged_record->fields(); |
596 |
my @all_fields = $merged_record->fields(); |
602 |
|
597 |
|
Lines 631-637
subtest '"5XX" fields has been protected when rule matching on regexp "5\d{2}" i
Link Here
|
631 |
); |
626 |
); |
632 |
$skip_all_rule->store(); |
627 |
$skip_all_rule->store(); |
633 |
|
628 |
|
634 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
629 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
635 |
|
630 |
|
636 |
my @all_fields = $merged_record->fields(); |
631 |
my @all_fields = $merged_record->fields(); |
637 |
|
632 |
|
Lines 660-666
subtest 'Record fields has been overwritten when non wild card rule with filter
Link Here
|
660 |
); |
655 |
); |
661 |
$rule->store(); |
656 |
$rule->store(); |
662 |
|
657 |
|
663 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { $modules[0]->name => 'test' }); |
658 |
my $merged_record = Koha::MarcMergeRules->merge_records($orig_record, $incoming_record, { 'source' => 'test' }); |
664 |
|
659 |
|
665 |
my @all_fields = $merged_record->fields(); |
660 |
my @all_fields = $merged_record->fields(); |
666 |
|
661 |
|
Lines 719-725
subtest 'context option in ModBiblio is handled correctly' => sub {
Link Here
|
719 |
$rule->set( |
714 |
$rule->set( |
720 |
{ |
715 |
{ |
721 |
tag => '250', |
716 |
tag => '250', |
722 |
module => $modules[0]->name, |
717 |
module => 'source', |
723 |
filter => '*', |
718 |
filter => '*', |
724 |
'add' => 0, |
719 |
'add' => 0, |
725 |
'append' => 0, |
720 |
'append' => 0, |
Lines 754-760
subtest 'context option in ModBiblio is handled correctly' => sub {
Link Here
|
754 |
MARC::Field->new('500', '', '', 'a' => 'One cold bottle of beer in the fridge'), # Appended |
749 |
MARC::Field->new('500', '', '', 'a' => 'One cold bottle of beer in the fridge'), # Appended |
755 |
); |
750 |
); |
756 |
|
751 |
|
757 |
ModBiblio($saved_record, $biblionumber, '', { context => { $modules[0]->name => 'test' } }); |
752 |
ModBiblio($saved_record, $biblionumber, '', { context => { 'source' => 'test' } }); |
758 |
|
753 |
|
759 |
my $updated_record = GetMarcBiblio({ biblionumber => $biblionumber }); |
754 |
my $updated_record = GetMarcBiblio({ biblionumber => $biblionumber }); |
760 |
|
755 |
|
761 |
- |
|
|