From dedc83c7beffc0d8c4c7cf5e230ca40448991b53 Mon Sep 17 00:00:00 2001 From: Tomas Cohen Arazi Date: Sun, 28 Dec 2014 19:44:39 -0300 Subject: [PATCH] [PASSED QA] Bug 13496: add a method for the templates to print Koha version as desired This patch introduces a simple template plugin function that returns the Koha version number in different suitable formats. It introduces unit tests for the new function. They are run with To test: - Apply the patch - Run $ prove t/Koha_Template_Plugin_Koha.t => SUCCESS: the tests pass. - Sign off :-D Signed-off-by: Chris Cormack Signed-off-by: Kyle M Hall --- Koha/Template/Plugin/Koha.pm | 14 +++++++ t/Koha_Template_Plugin_Koha.t | 77 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 0 deletions(-) create mode 100644 t/Koha_Template_Plugin_Koha.t diff --git a/Koha/Template/Plugin/Koha.pm b/Koha/Template/Plugin/Koha.pm index 6b95e3b..f5898b5 100644 --- a/Koha/Template/Plugin/Koha.pm +++ b/Koha/Template/Plugin/Koha.pm @@ -45,4 +45,18 @@ sub Preference { return encode('UTF-8', C4::Context->preference( $pref ) ); } +sub Version { + my $version_string = C4::Context::KOHAVERSION; + my ($major,$minor,$maintenance,$development) = split('\.',$version_string); + + return { + major => $major, + release => $major . "." . $minor, + maintenance => $major . "." . $minor . "." . $maintenance, + development => ( $development ne '000' ) + ? $development + : undef + }; +} + 1; diff --git a/t/Koha_Template_Plugin_Koha.t b/t/Koha_Template_Plugin_Koha.t new file mode 100644 index 0000000..e22e0d8 --- /dev/null +++ b/t/Koha_Template_Plugin_Koha.t @@ -0,0 +1,77 @@ +#!/usr/bin/perl + +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# Koha is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . + +use Modern::Perl; + +use Test::More tests => 3; +use Test::MockModule; + +use String::Random; + +# Test the plugin is usable +use_ok( 'Koha::Template::Plugin::Koha' ); +ok( my $cache = Koha::Template::Plugin::Koha->new() ); + +subtest "Koha::Template::Plugin::Koha::Version tests" => sub { + + plan tests => 2; + + # Variables for mocking KOHAVERSION + my $major; + my $minor; + my $maintenance; + my $development; + + # Mock C4::Context::KOHAVERSION + my $context = new Test::MockModule('C4::Context'); + $context->mock( 'KOHAVERSION', sub { + return "$major.$minor.$maintenance.$development"; + }); + + my $rnd = new String::Random; + # development version test + $major = $rnd->randregex('\d'); + $minor = $rnd->randregex('\d\d'); + $maintenance = $rnd->randregex('\d\d'); + $development = $rnd->randregex('\d\d\d'); + my $version = "$major.$minor.$maintenance.$development"; + my $res = Koha::Template::Plugin::Koha::Version( $version ); + is_deeply( $res, { + major => $major, + release => $major . "." . $minor, + maintenance => $major . "." . $minor . "." . $maintenance, + development => $development + }, "Correct development version"); + + + # maintenance release test + $major = $rnd->randregex('\d'); + $minor = $rnd->randregex('\d\d'); + $maintenance = $rnd->randregex('\d\d'); + $development = "000"; + $version = "$major.$minor.$maintenance.$development"; + $res = Koha::Template::Plugin::Koha::Version( $version ); + is_deeply( $res, { + major => $major, + release => $major . "." . $minor, + maintenance => $major . "." . $minor . "." . $maintenance, + development => undef + }, "Correct maintenance version"); + +}; + +1; -- 1.7.2.5