Bug 22059: regression tests
[koha.git] / t / db_dependent / Record.t
index 2e04449..613e5ea 100755 (executable)
@@ -1,19 +1,22 @@
 #!/usr/bin/perl
-#
-# This Koha test module is a stub!  
-# Add more tests here!!!
 
-use strict;
-use warnings;
+use Modern::Perl;
 
-use Test::More tests => 10;
+use Test::More tests => 14;
 use MARC::Record;
 
+use t::lib::Mocks;
+use C4::Context;
+use Koha::Database;
+
 BEGIN {
         use_ok('C4::Record');
 }
 
-#my ($marc,$to_flavour,$from_flavour,$encoding) = @_;
+my $schema = Koha::Database->new->schema;
+$schema->storage->txn_begin;
+
+t::lib::Mocks::mock_preference( "BibtexExportAdditionalFields", q{} );
 
 my @marcarray=marc2marc;
 is ($marcarray[0],"Feature not yet implemented\n","error works");
@@ -47,32 +50,47 @@ is ($marcxml, $testxml, "testing marc2xml");
 my $marcconvert=marcxml2marc($marcxml);
 is ($marcconvert->as_xml,$marc->as_xml, "testing xml2marc");
 
-my $marcdc=marc2dcxml($marc);
+my $marcsrwdc=marc2dcxml( $marc, undef, undef, "srwdc" );
 my $test2xml=qq(<?xml version="1.0" encoding="UTF-8"?>
-<metadata
-  xmlns="http://example.org/myapp/"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://example.org/myapp/ http://example.org/myapp/schema.xsd"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:dcterms="http://purl.org/dc/terms/">
-</metadata>);
+<srw_dc:dc xmlns:srw_dc="info:srw/schema/1/dc-schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="info:srw/schema/1/dc-schema http://www.loc.gov/z3950/agency/zing/srw/dc-schema.xsd">
+  <type xmlns="http://purl.org/dc/elements/1.1/"/>
+</srw_dc:dc>
+);
 
-is ($marcdc, $test2xml, "testing marc2dcxml");
+is ($marcsrwdc, $test2xml, "testing SRWDC Metadata");
 
-my $marcqualified=marc2dcxml($marc,1);
+my $marcoaidc=marc2dcxml( $marc, undef, undef, "oaidc" );
 my $test3xml=qq(<?xml version="1.0" encoding="UTF-8"?>
-<metadata
-  xmlns="http://example.org/myapp/"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://example.org/myapp/ http://example.org/myapp/schema.xsd"
-  xmlns:dc="http://purl.org/dc/elements/1.1/"
-  xmlns:dcterms="http://purl.org/dc/terms/">
-</metadata>);
+<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
+  <dc:type/>
+  <dc:language/>
+</oai_dc:dc>
+);
 
-is ($marcqualified, $test3xml, "testing marcQualified");
+is ($marcoaidc, $test3xml, "testing OAIDC Metadata");
+
+my $marcrdfdc=marc2dcxml( $marc, undef, undef, "rdfdc" );
+my $test4Axml=qq(<?xml version="1.0" encoding="UTF-8"?>
+<rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <dc:type/>
+  <dc:language/>
+</rdf:Description>
+);
+
+is ($marcrdfdc, $test4Axml, "testing RDFDC Metadata");
+
+my $marcdc=marc2dcxml( $marc, undef, undef, "dc" );
+my $test4Bxml=qq(<?xml version="1.0" encoding="UTF-8"?>
+<rdf:Description xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
+  <dc:type/>
+  <dc:language/>
+</rdf:Description>
+);
+
+is ($marcrdfdc, $test4Bxml, "testing DC Metadata");
 
 my $mods=marc2modsxml($marc);
-my $test4xml=qq(<?xml version="1.0" encoding="UTF-8"?>
+my $test5xml=qq(<?xml version="1.0" encoding="UTF-8"?>
 <mods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.loc.gov/mods/v3" version="3.1" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-1.xsd">
   <typeOfResource/>
   <originInfo>
@@ -82,21 +100,56 @@ my $test4xml=qq(<?xml version="1.0" encoding="UTF-8"?>
 </mods>
 );
 
-is ($mods, $test4xml, "testing marc2mosxml");
+is ($mods, $test5xml, "testing marc2modsxml");
 
+$marc->append_fields(MARC::Field->new(
+    '100', ' ', ' ', a => 'Rowling, J.K.'
+));
 my $field = MARC::Field->new('245','','','a' => "Harry potter");
 $marc->append_fields($field);
+$marc->append_fields(MARC::Field->new(
+    '260', ' ', ' ', b => 'Scholastic', c => '2001'
+));
 
 #my $endnote=marc2endnote($marc->as_usmarc);
 #print $endnote;
 
-my $bibtex=marc2bibtex($marc);
-my $test5xml=qq(\@book{,
-       title = "Harry potter"
+my $bibtex=marc2bibtex($marc, 'testID');
+my $test6xml=qq(\@book{testID,
+       author = {Rowling, J.K.},
+       title = {Harry potter},
+       publisher = {Scholastic},
+       year = {2001}
 }
 );
 
-is ($bibtex, $test5xml, "testing bibtex");
+is ($bibtex, $test6xml, "testing bibtex");
+
+t::lib::Mocks::mock_preference( "BibtexExportAdditionalFields", "'\@': 260\$b\ntest: 260\$b" );
+$bibtex = marc2bibtex( $marc, 'testID' );
+my $test7xml = qq(\@Scholastic{testID,
+\tauthor = {Rowling, J.K.},
+\ttitle = {Harry potter},
+\tpublisher = {Scholastic},
+\tyear = {2001},
+\ttest = {Scholastic}
+}
+);
+is( $bibtex, $test7xml, "testing bibtex" );
+t::lib::Mocks::mock_preference( "BibtexExportAdditionalFields", q{} );
+
+$marc->append_fields(MARC::Field->new(
+    '264', '3', '1', b => 'Reprints', c => '2011'
+));
+$bibtex = marc2bibtex($marc, 'testID');
+my $rdabibtex = qq(\@book{testID,
+       author = {Rowling, J.K.},
+       title = {Harry potter},
+       publisher = {Reprints},
+       year = {2011}
+}
+);
+is ($bibtex, $rdabibtex, "testing bibtex with RDA 264 field");
 
 my @entity=C4::Record::_entity_encode("Björn");
 is ($entity[0], "Bj&#xC3;&#xB6;rn", "Html umlauts");