Bug 15774: (follow-up) Address QA issues
[koha.git] / t / Languages.t
old mode 100755 (executable)
new mode 100644 (file)
index f3bac39..edd2a5a
@@ -1,21 +1,61 @@
 #!/usr/bin/perl
-#
-# This Koha test module is a stub!  
-# Add more tests here!!!
 
-use strict;
-use warnings;
+# Copyright 2013 Equinox Software, Inc.
+# Copyright 2014 BibLibre
+#
+# 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 Test::More tests => 5;
+use Modern::Perl;
+use Test::More tests => 4;
+use Test::MockModule;
+use CGI qw ( -utf8 );
+use Koha::Cache::Memory::Lite;
 
 BEGIN {
-        use_ok('C4::Languages');
+    use_ok('C4::Languages');
 }
 
-isnt(C4::Languages::_get_themes(), undef, 'testing _get_themes doesnt return undef');
+my @languages = (); # stores the list of active languages
+                    # for the syspref mock
+my $return_undef = 0;
+
+my $module_context = new Test::MockModule('C4::Context');
+
+$module_context->mock(
+    preference => sub {
+        my ($self, $pref) = @_;
+        if ($return_undef) {
+            return undef;
+        } elsif ($pref =~ /language/) {
+            return join ',', @languages;
+        } else {
+            return 'XXX';
+        }
+  },
+);
+
+delete $ENV{HTTP_ACCEPT_LANGUAGE};
 
-ok(C4::Languages::_get_language_dirs(), 'test getting _get_language_dirs');
+my $query = CGI->new();
+@languages = ('de-DE', 'fr-FR');
+is(C4::Languages::getlanguage($query), 'de-DE', 'default to first language specified in syspref (bug 10560)');
 
-is(C4::Languages::accept_language(),undef, 'test that accept_languages returns undef when nothing is entered');
+Koha::Cache::Memory::Lite->get_instance()->clear_from_cache('getlanguage');
+@languages = ();
+is(C4::Languages::getlanguage($query), 'en', 'default to English if no language specified in syspref (bug 10560)');
 
-ok(C4::Languages::getAllLanguages(), 'test get all languages');
+Koha::Cache::Memory::Lite->get_instance()->clear_from_cache('getlanguage');
+$return_undef = 1;
+is(C4::Languages::getlanguage($query), 'en', 'default to English if no database');