|
Lines 19-37
Link Here
|
| 19 |
|
19 |
|
| 20 |
use Modern::Perl; |
20 |
use Modern::Perl; |
| 21 |
use List::Util qw(first); |
21 |
use List::Util qw(first); |
|
|
22 |
use List::MoreUtils (); |
| 22 |
use Test::More tests => 5; |
23 |
use Test::More tests => 5; |
| 23 |
use Test::Warn; |
24 |
use Test::Warn; |
|
|
25 |
use Test::MockModule; |
| 24 |
|
26 |
|
| 25 |
use t::lib::Mocks; |
27 |
use t::lib::Mocks; |
| 26 |
use Koha::Database; |
28 |
use Koha::Database; |
|
|
29 |
use Koha::Caches; |
| 27 |
|
30 |
|
| 28 |
BEGIN { |
31 |
BEGIN { |
| 29 |
use_ok('C4::Languages', qw( accept_language getAllLanguages getLanguages getTranslatedLanguages get_rfc4646_from_iso639 )); |
32 |
use_ok('C4::Languages', qw( accept_language getAllLanguages getLanguages getTranslatedLanguages get_rfc4646_from_iso639 )); |
| 30 |
} |
33 |
} |
| 31 |
|
34 |
|
| 32 |
my $schema = Koha::Database->new->schema; |
35 |
our $schema = Koha::Database->new->schema; |
| 33 |
$schema->storage->txn_begin; |
36 |
$schema->storage->txn_begin; |
| 34 |
my $dbh = C4::Context->dbh; |
37 |
our $dbh = C4::Context->dbh; |
|
|
38 |
our $lang_module = Test::MockModule->new( 'C4::Languages' ); |
| 39 |
our $cache = Koha::Caches->get_instance; |
| 35 |
|
40 |
|
| 36 |
subtest 'get_themes, get_language_dirs' => sub { |
41 |
subtest 'get_themes, get_language_dirs' => sub { |
| 37 |
plan tests => 4; |
42 |
plan tests => 4; |
|
Lines 66-89
subtest 'getAllLanguages' => sub {
Link Here
|
| 66 |
}; |
71 |
}; |
| 67 |
|
72 |
|
| 68 |
subtest 'getTranslatedLanguages' => sub { |
73 |
subtest 'getTranslatedLanguages' => sub { |
| 69 |
plan tests => 4; |
74 |
plan tests => 9; |
|
|
75 |
|
| 76 |
# Obvious assumptions |
| 77 |
t::lib::Mocks::mock_preference( 'opacthemes', 'bootstrap' ); |
| 78 |
t::lib::Mocks::mock_preference( 'template', 'prog' ); |
| 70 |
|
79 |
|
| 71 |
my $translatedlanguages1; |
80 |
my $translatedlanguages1; |
| 72 |
warnings_are { $translatedlanguages1 = C4::Languages::getTranslatedLanguages( 'opac', 'prog' ) } |
81 |
$cache->clear_from_cache( "languages_opac_bootstrap" ); |
|
|
82 |
warnings_are { $translatedlanguages1 = C4::Languages::getTranslatedLanguages( 'opac', 'bootstrap' ) } |
| 73 |
[], |
83 |
[], |
| 74 |
'no warnings for calling getTranslatedLanguages'; |
84 |
'no warnings for calling getTranslatedLanguages'; |
| 75 |
|
|
|
| 76 |
my @currentcheck1 = map { $_->{current} } @$translatedlanguages1; |
85 |
my @currentcheck1 = map { $_->{current} } @$translatedlanguages1; |
| 77 |
my $onlyzeros = first { $_ != 0 } @currentcheck1; |
86 |
my $onlyzeros = first { $_ != 0 } @currentcheck1; |
| 78 |
ok(! $onlyzeros, "Everything was zeros."); |
87 |
is( $onlyzeros, undef, "No language was marked as current"); |
| 79 |
|
88 |
|
| 80 |
my $translatedlanguages2; |
89 |
my $translatedlanguages2; |
| 81 |
warnings_are { $translatedlanguages2 = C4::Languages::getTranslatedLanguages( 'opac', 'prog', 'en' ) } |
90 |
$cache->clear_from_cache( "languages_opac_bootstrap" ); |
|
|
91 |
warnings_are { $translatedlanguages2 = C4::Languages::getTranslatedLanguages( 'opac', 'bootstrap', 'en' ) } |
| 82 |
[], |
92 |
[], |
| 83 |
'no warnings for calling getTranslatedLanguages'; |
93 |
'no warnings for calling getTranslatedLanguages'; |
| 84 |
my @currentcheck2 = map { $_->{current} } @$translatedlanguages2; |
94 |
my @currentcheck2 = map { $_->{current} } @$translatedlanguages2; |
| 85 |
$onlyzeros = first { $_ != 0 } @currentcheck2; |
95 |
$onlyzeros = first { $_ != 0 } @currentcheck2; |
| 86 |
ok($onlyzeros, "There is a $onlyzeros"); |
96 |
is( $onlyzeros, 1, "en is marked as current now" ); |
|
|
97 |
|
| 98 |
# mock opac languages, test leaving out opac/bootstrap |
| 99 |
my @language_dirs; |
| 100 |
$lang_module->mock( '_get_language_dirs', sub { return @language_dirs; } ); |
| 101 |
t::lib::Mocks::mock_preference( 'OPACLanguages', 'ita,eng,nl-NL' ); |
| 102 |
@language_dirs = ( 'eng', 'ita', 'nl-NL' ); |
| 103 |
$translatedlanguages1 = C4::Languages::getTranslatedLanguages(); |
| 104 |
is( @$translatedlanguages1, 1, 'Only one language since we didnt clear the cache' ); |
| 105 |
$cache->clear_from_cache( "languages_opac_bootstrap" ); |
| 106 |
$translatedlanguages1 = C4::Languages::getTranslatedLanguages(); |
| 107 |
is( @$translatedlanguages1, 3, 'Check if we get back three languages now' ); |
| 108 |
|
| 109 |
# mock staff languages |
| 110 |
@language_dirs = ( 'eng', 'fr-CA', 'fr-FR', 'fr-NL', 'zh-NL' ); |
| 111 |
$cache->clear_from_cache( "languages_staff_prog" ); |
| 112 |
t::lib::Mocks::mock_preference( 'language', 'zh,fr-NL,fr-CA,eng,fr-FR,de-DE' ); # de-DE missing |
| 113 |
$translatedlanguages1 = C4::Languages::getTranslatedLanguages( 'staff' ); # forgot prog |
| 114 |
is( @$translatedlanguages1, 3, 'Three staff languages' ); |
| 115 |
my $idx = List::MoreUtils::first_index { $_->{language} eq 'fr' } @$translatedlanguages1; |
| 116 |
# using first_index since order is not reliable |
| 117 |
is( @{$translatedlanguages1->[$idx]->{sublanguages_loop}}, 3, 'Three french variants' ); |
| 118 |
$idx = List::MoreUtils::first_index { $_->{language} eq 'zh' } @$translatedlanguages1; |
| 119 |
is( $translatedlanguages1->[$idx]->{language}, 'zh', 'Found zh too' ); |
| 120 |
$lang_module->unmock( '_get_language_dirs' ); |
| 87 |
}; |
121 |
}; |
| 88 |
|
122 |
|
| 89 |
subtest 'Language descriptions, Language_subtag_registry, RFC4646 to ISO639' => sub { |
123 |
subtest 'Language descriptions, Language_subtag_registry, RFC4646 to ISO639' => sub { |
| 90 |
- |
|
|