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

(-)a/t/db_dependent/check_sysprefs.t (-12 / +71 lines)
Lines 22-48 use Modern::Perl; Link Here
22
use Carp;
22
use Carp;
23
use Getopt::Long;
23
use Getopt::Long;
24
use C4::Context;
24
use C4::Context;
25
use Array::Utils qw(array_minus);
25
26
26
# When this option is set, no tests are performed.
27
# When this option is set, no tests are performed.
27
# The missing sysprefs are displayed as sql inserts instead.
28
# The missing sysprefs are displayed as sql inserts instead.
28
our $showsql = 0;
29
our $showsql = 0;
29
GetOptions( 'showsql' => \$showsql );
30
GetOptions( 'showsql' => \$showsql );
30
31
31
use Test::More qw(no_plan);
32
use Test::More tests => 2;
33
32
our $dbh = C4::Context->dbh;
34
our $dbh = C4::Context->dbh;
33
my $root_dir = C4::Context->config('intranetdir') . '/installer/data/mysql/mandatory';
35
my $intranetdir = C4::Context->config('intranetdir');
36
my $root_dir = $intranetdir . '/installer/data/mysql/mandatory';
34
my $base_syspref_file = "sysprefs.sql";
37
my $base_syspref_file = "sysprefs.sql";
35
38
36
open my $ref_fh, '<', "$root_dir/$base_syspref_file" or croak "Can't open '$root_dir/$base_syspref_file': $!";
39
open my $ref_fh, '<', "$root_dir/$base_syspref_file" or croak "Can't open '$root_dir/$base_syspref_file': $!";
37
my $ref_syspref = get_syspref_from_file($ref_fh);
40
my $ref_syspref  = get_syspref_from_file($ref_fh);
38
my @ref_sysprefs = sort { lc $a cmp lc $b } keys %$ref_syspref;
41
my @ref_sysprefs = sort { lc $a cmp lc $b } keys %$ref_syspref;
39
my $num_sysprefs = scalar @ref_sysprefs;
42
my $num_sysprefs = scalar @ref_sysprefs;
40
if ( !$showsql ) {
41
    cmp_ok( $num_sysprefs, '>', 0,
42
        "Found $num_sysprefs sysprefs" );
43
}
44
43
45
check_db($ref_syspref);
44
subtest 'Compare database with sysprefs.sql file' => sub {
45
    if ( !$showsql ) {
46
        cmp_ok(
47
            $num_sysprefs, '>', 0,
48
            "Found $num_sysprefs sysprefs"
49
        );
50
    }
51
52
    check_db($ref_syspref);
53
};
54
55
subtest 'Compare sysprefs.sql with YAML files' => sub {
56
    plan tests => 2;
57
58
    my $yaml_prefs = get_syspref_from_yaml();
59
    my @yaml_mod   = @$yaml_prefs;
60
    @yaml_mod = grep !/marcflavour/, @yaml_mod;    # Added by web installer
61
62
    my @sysprefs_mod = @ref_sysprefs;
63
    @sysprefs_mod = grep !/ElasticsearchIndexStatus_authorities/, @sysprefs_mod;    # Not to be changed manually
64
    @sysprefs_mod = grep !/ElasticsearchIndexStatus_biblios/,     @sysprefs_mod;    # Not to be changed manually
65
    @sysprefs_mod = grep !/OPACdidyoumean/,                       @sysprefs_mod;    # Separate configuration page
66
    @sysprefs_mod = grep !/UsageStatsID/,                         @sysprefs_mod;    # Separate configuration page
67
    @sysprefs_mod = grep !/UsageStatsLastUpdateTime/,             @sysprefs_mod;    # Separate configuration page
68
    @sysprefs_mod = grep !/UsageStatsPublicID/,                   @sysprefs_mod;    # Separate configuration page
69
70
    my @missing_yaml = array_minus( @sysprefs_mod, @yaml_mod );
71
    is( scalar @missing_yaml, 0, "No system preference entries missing from sysprefs.sql" );
72
    if ( scalar @missing_yaml > 0 ) {
73
        print "System preferences missing from YAML:\n  * " . join( "\n  * ", @missing_yaml ) . "\n";
74
    }
75
76
    my @missing_sysprefs = array_minus( @yaml_mod, @sysprefs_mod );
77
    is( scalar @missing_sysprefs, 0, "No system preference entries missing from YAML files" );
78
    if ( scalar @missing_sysprefs > 0 ) {
79
        print "System preferences missing from sysprefs.sql:\n  * " . join( "\n  * ", @missing_sysprefs ) . "\n";
80
    }
81
};
82
46
83
47
#
84
#
48
# Get sysprefs from SQL file populating sysprefs table with INSERT statement.
85
# Get sysprefs from SQL file populating sysprefs table with INSERT statement.
Lines 68-73 sub get_syspref_from_file { Link Here
68
    return \%syspref;
105
    return \%syspref;
69
}
106
}
70
107
108
#  Get system preferences from YAML files
109
sub get_syspref_from_yaml {
110
    my @prefs;
111
    foreach my $file ( glob( $intranetdir . "/koha-tmpl/intranet-tmpl/prog/en/modules/admin/preferences/*.pref" ) ) {
112
        if ( open( my $fh, '<:encoding(UTF-8)', $file ) ) {
113
            while ( my $row = <$fh> ) {
114
                chomp $row;
115
                my $pref;
116
                if ( $row =~ /pref: (.*)/ ) {
117
                    $pref = $1;
118
                    $pref =~ s/["']//ig;
119
                    push @prefs, $pref;
120
                }
121
            }
122
        } else {
123
            warn "Could not open file '$file' $!";
124
        }
125
    }
126
    return \@prefs;
127
}
128
71
sub check_db {
129
sub check_db {
72
    my $sysprefs = shift;
130
    my $sysprefs = shift;
73
131
Lines 107-116 syspref.t Link Here
107
165
108
=head1 DESCRIPTION
166
=head1 DESCRIPTION
109
167
110
This test checks for missing sysprefs in the database.
168
This test checks for missing system preferences in the database
169
and the sysprefs.sql file.
111
170
112
Sysprefs are gathered from the installation file. The database is
171
System prefereces are gathered from the installation and YAML files.
113
then queried to check if all the sysprefs are in it.
172
The database is then queried to check if all the system preferneces are
173
in it.
114
174
115
=head1 USAGE
175
=head1 USAGE
116
176
117
- 

Return to bug 34979