Bug 15108: (followup) OAI-PMH provider improvements
[srvgit] / t / db_dependent / Languages.t
index b3c82bc..8e8d372 100755 (executable)
@@ -6,7 +6,11 @@
 use strict;
 use warnings;
 
-use Test::More tests => 9;
+use Test::More tests => 17;
+use List::Util qw(first);
+use Data::Dumper;
+use Test::Warn;
+use t::lib::Mocks;
 
 BEGIN {
     use_ok('C4::Languages');
@@ -20,11 +24,15 @@ isnt(C4::Languages::_get_themes(), undef, 'testing _get_themes doesnt return und
 
 ok(C4::Languages::_get_language_dirs(), 'test getting _get_language_dirs');
 
-is(C4::Languages::accept_language(),undef, 'test that accept_languages returns undef when nothing is entered');
+my $result;
+warning_is { $result = C4::Languages::accept_language(); }
+    q{accept_language(x,y) called with no clientPreferences (x).},
+    'accept_language() generated expected warning';
+is($result,undef, 'test that accept_languages returns undef when nothing is entered');
 
 ok(C4::Languages::getAllLanguages(), 'test get all languages');
 
-C4::Context->set_preference('AdvancedSearchLanguages', '');
+t::lib::Mocks::mock_preference('AdvancedSearchLanguages', '');
 my $all_languages = C4::Languages::getAllLanguages('eng');
 ok(@$all_languages > 10, 'retrieved a bunch of languges');
 
@@ -34,8 +42,57 @@ is_deeply($languages, $all_languages, 'getLanguages() and getAllLanguages() retu
 $languages = C4::Languages::getLanguages('eng', 1);
 is_deeply($languages, $all_languages, 'getLanguages() and getAllLanguages() with filtering selected but AdvancedSearchLanguages blank return the same list');
 
-C4::Context->set_preference('AdvancedSearchLanguages', 'ita|eng');
+t::lib::Mocks::mock_preference('AdvancedSearchLanguages', 'ita|eng');
 $languages = C4::Languages::getLanguages('eng', 1);
 is(scalar(@$languages), 2, 'getLanguages() filtering using AdvancedSearchLanguages works');
 
+my $translatedlanguages1;
+warnings_are { $translatedlanguages1 = C4::Languages::getTranslatedLanguages('opac','prog',undef,'') }
+             [],
+             'no warnings for calling getTranslatedLanguages';
+my @currentcheck1 = map { $_->{current} } @$translatedlanguages1;
+my $onlyzeros = first { $_ != 0 } @currentcheck1;
+ok(! $onlyzeros, "Everything was zeros.\n");
+
+my $translatedlanguages2;
+warnings_are { $translatedlanguages2 = C4::Languages::getTranslatedLanguages('opac','prog','en','') }
+             [],
+             'no warnings for calling getTranslatedLanguages';
+my @currentcheck2 = map { $_->{current} } @$translatedlanguages2;
+$onlyzeros = first { $_ != 0 } @currentcheck2;
+ok($onlyzeros, "There is a $onlyzeros\n");
+
+# Language Descriptions
+my $sth = $dbh->prepare("SELECT DISTINCT subtag,type,lang,description from language_descriptions;");
+$sth->execute();
+my $DistinctLangDesc = $sth->fetchall_arrayref({});
+
+$sth = $dbh->prepare("SELECT subtag,type,lang,description from language_descriptions;");
+$sth->execute();
+my $LangDesc = $sth->fetchall_arrayref({});
+
+is(scalar(@$LangDesc),scalar(@$DistinctLangDesc),"No unexpected language_description duplicates.");
+
+# Language_subtag_registry
+$sth = $dbh->prepare("SELECT DISTINCT subtag,type,description,added FROM language_subtag_registry;");
+$sth->execute();
+my $DistinctLangReg = $sth->fetchall_arrayref({});
+
+$sth = $dbh->prepare("SELECT subtag,type,description,added FROM language_subtag_registry;");
+$sth->execute();
+my $LangReg = $sth->fetchall_arrayref({});
+
+is(scalar(@$LangReg),scalar(@$DistinctLangReg),"No unexpected language_subtag_registry duplicates.");
+
+# Language RFC4646 to ISO639
+$sth = $dbh->prepare("SELECT DISTINCT rfc4646_subtag,iso639_2_code FROM language_rfc4646_to_iso639;");
+$sth->execute();
+my $DistinctLangRfc4646 = $sth->fetchall_arrayref({});
+
+$sth = $dbh->prepare("SELECT rfc4646_subtag,iso639_2_code FROM language_rfc4646_to_iso639;");
+$sth->execute();
+my $LangRfc4646 = $sth->fetchall_arrayref({});
+
+is(scalar(@$LangRfc4646),scalar(@$DistinctLangRfc4646),"No unexpected language_rfc4646_to_iso639 duplicates.");
+
 $dbh->rollback;