|
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 |
- |
|
|