Nick Clemens
59918a3c21
This patch add language as a facet to ES results - it adds a new template plugin for languages to get the appropriate description given an iso 639-2 code To test: 1 - Make sure you have records with differing languages (in the MARC21 008 field characters 35-37 or UNIMARC 101a) 2 - Apply patch 3 - Reload Elasticsearch settings: http://localhost:8081/cgi-bin/koha/admin/searchengine/elasticsearch/mappings.pl?op=reset&i_know_what_i_am_doing=1 4 - Reindex your records 5 - Search for a phrase that will return results in several languages 6 - Verify you see factes correctly labelled for 'Language' 7 - Verify the facets work 8 - Verify both opac and staff results 9 - prove t/db_dependent/Languages.t Signed-off-by: Nicolas Legrand <nicolas.legrand@bulac.fr> Signed-off-by: Alex Arnaud <alex.arnaud@biblibre.com> Signed-off-by: Josef Moravec <josef.moravec@gmail.com> Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
102 lines
3.9 KiB
Perl
Executable file
102 lines
3.9 KiB
Perl
Executable file
#!/usr/bin/perl
|
|
#
|
|
# This Koha test module is a stub!
|
|
# Add more tests here!!!
|
|
|
|
use Modern::Perl;
|
|
|
|
use Test::More tests => 18;
|
|
use List::Util qw(first);
|
|
use Data::Dumper;
|
|
use Test::Warn;
|
|
use t::lib::Mocks;
|
|
use Koha::Database;
|
|
|
|
BEGIN {
|
|
use_ok('C4::Languages');
|
|
}
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
$schema->storage->txn_begin;
|
|
my $dbh = C4::Context->dbh;
|
|
|
|
isnt(C4::Languages::_get_themes(), undef, 'testing _get_themes doesnt return undef');
|
|
|
|
ok(C4::Languages::_get_language_dirs(), 'test getting _get_language_dirs');
|
|
|
|
my $result;
|
|
warning_is { $result = C4::Languages::accept_language(); }
|
|
q{accept_language(x,y) called with no clientPreferences (x).},
|
|
'accept_language() generated expected warning';
|
|
is($result,undef, 'test that accept_languages returns undef when nothing is entered');
|
|
|
|
ok(C4::Languages::getAllLanguages(), 'test get all languages');
|
|
|
|
t::lib::Mocks::mock_preference('AdvancedSearchLanguages', '');
|
|
my $all_languages = C4::Languages::getAllLanguages('eng');
|
|
ok(@$all_languages > 10, 'retrieved a bunch of languges');
|
|
|
|
my $languages = C4::Languages::getLanguages('eng');
|
|
is_deeply($languages, $all_languages, 'getLanguages() and getAllLanguages() return the same list');
|
|
|
|
$languages = C4::Languages::getLanguages('eng', 1);
|
|
is_deeply($languages, $all_languages, 'getLanguages() and getAllLanguages() with filtering selected but AdvancedSearchLanguages blank return the same list');
|
|
|
|
t::lib::Mocks::mock_preference('AdvancedSearchLanguages', 'ita|eng');
|
|
$languages = C4::Languages::getLanguages('eng', 1);
|
|
is(scalar(@$languages), 2, 'getLanguages() filtering using AdvancedSearchLanguages works');
|
|
|
|
my $translatedlanguages1;
|
|
warnings_are { $translatedlanguages1 = C4::Languages::getTranslatedLanguages('opac','prog',undef,'') }
|
|
[],
|
|
'no warnings for calling getTranslatedLanguages';
|
|
my @currentcheck1 = map { $_->{current} } @$translatedlanguages1;
|
|
my $onlyzeros = first { $_ != 0 } @currentcheck1;
|
|
ok(! $onlyzeros, "Everything was zeros.\n");
|
|
|
|
my $translatedlanguages2;
|
|
warnings_are { $translatedlanguages2 = C4::Languages::getTranslatedLanguages('opac','prog','en','') }
|
|
[],
|
|
'no warnings for calling getTranslatedLanguages';
|
|
my @currentcheck2 = map { $_->{current} } @$translatedlanguages2;
|
|
$onlyzeros = first { $_ != 0 } @currentcheck2;
|
|
ok($onlyzeros, "There is a $onlyzeros\n");
|
|
|
|
# Language Descriptions
|
|
my $sth = $dbh->prepare("SELECT DISTINCT subtag,type,lang,description from language_descriptions;");
|
|
$sth->execute();
|
|
my $DistinctLangDesc = $sth->fetchall_arrayref({});
|
|
|
|
$sth = $dbh->prepare("SELECT subtag,type,lang,description from language_descriptions;");
|
|
$sth->execute();
|
|
my $LangDesc = $sth->fetchall_arrayref({});
|
|
|
|
is(scalar(@$LangDesc),scalar(@$DistinctLangDesc),"No unexpected language_description duplicates.");
|
|
|
|
# Language_subtag_registry
|
|
$sth = $dbh->prepare("SELECT DISTINCT subtag,type,description,added FROM language_subtag_registry;");
|
|
$sth->execute();
|
|
my $DistinctLangReg = $sth->fetchall_arrayref({});
|
|
|
|
$sth = $dbh->prepare("SELECT subtag,type,description,added FROM language_subtag_registry;");
|
|
$sth->execute();
|
|
my $LangReg = $sth->fetchall_arrayref({});
|
|
|
|
is(scalar(@$LangReg),scalar(@$DistinctLangReg),"No unexpected language_subtag_registry duplicates.");
|
|
|
|
# Language RFC4646 to ISO639
|
|
$sth = $dbh->prepare("SELECT DISTINCT rfc4646_subtag,iso639_2_code FROM language_rfc4646_to_iso639;");
|
|
$sth->execute();
|
|
my $DistinctLangRfc4646 = $sth->fetchall_arrayref({});
|
|
|
|
$sth = $dbh->prepare("SELECT rfc4646_subtag,iso639_2_code FROM language_rfc4646_to_iso639;");
|
|
$sth->execute();
|
|
my $LangRfc4646 = $sth->fetchall_arrayref({});
|
|
|
|
is(scalar(@$LangRfc4646),scalar(@$DistinctLangRfc4646),"No unexpected language_rfc4646_to_iso639 duplicates.");
|
|
|
|
my $i = 0;
|
|
foreach my $pair (@$DistinctLangRfc4646){
|
|
$i++ if $pair->{rfc4646_subtag} eq C4::Languages::get_rfc4646_from_iso639( $pair->{iso639_2_code} );
|
|
}
|
|
is($i,scalar(@$DistinctLangRfc4646),"get_rfc4646_from_iso639 returns correct rfc for all iso values.");
|