2016-01-07 12:40:24 +01:00
|
|
|
# Verify that languages translation cover all `trspan`
|
2015-05-14 08:44:38 +02:00
|
|
|
|
|
|
|
use Test::More;
|
2016-01-13 20:47:56 +01:00
|
|
|
use JSON;
|
2015-05-14 08:44:38 +02:00
|
|
|
use strict;
|
|
|
|
|
2017-02-22 22:48:52 +01:00
|
|
|
my $langDir = 'site/htdocs/static/languages';
|
2015-05-14 08:44:38 +02:00
|
|
|
|
|
|
|
my $count = 0;
|
2015-12-26 21:08:31 +01:00
|
|
|
use_ok('Lemonldap::NG::Manager::Build::Tree');
|
|
|
|
use_ok('Lemonldap::NG::Manager::Build::CTrees');
|
|
|
|
use_ok('Lemonldap::NG::Manager::Build::Attributes');
|
2015-05-14 08:44:38 +02:00
|
|
|
$count += 3;
|
|
|
|
|
|
|
|
ok( opendir( D, $langDir ), 'Found languages dir' );
|
|
|
|
my @langs = grep { /\.json$/ and $_ ne 'en.json' } readdir D;
|
|
|
|
close D;
|
|
|
|
ok( open( F, "$langDir/en.json" ), 'Found en.json' );
|
|
|
|
my $en;
|
|
|
|
ok( $en = join( '', <F> ), 'en.json is not empty' );
|
|
|
|
close F;
|
|
|
|
ok( @langs, 'Found other languages' );
|
|
|
|
my $keys;
|
2016-01-11 21:32:44 +01:00
|
|
|
ok( $keys = from_json($en), 'en.json contains JSON' );
|
2015-05-14 08:44:38 +02:00
|
|
|
$en = undef;
|
|
|
|
$count += 5;
|
|
|
|
|
|
|
|
foreach my $lang (@langs) {
|
|
|
|
ok( open( F, "$langDir/$lang" ), "Found $lang" );
|
|
|
|
my $j;
|
|
|
|
ok( $j = join( '', <F> ), "$lang is not empty" );
|
|
|
|
my $l;
|
2016-01-11 21:32:44 +01:00
|
|
|
ok( $l = from_json($j), "$lang contains JSON" . ( $@ ? " ($@)" : "" ) );
|
2015-05-14 08:44:38 +02:00
|
|
|
$lang =~ s/\.json$//;
|
|
|
|
my @l1 = sort keys %$keys;
|
|
|
|
my @l2 = sort keys %$l;
|
|
|
|
ok( $#l1 == $#l2,
|
2019-11-13 11:38:16 +01:00
|
|
|
"'$lang' and 'en' have the same count (" . @l2 . '/' . @l1 . ")" );
|
2015-05-14 08:44:38 +02:00
|
|
|
|
|
|
|
my @unTr;
|
|
|
|
while (@l1) {
|
|
|
|
if ( $l1[0] eq $l2[0] ) {
|
|
|
|
shift @l1;
|
|
|
|
shift @l2;
|
|
|
|
}
|
|
|
|
elsif ( $l1[0] eq $l2[1] ) {
|
|
|
|
push @unTr, shift(@l2);
|
|
|
|
}
|
|
|
|
elsif ( $l1[1] eq $l2[0] ) {
|
|
|
|
push @unTr, shift(@l1);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
die "To many errors in $lang.json (at $l1[0]/$l2[0])";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ok( @unTr == 0,
|
|
|
|
"All keys translated for '$lang'" . ( @unTr ? " (@unTr)" : "" ) );
|
|
|
|
$count += 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
my $tree;
|
2015-12-26 21:08:31 +01:00
|
|
|
ok( $tree = Lemonldap::NG::Manager::Build::Tree::tree(), 'Get tree' );
|
2015-05-14 08:44:38 +02:00
|
|
|
my @nodes = @{ getNodes($tree) };
|
|
|
|
|
|
|
|
my @unTr;
|
|
|
|
foreach (@nodes) {
|
2015-07-23 10:15:12 +02:00
|
|
|
my $node = $_;
|
|
|
|
$node =~ s/^\*//;
|
|
|
|
push @unTr, $node unless ( $keys->{$node} );
|
2015-05-14 08:44:38 +02:00
|
|
|
}
|
|
|
|
ok( @unTr == 0,
|
|
|
|
'All attributes translated for Tree.pm' . ( @unTr ? " (@unTr)" : "" ) );
|
|
|
|
$count += 2;
|
|
|
|
|
|
|
|
my ( $type, $ctrees );
|
|
|
|
@unTr = ();
|
2015-12-26 21:08:31 +01:00
|
|
|
ok( $ctrees = Lemonldap::NG::Manager::Build::CTrees::cTrees(), 'Get cTrees' );
|
2015-05-14 08:44:38 +02:00
|
|
|
while ( ( $type, $tree ) = each %$ctrees ) {
|
|
|
|
@nodes = @{ getNodes($tree) };
|
|
|
|
foreach (@nodes) {
|
|
|
|
push @unTr, $_ unless ( $keys->{$_} );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ok( @unTr == 0,
|
|
|
|
'All attributes translated for Tree.pm' . ( @unTr ? " (@unTr)" : "" ) );
|
|
|
|
$count += 2;
|
|
|
|
|
|
|
|
ok(
|
|
|
|
open( F,
|
2017-02-22 22:48:52 +01:00
|
|
|
q#perl -ne 'print if(s/.*trspan="(\w+)".*/$1/g)' site/templates/manager.tpl site/htdocs/static/forms/*|sort -u|#
|
2015-05-14 08:44:38 +02:00
|
|
|
),
|
|
|
|
'Find HTML docs'
|
|
|
|
);
|
|
|
|
my @trspan = ();
|
|
|
|
while (<F>) {
|
|
|
|
chomp;
|
|
|
|
push @trspan, $_;
|
|
|
|
}
|
|
|
|
ok( @trspan > 1, 'Found "trspan" attributes' );
|
|
|
|
@unTr = ();
|
|
|
|
foreach (@trspan) {
|
|
|
|
push @unTr, $_ unless ( $keys->{$_} );
|
|
|
|
}
|
|
|
|
ok( @unTr == 0,
|
|
|
|
'All "trspan" attribute translated' . ( @unTr ? " (@unTr)" : "" ) );
|
|
|
|
$count += 3;
|
|
|
|
|
2019-05-24 15:11:14 +02:00
|
|
|
# Check for flag icons
|
|
|
|
foreach my $lang (@langs) {
|
|
|
|
ok( -f "site/htdocs/static/logos/$lang.png", "Flag icon found for $lang" );
|
|
|
|
$count += 1;
|
|
|
|
}
|
|
|
|
|
2015-05-14 08:44:38 +02:00
|
|
|
done_testing($count);
|
|
|
|
|
|
|
|
sub getNodes {
|
|
|
|
my $tree = shift;
|
|
|
|
my @res;
|
|
|
|
foreach my $k (@$tree) {
|
|
|
|
if ( ref($k) ) {
|
|
|
|
push @res, $k->{title}, @{ getNodes( $k->{nodes} ) };
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
push @res, $k;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return \@res;
|
|
|
|
}
|