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 |
- |
|
|