Koha/t/db_dependent/TablesSettings.t
Koha Development Team d659526b5a
Bug 38664: Tidy the whole codebase
This commit is generated using:
  % perl misc/devel/tidy.pl
*within* ktd, to get the same version of perltidy than what will be used
by our CI (currently v20230309).

Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
2025-02-11 14:58:24 +01:00

206 lines
7.6 KiB
Perl
Executable file

#!/usr/bin/perl;
use Modern::Perl;
use Test::More tests => 3;
use Test::MockModule;
use C4::Context;
use C4::Utils::DataTables::TablesSettings;
use Koha::Database;
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
my $dbh = C4::Context->dbh;
$dbh->do(q|DELETE FROM columns_settings|);
my $module = Test::MockModule->new('C4::Utils::DataTables::TablesSettings');
$module->mock(
'get_yaml',
sub {
{
modules => {
admin => {
currency => {
'currencies-table' => {
default_display_length => 20,
default_sort_order => 1,
default_save_state => 1,
default_save_state_search => 0,
columns => [
{
columnname => 'currency',
cannot_be_toggled => '1',
cannot_be_modified => '1'
},
{
columnname => 'rate',
cannot_be_toggled => '1',
cannot_be_modified => '1'
},
{ columnname => 'symbol' },
{
is_hidden => '1',
columnname => 'iso_code'
},
{ columnname => 'last_updated' },
{ columnname => 'active' },
{ columnname => 'actions' }
]
}
}
},
}
};
}
);
C4::Utils::DataTables::TablesSettings::update_columns(
{
columns => [
{
module => 'admin',
page => 'currency',
tablename => 'currencies-table',
columnname => 'currency',
cannot_be_toggled => 1,
cannot_be_modified => 1,
},
{
module => 'admin',
page => 'currency',
tablename => 'currencies-table',
columnname => 'rate',
cannot_be_toggled => 1,
cannot_be_modified => 1,
},
{
module => 'admin',
page => 'currency',
tablename => 'currencies-table',
columnname => 'symbol',
},
{
module => 'admin',
page => 'currency',
tablename => 'currencies-table',
columnname => 'iso_code',
is_hidden => 0,
},
{
module => 'admin',
page => 'currency',
tablename => 'currencies-table',
columnname => 'last_updated',
},
{
module => 'admin',
page => 'currency',
tablename => 'currencies-table',
columnname => 'active',
is_hidden => 1,
},
{
module => 'admin',
page => 'currency',
tablename => 'currencies-table',
columnname => 'actions',
cannot_be_toggled => 1,
},
]
}
);
my $modules = C4::Utils::DataTables::TablesSettings::get_modules();
my $modules_expected = {
'admin' => {
'currency' => {
'currencies-table' => {
default_display_length => 20,
default_sort_order => 1,
default_save_state => 1,
default_save_state_search => 0,
columns => [
{
columnname => 'currency',
cannot_be_toggled => 1,
cannot_be_modified => 1,
is_hidden => 0,
},
{
columnname => 'rate',
cannot_be_toggled => 1,
cannot_be_modified => 1,
is_hidden => 0,
},
{
columnname => 'symbol',
cannot_be_toggled => 0,
cannot_be_modified => 0,
is_hidden => 0,
},
{
columnname => 'iso_code',
cannot_be_toggled => 0,
cannot_be_modified => 0,
is_hidden => 0,
},
{
columnname => 'last_updated',
cannot_be_toggled => 0,
cannot_be_modified => 0,
is_hidden => 0,
},
{
columnname => 'active',
cannot_be_toggled => 0,
cannot_be_modified => 0,
is_hidden => 1,
},
{
columnname => 'actions',
cannot_be_toggled => 1,
cannot_be_modified => 0,
is_hidden => 0,
},
]
}
}
}
};
is_deeply( $modules, $modules_expected, 'get_modules returns all values' );
for my $m ( keys %$modules ) {
for my $p ( keys %{ $modules->{$m} } ) {
for my $t ( keys %{ $modules->{$m}{$p} } ) {
my $columns = C4::Utils::DataTables::TablesSettings::get_columns( $m, $p, $t );
# We do not store default_save_state and default_save_state_search in the yml file
# Removing them before comparison
delete $_->{default_save_state} for @$columns;
delete $_->{default_save_state_search} for @$columns;
is_deeply(
$columns,
$modules->{$m}{$p}{$t}{columns},
"columns for $m>$p>$t"
);
my $table_settings = C4::Utils::DataTables::TablesSettings::get_table_settings( $m, $p, $t );
is_deeply(
{
default_display_length => $table_settings->{default_display_length},
default_sort_order => $table_settings->{default_sort_order},
default_save_state => $table_settings->{default_save_state},
default_save_state_search => $table_settings->{default_save_state_search},
},
{
default_display_length => $modules->{$m}{$p}{$t}{default_display_length},
default_sort_order => $modules->{$m}{$p}{$t}{default_sort_order},
default_save_state => $modules->{$m}{$p}{$t}{default_save_state},
default_save_state_search => $modules->{$m}{$p}{$t}{default_save_state_search},
}
);
}
}
}