View | Details | Raw Unified | Return to bug 14957
Collapse All | Expand All

(-)a/Koha/MarcMergeRules.pm (-1 / +1 lines)
Lines 301-307 Override C<find_or_create> to clear marc merge rules cache. Link Here
301
sub find_or_create {
301
sub find_or_create {
302
    my $self = shift @_;
302
    my $self = shift @_;
303
    $self->_clear_caches();
303
    $self->_clear_caches();
304
    $self->SUPER::find_or_create(@_);
304
    return $self->SUPER::find_or_create(@_);
305
}
305
}
306
306
307
=head2 update
307
=head2 update
(-)a/t/db_dependent/Biblio/MarcMergeRules.t (-30 / +24 lines)
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
- 

Return to bug 14957