Jonathan Druart
fc66eedcc4
This failure has been introduced by
commit 243b797dd1
Bug 15285: Update common files
This is because the cannot_be_modified key is not always created by
C4::Utils::DataTables::ColumnsSettings subroutines
Test plan:
prove t/db_dependent/ColumnsSettings.t
should return green
And you can also test a table where the feature is set and a column
cannot be modified from the admin page.
NOTE: Works as described. I was pondering this potential
solution when I found it in bugzilla.
Signed-off-by: Mark Tompsett <mtompset@hotmail.com>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Brendan A Gallagher <brendan@bywatersolutions.com>
184 lines
5.7 KiB
Perl
184 lines
5.7 KiB
Perl
#!/usr/bin/perl;
|
|
|
|
use Modern::Perl;
|
|
use Test::More tests => 2;
|
|
use Test::MockModule;
|
|
|
|
use C4::Context;
|
|
use C4::Utils::DataTables::ColumnsSettings;
|
|
my $dbh = C4::Context->dbh;
|
|
$dbh->{AutoCommit} = 0;
|
|
$dbh->{RaiseError} = 1;
|
|
|
|
$dbh->do(q|DELETE FROM columns_settings|);
|
|
|
|
my $module = new Test::MockModule('C4::Utils::DataTables::ColumnsSettings');
|
|
$module->mock(
|
|
'get_yaml',
|
|
sub {
|
|
{
|
|
modules => {
|
|
admin => {
|
|
currency => {
|
|
'currencies-table' => [
|
|
{
|
|
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::ColumnsSettings::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::ColumnsSettings::get_modules();
|
|
|
|
my $modules_expected = {
|
|
'admin' => {
|
|
'currency' => {
|
|
'currencies-table' => [
|
|
{
|
|
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::ColumnsSettings::get_columns( $m, $p, $t );
|
|
is_deeply(
|
|
$columns,
|
|
$modules->{$m}{$p}{$t},
|
|
"columns for $m>$p>$t"
|
|
);
|
|
}
|
|
}
|
|
}
|
|
|
|
$dbh->rollback;
|