Lines 24-30
use C4::Context;
Link Here
|
24 |
use C4::Biblio; |
24 |
use C4::Biblio; |
25 |
use Koha::Database; #?? |
25 |
use Koha::Database; #?? |
26 |
|
26 |
|
27 |
use Test::More tests => 22; |
27 |
use Test::More tests => 23; |
28 |
use Test::MockModule; |
28 |
use Test::MockModule; |
29 |
|
29 |
|
30 |
use Koha::MarcMergeRules; |
30 |
use Koha::MarcMergeRules; |
Lines 86-92
subtest 'Record fields has been overwritten when no merge rules are defined' =>
Link Here
|
86 |
|
86 |
|
87 |
my $rule = Koha::MarcMergeRules->find_or_create({ |
87 |
my $rule = Koha::MarcMergeRules->find_or_create({ |
88 |
tag => '*', |
88 |
tag => '*', |
89 |
module => $modules[0]->id, |
89 |
module => $modules[0]->name, |
90 |
filter => '*', |
90 |
filter => '*', |
91 |
add => 0, |
91 |
add => 0, |
92 |
append => 0, |
92 |
append => 0, |
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 |
585 |
# Protect field 500 with more specific tag value |
586 |
my $skip_all_rule = Koha::MarcMergeRules->find_or_create({ |
586 |
my $skip_all_rule = Koha::MarcMergeRules->find_or_create({ |
587 |
tag => '500', |
587 |
tag => '500', |
588 |
module => $modules[0]->id, |
588 |
module => $modules[0]->name, |
589 |
filter => '*', |
589 |
filter => '*', |
590 |
add => 0, |
590 |
add => 0, |
591 |
append => 0, |
591 |
append => 0, |
Lines 712-717
subtest 'An exception is thrown when rule tag is set to invalid regexp' => sub {
Link Here
|
712 |
ok($exception->isa('Koha::Exceptions::MarcMergeRule::InvalidTagRegExp'), "Exception is of correct class"); |
712 |
ok($exception->isa('Koha::Exceptions::MarcMergeRule::InvalidTagRegExp'), "Exception is of correct class"); |
713 |
}; |
713 |
}; |
714 |
|
714 |
|
|
|
715 |
$skip_all_rule->delete(); |
716 |
|
717 |
subtest 'context option in ModBiblio is handled correctly' => sub { |
718 |
plan tests => 6; |
719 |
$rule->set( |
720 |
{ |
721 |
tag => '250', |
722 |
module => $modules[0]->name, |
723 |
filter => '*', |
724 |
'add' => 0, |
725 |
'append' => 0, |
726 |
'remove' => 0, |
727 |
'delete' => 0, |
728 |
} |
729 |
); |
730 |
$rule->store(); |
731 |
my ($biblionumber) = AddBiblio($orig_record, ''); |
732 |
|
733 |
# Since marc merc rules are not run on save, only update |
734 |
# saved record should be identical to orig_record |
735 |
my $saved_record = GetMarcBiblio({ biblionumber => $biblionumber }); |
736 |
|
737 |
my @all_fields = $saved_record->fields(); |
738 |
# Koha also adds 999c field, therefore 4 not 3 |
739 |
cmp_ok(scalar @all_fields, '==', 4, 'Saved record has the expected number of fields'); |
740 |
is_deeply( |
741 |
[map { $_->subfield('a') } $saved_record->field('250') ], |
742 |
['250 bottles of beer on the wall', '256 bottles of beer on the wall'], |
743 |
'All "250" fields of saved record are identical to original record passed to AddBiblio' |
744 |
); |
745 |
|
746 |
is_deeply( |
747 |
[map { $_->subfield('a') } $saved_record->field('500') ], |
748 |
['One bottle of beer in the fridge'], |
749 |
'All "500" fields of saved record are identical to original record passed to AddBiblio' |
750 |
); |
751 |
|
752 |
$saved_record->append_fields( |
753 |
MARC::Field->new('250', '', '', 'a' => '251 bottles of beer on the wall'), # Appended |
754 |
MARC::Field->new('500', '', '', 'a' => 'One cold bottle of beer in the fridge'), # Appended |
755 |
); |
756 |
|
757 |
ModBiblio($saved_record, $biblionumber, '', { context => { $modules[0]->name => 'test' } }); |
758 |
|
759 |
my $updated_record = GetMarcBiblio({ biblionumber => $biblionumber }); |
760 |
|
761 |
@all_fields = $updated_record->fields(); |
762 |
cmp_ok(scalar @all_fields, '==', 5, 'Updated record has the expected number of fields'); |
763 |
is_deeply( |
764 |
[map { $_->subfield('a') } $updated_record->field('250') ], |
765 |
['250 bottles of beer on the wall', '256 bottles of beer on the wall'], |
766 |
'"250" fields have retained their original values' |
767 |
); |
768 |
|
769 |
is_deeply( |
770 |
[map { $_->subfield('a') } $updated_record->field('500') ], |
771 |
['One bottle of beer in the fridge', 'One cold bottle of beer in the fridge'], |
772 |
'"500" field has been appended' |
773 |
); |
774 |
|
775 |
# To trigger removal from search index etc |
776 |
DelBiblio($biblionumber); |
777 |
}; |
778 |
|
779 |
# Explicityly delete rule to trigger clearing of cache |
780 |
$rule->delete(); |
781 |
|
715 |
$schema->storage->txn_rollback; |
782 |
$schema->storage->txn_rollback; |
716 |
|
783 |
|
717 |
1; |
784 |
1; |
718 |
- |
|
|