Bug 34978: Simplify tests logic
Joining the plugin classes strings and then performing regex checks on it might be a bit fragile. I had hard time understanding the ands the conditions for truth. I rewrote it in a more intuitive way just using `none` and the tests are easy to understand and pass. The failure is probably because new plugins were added that make the resulting string not match the expected structure. The new new tests design is more readable anyway and not subject to this errors in future additions. Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io> Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
This commit is contained in:
parent
41c3020e64
commit
67ba381a29
|
|
@ -22,6 +22,7 @@ use File::Basename;
|
|||
use File::Spec;
|
||||
use File::Temp qw( tempdir tempfile );
|
||||
use FindBin qw($Bin);
|
||||
use List::MoreUtils qw(none);
|
||||
use Module::Load::Conditional qw(can_load);
|
||||
use Test::MockModule;
|
||||
use Test::NoWarnings;
|
||||
|
|
@ -194,7 +195,7 @@ subtest 'GetPlugins() tests' => sub {
|
|||
|
||||
subtest 'InstallPlugins() tests' => sub {
|
||||
|
||||
plan tests => 6;
|
||||
plan tests => 8;
|
||||
|
||||
$schema->storage->txn_begin;
|
||||
|
||||
|
|
@ -204,21 +205,25 @@ subtest 'InstallPlugins() tests' => sub {
|
|||
|
||||
# Tests for the exclude parameter
|
||||
# Test the returned plugins of the InstallPlugins subroutine
|
||||
my $excluded_plugins = [ "Koha::Plugin::Test", "Koha::Plugin::MarcFieldValues" ];
|
||||
my $plugins = Koha::Plugins->new( { enable_plugins => 1 } );
|
||||
my @installed_plugins = $plugins->InstallPlugins( { exclude => [ "Koha::Plugin::Test", "Koha::Plugin::MarcFieldValues" ] } );
|
||||
my $plugin_classes = join( " ", map { $_->{class} } @installed_plugins );
|
||||
my @installed_plugins = $plugins->InstallPlugins( { exclude => $excluded_plugins } );
|
||||
|
||||
my $result = grep { $plugin_classes !~ $_ } [ ":Test |:Test\$", ":MarcFieldValues |:MarcFieldValues\$" ]
|
||||
&& $plugin_classes =~ ":TestItemBarcodeTransform |:TestItemBarcodeTransform\$";
|
||||
ok( $result, "Excluded plugins are not returned" );
|
||||
foreach my $excluded_plugin ( @{$excluded_plugins} ) {
|
||||
ok(
|
||||
none { $_ eq $excluded_plugin } ( map { $_->{class} } @installed_plugins ),
|
||||
"Excluded plugin not returned ($excluded_plugin)"
|
||||
);
|
||||
}
|
||||
|
||||
# Test the plugins in the database
|
||||
my @plugins = $plugins->GetPlugins( { all => 1, error => 1 } );
|
||||
$plugin_classes = join( " ", map { $_->{class} } @plugins );
|
||||
|
||||
$result = grep { $plugin_classes !~ $_ } [ ":Test |:Test\$", ":MarcFieldValues |:MarcFieldValues\$" ]
|
||||
&& $plugin_classes =~ ":TestItemBarcodeTransform |:TestItemBarcodeTransform\$";
|
||||
ok( $result, "Excluded plugins are not installed" );
|
||||
foreach my $excluded_plugin ( @{$excluded_plugins} ) {
|
||||
ok(
|
||||
none { $_ eq $excluded_plugin } ( map { $_->{class} } @plugins ),
|
||||
"Excluded plugin not installed ($excluded_plugin)"
|
||||
);
|
||||
}
|
||||
|
||||
# Remove installed plugins data
|
||||
Koha::Plugins::Methods->delete;
|
||||
|
|
@ -226,9 +231,10 @@ subtest 'InstallPlugins() tests' => sub {
|
|||
|
||||
# Tests for the include parameter
|
||||
# Test the returned plugins of the InstallPlugins subroutine
|
||||
@installed_plugins = $plugins->InstallPlugins( { include => [ "Koha::Plugin::Test", "Koha::Plugin::MarcFieldValues" ] } );
|
||||
@installed_plugins =
|
||||
$plugins->InstallPlugins( { include => [ "Koha::Plugin::Test", "Koha::Plugin::MarcFieldValues" ] } );
|
||||
|
||||
$result = 1;
|
||||
my $result = 1;
|
||||
foreach my $plugin_class ( map { $_->{class} } @installed_plugins ) {
|
||||
$result = 0 unless ( "$plugin_class" =~ ":Test\$" || "$plugin_class" =~ ":MarcFieldValues\$" );
|
||||
}
|
||||
|
|
@ -244,17 +250,16 @@ subtest 'InstallPlugins() tests' => sub {
|
|||
ok( $result, "Only included plugins are installed" );
|
||||
|
||||
# Tests when both include and exclude parameter are used simultaneously
|
||||
throws_ok
|
||||
{
|
||||
$plugins->InstallPlugins( { exclude => [ "Koha::Plugin::Test" ], include => [ "Koha::Plugin::Test" ] } );
|
||||
}
|
||||
'Koha::Exceptions::BadParameter';
|
||||
throws_ok {
|
||||
$plugins->InstallPlugins( { exclude => ["Koha::Plugin::Test"], include => ["Koha::Plugin::Test"] } );
|
||||
}
|
||||
'Koha::Exceptions::BadParameter';
|
||||
|
||||
# Tests when the plugin to be installled is not found
|
||||
throws_ok
|
||||
{
|
||||
$plugins->InstallPlugins( { include => [ "Koha::Plugin::NotfoundPlugin" ] } );
|
||||
}
|
||||
'Koha::Exceptions::BadParameter';
|
||||
throws_ok {
|
||||
$plugins->InstallPlugins( { include => ["Koha::Plugin::NotfoundPlugin"] } );
|
||||
}
|
||||
'Koha::Exceptions::BadParameter';
|
||||
|
||||
$schema->storage->txn_rollback;
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue