|
Lines 3-9
Link Here
|
| 3 |
use Modern::Perl; |
3 |
use Modern::Perl; |
| 4 |
|
4 |
|
| 5 |
use Test::NoWarnings; |
5 |
use Test::NoWarnings; |
| 6 |
use Test::More tests => 130; |
6 |
use Test::More tests => 131; |
| 7 |
|
7 |
|
| 8 |
use Koha::Database; |
8 |
use Koha::Database; |
| 9 |
use Koha::SimpleMARC; |
9 |
use Koha::SimpleMARC; |
|
Lines 1018-1020
is_deeply(
Link Here
|
| 1018 |
$record, $expected_record_0, |
1018 |
$record, $expected_record_0, |
| 1019 |
'100$0 has been deleted, added back, updated, moved to 600$0, and copied back to 100$0; finally, 245$0 has been copied and replaced to 700$0' |
1019 |
'100$0 has been deleted, added back, updated, moved to 600$0, and copied back to 100$0; finally, 245$0 has been copied and replaced to 700$0' |
| 1020 |
); |
1020 |
); |
| 1021 |
- |
1021 |
|
|
|
1022 |
# Test for Bug 32950: Moving subfield can lose values for repeatable fields |
| 1023 |
subtest "Bug 32950: Moving subfield preserves values in repeatable fields" => sub { |
| 1024 |
plan tests => 14; |
| 1025 |
$dbh->do(q|DELETE FROM marc_modification_templates|); |
| 1026 |
my $template_id = AddModificationTemplate("test_bug_32950"); |
| 1027 |
|
| 1028 |
# Create template action to move 020$z to 020$a |
| 1029 |
AddModificationTemplateAction( |
| 1030 |
$template_id, 'move_field', 0, |
| 1031 |
'020', 'z', '', '020', 'a', |
| 1032 |
'', '', '', |
| 1033 |
'', '', '', '', '', '', |
| 1034 |
'Move field 020$z to 020$a' |
| 1035 |
); |
| 1036 |
|
| 1037 |
# Create test record with multiple 020 fields, some with $a, some with $z |
| 1038 |
my $record = MARC::Record->new; |
| 1039 |
$record->leader('03174nam a2200445 a 4500'); |
| 1040 |
my @fields = ( |
| 1041 |
MARC::Field->new( '020', ' ', ' ', 'a' => '9781003182870', 'q' => '(ebk)' ), |
| 1042 |
MARC::Field->new( '020', ' ', ' ', 'a' => '1003182879' ), |
| 1043 |
MARC::Field->new( '020', ' ', ' ', 'a' => '9781000407204', 'q' => '(electronic bk. : EPUB)' ), |
| 1044 |
MARC::Field->new( '020', ' ', ' ', 'z' => '9781032023175', 'q' => '(hbk.)' ), |
| 1045 |
MARC::Field->new( '020', ' ', ' ', 'z' => '9780367760380', 'q' => '(pbk.)' ), |
| 1046 |
); |
| 1047 |
$record->append_fields(@fields); |
| 1048 |
|
| 1049 |
# Apply the template |
| 1050 |
ModifyRecordWithTemplate( $template_id, $record ); |
| 1051 |
|
| 1052 |
# Get all 020 fields after modification |
| 1053 |
my @fields_020 = $record->field('020'); |
| 1054 |
is( scalar @fields_020, 5, "Should still have 5 020 fields" ); |
| 1055 |
|
| 1056 |
# Check that existing $a values are preserved |
| 1057 |
is( $fields_020[0]->subfield('a'), '9781003182870', 'First field $a value preserved' ); |
| 1058 |
is( $fields_020[0]->subfield('q'), '(ebk)', 'First field $q value preserved' ); |
| 1059 |
|
| 1060 |
is( $fields_020[1]->subfield('a'), '1003182879', 'Second field $a value preserved' ); |
| 1061 |
|
| 1062 |
is( $fields_020[2]->subfield('a'), '9781000407204', 'Third field $a value preserved' ); |
| 1063 |
is( $fields_020[2]->subfield('q'), '(electronic bk. : EPUB)', 'Third field $q value preserved' ); |
| 1064 |
|
| 1065 |
# Check that $z values were moved to $a in fields that had $z |
| 1066 |
is( $fields_020[3]->subfield('a'), '9781032023175', 'Fourth field $z moved to $a' ); |
| 1067 |
is( $fields_020[3]->subfield('q'), '(hbk.)', 'Fourth field $q value preserved' ); |
| 1068 |
|
| 1069 |
is( $fields_020[4]->subfield('a'), '9780367760380', 'Fifth field $z moved to $a' ); |
| 1070 |
|
| 1071 |
# Verify $z subfields were removed (move operation) |
| 1072 |
for my $field (@fields_020) { |
| 1073 |
my @z_subfields = $field->subfield('z'); |
| 1074 |
is( scalar @z_subfields, 0, 'No $z subfields should remain' ); |
| 1075 |
} |
| 1076 |
|
| 1077 |
DelModificationTemplate($template_id); |
| 1078 |
}; |