From d7c054c369f15f444c71852b363d7ee54c0e046f Mon Sep 17 00:00:00 2001 From: Chris Cormack Date: Thu, 12 Jan 2012 21:23:21 +1300 Subject: [PATCH] Bug 929 : Follow up adding unit tests, discovered C4::Dates cached the syspref with no way to clear it, fixed also. (cherry picked from commit 55d0b65522d3caa8d7c819b2cfa7ce8f2483c33e) Signed-off-by: Chris Nighswonger (cherry picked from commit 7d4cc170edf95d3e05ec353070303b15b44cf56b) Signed-off-by: Chris Nighswonger --- C4/Dates.pm | 6 +++++ t/Koha_template_plugin_KohaDates.t | 42 ++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 t/Koha_template_plugin_KohaDates.t diff --git a/C4/Dates.pm b/C4/Dates.pm index e61fc19731..50db12e01a 100644 --- a/C4/Dates.pm +++ b/C4/Dates.pm @@ -41,6 +41,12 @@ sub _prefformat { return $prefformat; } +sub reset_prefformat { # subroutine to clear the prefformat, called when we change it + if (defined $prefformat){ + $prefformat = C4::Context->preference('dateformat'); + } +} + our %format_map = ( iso => 'yyyy-mm-dd', # plus " HH:MM:SS" metric => 'dd/mm/yyyy', # plus " HH:MM:SS" diff --git a/t/Koha_template_plugin_KohaDates.t b/t/Koha_template_plugin_KohaDates.t new file mode 100644 index 0000000000..f9a0e72591 --- /dev/null +++ b/t/Koha_template_plugin_KohaDates.t @@ -0,0 +1,42 @@ +#!/usr/bin/perl +# + +use strict; +use warnings; +use C4::Context; +use C4::Dates; +use Test::More tests => 5; + +BEGIN { + use_ok('Koha::Template::Plugin::KohaDates'); +} + +my $date = "1973-05-21"; +my $context = C4::Context->new(); +my $dateobj = C4::Dates->new(); + +my $filter = Koha::Template::Plugin::KohaDates->new(); +ok ($filter, "new()"); + + +$context->set_preference( "dateformat", 'iso' ); +$context->clear_syspref_cache(); +$dateobj->reset_prefformat; + +my $filtered_date = $filter->filter($date); +is ($filtered_date,$date, "iso conversion") or diag ("iso conversion fails"); + +#$filter = Koha::Template::Plugin::KohaDates->new(); +$context->set_preference( "dateformat", 'us' ); +$context->clear_syspref_cache(); +$dateobj->reset_prefformat; + +$filtered_date = $filter->filter($date); +is ($filtered_date,'05/21/1973', "us conversion") or diag ("us conversion fails $filtered_date"); + +$context->set_preference( "dateformat", 'metric' ); +$context->clear_syspref_cache(); +$dateobj->reset_prefformat; + +$filtered_date = $filter->filter($date); +is ($filtered_date,'21/05/1973', "metric conversion") or diag ("metric conversion fails $filtered_date"); -- 2.39.5