Koha/t/db_dependent/Record/Record.t
Hector Castro 3c75a6ca9c Bug 13642 - Add Unit test for C4::Record::marc2dcxml
Add Unit test for C4::Record::marc2dcxml

To test:
prove t/db_dependent/Record.t
prove t/db_dependent/Record/Record.t

Signed-off-by: Frederic Demians <f.demians@tamil.fr>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Brendan A Gallagher <brendan@bywatersolutions.com>
2016-01-27 06:23:08 +00:00

146 lines
4.8 KiB
Perl
Executable file

#!/usr/bin/perl
#
# Copyright 2006 (C) LibLime
# Joshua Ferraro <jmf@liblime.com>
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# Koha is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Koha; if not, see <http://www.gnu.org/licenses>.
#
#
use strict;
use warnings;
use constant WHEREAMI => 't/db_dependent/Record/testrecords';
# specify the number of tests
use Test::More tests => 21; #FIXME Commented out two failing tests
#use C4::Context;
use C4::Record;
=head1 NAME
Record_test.pl - test suite for Record.pm
=head1 SYNOPSIS
$ export KOHA_CONF=/path/to/koha.conf
$ ./Record_test.pl
=cut
## FIXME: Preliminarily grab the modules dir so we can run this in context
ok (1, 'module compiled');
# open some files for testing
open MARC21MARC8,WHEREAMI."/marc21_marc8.dat" or die $!;
my $marc21_marc8; # = scalar (MARC21MARC8);
foreach my $line (<MARC21MARC8>) {
$marc21_marc8 .= $line;
}
$marc21_marc8 =~ s/\n$//;
close MARC21MARC8;
open (MARC21UTF8,"<:utf8",WHEREAMI."/marc21_utf8.dat") or die $!;
my $marc21_utf8;
foreach my $line (<MARC21UTF8>) {
$marc21_utf8 .= $line;
}
$marc21_utf8 =~ s/\n$//;
close MARC21UTF8;
open MARC21MARC8COMBCHARS,WHEREAMI."/marc21_marc8_combining_chars.dat" or die $!;
my $marc21_marc8_combining_chars;
foreach my $line(<MARC21MARC8COMBCHARS>) {
$marc21_marc8_combining_chars.=$line;
}
$marc21_marc8_combining_chars =~ s/\n$//; #FIXME: why is a newline ending up here?
close MARC21MARC8COMBCHARS;
open (MARC21UTF8COMBCHARS,"<:utf8",WHEREAMI."/marc21_utf8_combining_chars.dat") or die $!;
my $marc21_utf8_combining_chars;
foreach my $line(<MARC21UTF8COMBCHARS>) {
$marc21_utf8_combining_chars.=$line;
}
close MARC21UTF8COMBCHARS;
open (MARCXMLUTF8,"<:utf8",WHEREAMI."/marcxml_utf8.xml") or die $!;
my $marcxml_utf8;
foreach my $line (<MARCXMLUTF8>) {
$marcxml_utf8 .= $line;
}
close MARCXMLUTF8;
$marcxml_utf8 =~ s/\n//g;
## The Tests:
my $error; my $marc; my $marcxml; my $dcxml; # some scalars to store values
## MARC to MARCXML
print "\n1. Checking conversion of simple ISO-2709 (MARC21) records to MARCXML\n";
ok (($error,$marcxml) = marc2marcxml($marc21_marc8,'UTF-8','MARC21'), 'marc2marcxml - from MARC-8 to UTF-8 (MARC21)');
ok (!$error, 'no errors in conversion');
#FIXME This test fails
# $marcxml =~ s/\n//g;
# $marcxml =~ s/v\/ s/v\/s/g; # FIXME: bug in new_from_xml_record!!
#is ($marcxml,$marcxml_utf8, 'record matches antitype');
ok (($error,$marcxml) = marc2marcxml($marc21_utf8,'UTF-8','MARC21'), 'marc2marcxml - from UTF-8 to UTF-8 (MARC21)');
ok (!$error, 'no errors in conversion');
#FIXME This test fails
# $marcxml =~ s/\n//g;
# $marcxml =~ s/v\/ s/v\/s/g;
#is ($marcxml,$marcxml_utf8, 'record matches antitype');
print "\n2. checking binary MARC21 records with combining characters to MARCXML\n";
ok (($error,$marcxml) = marc2marcxml($marc21_marc8_combining_chars,'MARC-8','MARC21'), 'marc2marcxml - from MARC-8 to MARC-8 with combining characters(MARC21)');
ok (!$error, 'no errors in conversion');
ok (($error,$marcxml) = marc2marcxml($marc21_marc8_combining_chars,'UTF-8','MARC21'), 'marc2marcxml - from MARC-8 to UTF-8 with combining characters (MARC21)');
ok (!$error, 'no errors in conversion');
ok (($error,$marcxml) = marc2marcxml($marc21_utf8_combining_chars,'UTF-8','MARC21'), 'marc2marcxml - from UTF-8 to UTF-8 with combining characters (MARC21)');
ok (!$error, 'no errors in conversion');
ok (eval{marc2dcxml($marc21_utf8, undef, undef, 'oaidc')}, 'marc2dcxml - from ISO-2709 to Dublin Core');
$error = $@;
ok (!$error, 'no errors in conversion to DublinCore');
print "\n3. checking ability to alter encoding\n";
ok (($error,$marc) = changeEncoding($marc21_marc8,'MARC','MARC21','UTF-8'), 'changeEncoding - MARC21 from MARC-8 to UTF-8');
ok (!$error, 'no errors in conversion');
ok (($error,$marc) = changeEncoding($marc21_utf8,'MARC','MARC21','MARC-8'), 'changeEncoding - MARC21 from UTF-8 to MARC-8');
ok (!$error, 'no errors in conversion');
ok (($error,$marc) = changeEncoding($marc21_marc8,'MARC','MARC21','MARC-8'), 'changeEncoding - MARC21 from MARC-8 to MARC-8');
ok (!$error, 'no errors in conversion');
ok (($error,$marc) = changeEncoding($marc21_utf8,'MARC','MARC21','UTF-8'), 'changeEncoding - MARC21 from UTF-8 to UTF-8');
ok (!$error, 'no errors in conversion');
__END__
=head1 TODO
Still lots more to test including UNIMARC support
=head1 AUTHOR
Joshua Ferraro <jmf@liblime.com>
=head1 MODIFICATIONS
=cut