From 897510f5a702adab3f42eb9b83a130431fac727e Mon Sep 17 00:00:00 2001 From: Mark Tompsett Date: Wed, 1 Feb 2017 13:32:25 -0500 Subject: [PATCH] Bug 18036: Improve test coverage for themelanguage Content-Type: text/plain; charset=utf-8 This test triggers the three cases that were modified. prove -v t/db_dependent/Templates.t --- t/db_dependent/Templates.t | 56 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 50 insertions(+), 6 deletions(-) diff --git a/t/db_dependent/Templates.t b/t/db_dependent/Templates.t index 8c56cd1..89b7d3b 100755 --- a/t/db_dependent/Templates.t +++ b/t/db_dependent/Templates.t @@ -18,8 +18,9 @@ use Modern::Perl; use CGI; +use File::Temp qw/ tempdir /; -use Test::More tests => 6; +use Test::More tests => 7; use Test::Deep; use Test::MockModule; @@ -43,10 +44,10 @@ 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 'Testing themelanguage for unique themes (BZ 17982)' => sub { plan tests => 1; @@ -56,7 +57,50 @@ subtest 'Testing themelanguage for unique themes (BZ 17982)' => sub { $module_language->mock( 'getlanguage', sub { return 'en'; } ); # This only triggers the first uniq but that is sufficient for now - cmp_deeply( ( C4::Templates::themelanguage( C4::Context->config('intrahtdocs'), 'about.tt' , 'intranet', 'fake_cgi'))[2], [ 'prog' ], 'We only expect one prog here' ); + cmp_deeply( ( C4::Templates::themelanguage( C4::Context->config('intrahtdocs'), 'about.tt' , 'intranet', 'fake_cgi' ) )[2], [ 'prog' ], 'We only expect one prog here' ); +}; + +subtest 'Test C4::Templates::themelanguage' => sub { + plan tests => 4; + my $testing_language; + my $module_language = Test::MockModule->new('C4::Languages'); + + $module_language->mock( + 'getlanguage', + sub { + return $testing_language; + } + ); + + my $cgi = CGI->new(); + my $htdocs = C4::Context->config('intrahtdocs'); + my $section = 'intranet'; + my $htdocs_2 = tempdir( CLEANUP => 1 ); + + # trigger first case. + $testing_language = 'fr-FR'; + system( "mkdir -p $htdocs_2/prog/$testing_language/modules" ); + open my $fh, '>', "$htdocs_2/prog/$testing_language/modules/about.tt"; + close $fh; + my ($theme, $lang, $availablethemes) = C4::Templates::themelanguage( $htdocs_2, '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