Bug 13496: add a method for the templates to print Koha version as desired
authorTomas Cohen Arazi <tomascohen@gmail.com>
Sun, 28 Dec 2014 22:44:39 +0000 (19:44 -0300)
committerTomas Cohen Arazi <tomascohen@gmail.com>
Sun, 4 Jan 2015 14:24:07 +0000 (11:24 -0300)
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 <chris@bigballofwax.co.nz>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@gmail.com>
Koha/Template/Plugin/Koha.pm
t/Koha_Template_Plugin_Koha.t [new file with mode: 0644]

index 6b95e3b..f5898b5 100644 (file)
@@ -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 (file)
index 0000000..e22e0d8
--- /dev/null
@@ -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 <http://www.gnu.org/licenses>.
+
+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;