From 1605b34b1d79985e2e60583642085b93cbdb0f8c Mon Sep 17 00:00:00 2001
From: Mark Tompsett <mtompset@hotmail.com>
Date: Wed, 1 Feb 2017 13:32:25 -0500
Subject: [PATCH] Bug 17982: Improve test coverage

This test triggers the three cases that were modified.
prove -v t/db_dependent/Templates.t
---
 t/db_dependent/Templates.t | 51 +++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 46 insertions(+), 5 deletions(-)

diff --git a/t/db_dependent/Templates.t b/t/db_dependent/Templates.t
index 236bd1e..6686bbf 100755
--- a/t/db_dependent/Templates.t
+++ b/t/db_dependent/Templates.t
@@ -18,9 +18,12 @@
 use Modern::Perl;
 
 use CGI;
+use File::Basename qw/dirname/;
 
-use Test::More tests => 5;
+use Test::More tests => 6;
 use Test::Deep;
+use Test::MockModule;
+use t::lib::Mocks;
 
 BEGIN {
     use_ok( 'C4::Templates' );
@@ -40,10 +43,48 @@ my $columns = C4::Templates::GetColumnDefs( $query );
 
 is( ref( $columns ) eq 'HASH', 1, 'GetColumnDefs returns a hashref' );
 # get the tables names, sorted
-my @keys = sort keys %$columns;
-is( scalar @keys, 6, "GetColumnDefs correctly returns the 5 tables defined in columns.def" );
-my @tables = ( 'biblio', 'biblioitems', 'borrowers', 'items', 'statistics', 'subscription');
-cmp_deeply( \@keys, \@tables, "GetColumnDefs returns the expected tables");
+my @keys = sort keys %{$columns};
+is( scalar @keys, 6, 'GetColumnDefs correctly returns the 5 tables defined in columns.def' );
+my @tables = qw( 'biblio', 'biblioitems', 'borrowers', 'items', 'statistics', 'subscription');
+cmp_deeply( \@keys, \@tables, 'GetColumnDefs returns the expected tables');
 
+subtest 'Test C4::Templates::themelanguage' => sub {
+    plan tests => 4;
+    my $testing_language;
+    my $module_language = Test::MockModule('C4::Languages')->new();
+
+    $module_language->mock(
+        'getlanguage',
+        sub {
+            return $testing_language;
+        }
+    );
+
+    my $cgi = CGI->new();
+    my $htdocs = C4::Context->config('intrahtdocs');
+    my $section = 'intranet';
+
+    # trigger first case.
+    $testing_language = 'fr-FR';
+    my ($theme, $lang, $availablethemes) = C4::Templates::themelanguage($htdocs, 'about.tt', $section, $cgi);
+    is($lang,'fr-FR','Expected language: non-en');
+
+    # trigger second case.
+    $testing_language = q{};
+    ($theme, $lang, $availablethemes) = C4::Templates::themelanguage($htdocs, 'about.tt', $section, $cgi);
+    is($lang,'en','Expected language: default en');
+
+    # trigger third case.
+    my $template = $htdocs . '/prog/en/modules/about.tt';
+    ($theme, $lang, $availablethemes) = C4::Templates::themelanguage($htdocs, $template, $section, $cgi);
+    is($lang,q{},'Expected language: unset');
+
+    # trigger bad case.
+    $template = $htdocs . '/prog/en/kaboom/about.tt';
+    ($theme, $lang, $availablethemes) = C4::Templates::themelanguage($htdocs, $template, $section, $cgi);
+    is($lang,undef,'Expected language: not coded for');
+
+    return;
+};
 
 1;
-- 
2.1.4