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

(-)a/t/db_dependent/MarcModificationTemplates.t (-2 / +59 lines)
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
};

Return to bug 32950