View | Details | Raw Unified | Return to bug 29245
Collapse All | Expand All

(-)a/t/db_dependent/Languages.t (-9 / +42 lines)
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
- 

Return to bug 29245