From b37999acf78a4e43a170011523ef84cf6aadae5f Mon Sep 17 00:00:00 2001 From: Kyle M Hall Date: Mon, 14 Jan 2013 08:23:46 -0500 Subject: [PATCH] Bug 7804 - Add Koha Plugin System - Unit Tests --- t/Koha/Plugin/Test.pm | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ t/Plugins.t | 39 ++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 0 deletions(-) create mode 100644 t/Koha/Plugin/Test.pm create mode 100755 t/Plugins.t diff --git a/t/Koha/Plugin/Test.pm b/t/Koha/Plugin/Test.pm new file mode 100644 index 0000000..d34a6eb --- /dev/null +++ b/t/Koha/Plugin/Test.pm @@ -0,0 +1,53 @@ +package Koha::Plugin::Test; + +## It's good practive to use Modern::Perl +use Modern::Perl; + +## Required for all plugins +use base qw(Koha::Plugins::Base); + +our $VERSION = 1.01; +our $metadata = { + name => 'Test Plugin', + author => 'Kyle M Hall', + description => 'Test plugin', + date_authored => '2013-01-14', + date_updated => '2013-01-14', + minimum_version => '3.11', + maximum_version => undef, + version => $VERSION, +}; + +## This is the minimum code required for a plugin's 'new' method +## More can be added, but none should be removed +sub new { + my ( $class, $args ) = @_; + $args->{'metadata'} = $metadata; + my $self = $class->SUPER::new($args); + return $self; +} + +sub report { + my ( $self, $args ) = @_; + return 1; +} + +sub tool { + my ( $self, $args ) = @_; + return 1; +} + +sub configure { + my ( $self, $args ) = @_; + return 1; +} + +sub install { + my ( $self, $args ) = @_; + return 1; +} + +sub uninstall { + my ( $self, $args ) = @_; + return 1; +} diff --git a/t/Plugins.t b/t/Plugins.t new file mode 100755 index 0000000..3eb0a47 --- /dev/null +++ b/t/Plugins.t @@ -0,0 +1,39 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use Test::More tests => 15; + +use Module::Load::Conditional qw(can_load); + +use C4::Context; + +BEGIN { + die('Plugins not enabled in config') unless ( C4::Context->config("enable_plugins") ); + + push( @INC, '.' ); + use_ok('Koha::Plugins'); + use_ok('Koha::Plugins::Handler'); + use_ok('Koha::Plugins::Base'); + use_ok('Koha::Plugin::Test'); +} + +ok( can_load( modules => { "Koha::Plugin::Test" => undef } ), 'Test can_load' ); + +my $plugin = Koha::Plugin::Test->new(); + +isa_ok( $plugin, "Koha::Plugin::Test", 'Test plugin class' ); +isa_ok( $plugin, "Koha::Plugins::Base", 'Test plugin parent class' ); + +ok( $plugin->can('report'), 'Test plugin can report' ); +ok( $plugin->can('tool'), 'Test plugin can tool' ); +ok( $plugin->can('configure'), 'Test plugin can configure' ); +ok( $plugin->can('install'), 'Test plugin can install' ); +ok( $plugin->can('uninstall'), 'Test plugin can install' ); + +my $metadata = $plugin->get_metadata(); +ok( $metadata->{'name'} eq 'Test Plugin', 'Test $plugin->get_metadata()' ); + +ok( $plugin->get_qualified_table_name('mytable') eq 'koha_plugin_test_mytable', 'Test $plugin->get_qualified_table_name()' ); +ok( $plugin->get_plugin_http_path() eq '/plugin/Koha/Plugin/Test', 'Test $plugin->get_plugin_http_path()' ); \ No newline at end of file -- 1.7.2.5