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

(-)a/t/db_dependent/Record/marcrecord2csv.t (-1 / +104 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl;
2
3
use Modern::Perl;
4
use Test::More tests => 4;
5
use Test::MockModule;
6
use MARC::Record;
7
use MARC::Field;
8
use Text::CSV::Encoded;
9
10
use C4::Biblio qw( AddBiblio );
11
use C4::Context;
12
use C4::Record;
13
14
my $dbh = C4::Context->dbh;
15
$dbh->{AutoCommit} = 0;
16
$dbh->{RaiseError} = 1;
17
18
my $module_biblio = Test::MockModule->new('C4::Biblio');
19
20
my $record = new_record();
21
my ( $biblionumber, $biblioitemnumber ) = AddBiblio( $record, q|| );
22
$module_biblio->mock( 'GetMarcBiblio', sub{ $record } );
23
24
my $csv_content = q(Title=245$a|Author=245$c|Subject=650$a);
25
my $csv_profile_id_1 = insert_csv_profile({ csv_content => $csv_content });
26
my $csv = Text::CSV::Encoded->new();
27
28
my $csv_output = C4::Record::marcrecord2csv( $biblionumber, $csv_profile_id_1, 1, $csv );
29
30
is( $csv_output, q[Title|Author|Subject
31
"The art of computer programming,The art of another title"|"Donald E. Knuth.,Donald E. Knuth. II"|"Computer programming.,Computer algorithms."
32
], q|normal way: display headers and content| );
33
34
$csv_output = C4::Record::marcrecord2csv( $biblionumber, $csv_profile_id_1, 0, $csv );
35
is( $csv_output, q["The art of computer programming,The art of another title"|"Donald E. Knuth.,Donald E. Knuth. II"|"Computer programming.,Computer algorithms."
36
], q|normal way: don't display headers| );
37
38
$csv_content = q(245|650);
39
my $csv_profile_id_2 = insert_csv_profile({ csv_content => $csv_content });
40
41
$csv_output = C4::Record::marcrecord2csv( $biblionumber, $csv_profile_id_2, 1, $csv );
42
is( $csv_output, q["TITLE STATEMENT"|"SUBJECT ADDED ENTRY--TOPICAL TERM"
43
"The art of computer programming,Donald E. Knuth.,0;The art of another title,Donald E. Knuth. II,1"|"Computer programming.,462;Computer algorithms.,499"
44
], q|normal way: headers retrieved from the DB| );
45
46
$csv_output = C4::Record::marcrecord2csv( $biblionumber, $csv_profile_id_2, 0, $csv );
47
is( $csv_output, q["The art of computer programming,Donald E. Knuth.,0;The art of another title,Donald E. Knuth. II,1"|"Computer programming.,462;Computer algorithms.,499"
48
], q|normal way: headers are not display if not needed| );
49
50
sub insert_csv_profile {
51
    my ( $params ) = @_;
52
    my $csv_content = $params->{csv_content};
53
    $dbh->do(q|
54
        INSERT INTO export_format(profile, description, content, csv_separator, field_separator, subfield_separator, encoding, type) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
55
        |, {}, ("TEST_PROFILE4", "my desc", $csv_content, '|', ';', ',', 'utf8', 'marc')
56
    );
57
    return $dbh->last_insert_id( undef, undef, 'export_format', undef );
58
}
59
60
sub new_record {
61
    my $record = MARC::Record->new;
62
    $record->leader('03174nam a2200445 a 4500');
63
    my @fields = (
64
        MARC::Field->new(
65
            '008', "140211b xxu||||| |||| 00| 0 eng d"
66
        ),
67
        MARC::Field->new(
68
            100, '1', ' ',
69
            a => 'Knuth, Donald Ervin',
70
            d => '1938',
71
        ),
72
        MARC::Field->new(
73
            245, '1', '4',
74
            a => 'The art of computer programming',
75
            c => 'Donald E. Knuth.',
76
            9 => '0',
77
        ),
78
        MARC::Field->new(
79
            245, '1', '4',
80
            a => 'The art of another title',
81
            c => 'Donald E. Knuth. II',
82
            9 => '1',
83
        ),
84
        MARC::Field->new(
85
            650, ' ', '1',
86
            a => 'Computer programming.',
87
            9 => '462',
88
        ),
89
        MARC::Field->new(
90
            650, ' ', '0',
91
            a => 'Computer algorithms.',
92
            9 => '499',
93
        ),
94
        MARC::Field->new(
95
            952, ' ', ' ',
96
            p => '3010023917',
97
            y => 'BK',
98
            c => 'GEN',
99
            d => '2001-06-25',
100
        ),
101
    );
102
    $record->append_fields(@fields);
103
    return $record;
104
}

Return to bug 12404