Main Koha release repository
https://koha-community.org
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
3.3 KiB
75 lines
3.3 KiB
#!/usr/bin/perl
|
|
|
|
use Modern::Perl;
|
|
|
|
use Test::More tests => 18;
|
|
use Test::Warn;
|
|
use CGI;
|
|
use File::Basename;
|
|
use File::Spec;
|
|
use File::Temp qw( tempdir tempfile );
|
|
use FindBin qw($Bin);
|
|
use Archive::Extract;
|
|
use Module::Load::Conditional qw(can_load);
|
|
use Test::MockModule;
|
|
|
|
use C4::Context;
|
|
use t::lib::Mocks;
|
|
|
|
BEGIN {
|
|
push( @INC, dirname(__FILE__) . '/../../../../lib/plugins' );
|
|
|
|
use_ok('Koha::Plugins');
|
|
use_ok('Koha::Plugins::Handler');
|
|
use_ok('Koha::Plugins::Base');
|
|
use_ok('Koha::Plugin::Test');
|
|
}
|
|
|
|
t::lib::Mocks::mock_config( 'enable_plugins', 1 );
|
|
|
|
my $schema = Koha::Database->new->schema;
|
|
$schema->storage->txn_begin;
|
|
|
|
# Enable all plugins
|
|
my $plugins = Koha::Plugins->new;
|
|
$plugins->InstallPlugins;
|
|
my @plugins = $plugins->GetPlugins({ all => 1, class => 'Koha::Plugin::Test' });
|
|
map { $_->enable; } @plugins;
|
|
|
|
my $mock_plugin = Test::MockModule->new( 'Koha::Plugin::Test' );
|
|
$mock_plugin->mock( 'test_template', sub {
|
|
my ( $self, $file ) = @_;
|
|
my $template = $self->get_template({ file => $file });
|
|
$template->param( filename => $file );
|
|
return $template->output;
|
|
});
|
|
|
|
use_ok( 'Koha::Template::Plugin::KohaPlugins', 'Can use Koha::Template::Plugin::KohaPlugins' );
|
|
|
|
ok( my $plugin = Koha::Template::Plugin::KohaPlugins->new(), 'Able to instantiate template plugin' );
|
|
|
|
ok( index( $plugin->get_plugins_opac_js, 'Koha::Plugin::Test::opac_js' ) != -1, 'Test plugin opac_js return value is part of code returned by get_plugins_opac_js' );
|
|
ok( index( $plugin->get_plugins_opac_head, 'Koha::Plugin::Test::opac_head' ) != -1, 'Test plugin opac_head return value is part of code returned by get_plugins_opac_head' );
|
|
ok( index( $plugin->get_plugins_intranet_js, 'Koha::Plugin::Test::intranet_js' ) != -1, 'Test plugin intranet_js return value is part of code returned by get_plugins_intranet_js' );
|
|
ok( index( $plugin->get_plugins_intranet_head, 'Koha::Plugin::Test::intranet_head' ) != -1, 'Test plugin intranet_head return value is part of code returned by get_plugins_intranet_head' );
|
|
|
|
sub boom {
|
|
my ( $self, $file ) = @_;
|
|
die "Something wrong is happening in this hook";
|
|
}
|
|
$mock_plugin->mock( 'opac_head', \&boom );
|
|
$mock_plugin->mock( 'opac_js', \&boom );
|
|
$mock_plugin->mock( 'intranet_head', \&boom );
|
|
$mock_plugin->mock( 'intranet_js', \&boom );
|
|
warning_like { $plugin->get_plugins_opac_head } qr{Error calling 'opac_head' on the Koha::Plugin::Testplugin \(Something wrong is happening in this hook};
|
|
warning_like { $plugin->get_plugins_opac_js } qr{Error calling 'opac_js' on the Koha::Plugin::Testplugin \(Something wrong is happening in this hook};
|
|
warning_like { $plugin->get_plugins_intranet_head } qr{Error calling 'intranet_head' on the Koha::Plugin::Testplugin \(Something wrong is happening in this hook};
|
|
warning_like { $plugin->get_plugins_intranet_js } qr{Error calling 'intranet_js' on the Koha::Plugin::Testplugin \(Something wrong is happening in this hook};
|
|
|
|
t::lib::Mocks::mock_config('enable_plugins',0);
|
|
is( $plugin->get_plugins_opac_js, q{}, 'Test plugin opac_js return value is empty' );
|
|
is( $plugin->get_plugins_opac_head, q{}, 'Test plugin opac_head return value is empty' );
|
|
is( $plugin->get_plugins_intranet_js, q{}, 'Test plugin intranet_js return value is empty' );
|
|
is( $plugin->get_plugins_intranet_head, q{}, 'Test plugin intranet_head return value is empty' );
|
|
|
|
$schema->storage->txn_rollback;
|
|
|