Bugzilla – Attachment 60621 Details for
Bug 11580
If returnBeforeExpiry is on, holidays are not taken into account to calculate the due date
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
BUG 11580 : Added unit test
BUG-11580--Added-unit-test.patch (text/plain), 11.43 KB, created by
Baptiste
on 2017-02-23 16:28:27 UTC
(
hide
)
Description:
BUG 11580 : Added unit test
Filename:
MIME Type:
Creator:
Baptiste
Created:
2017-02-23 16:28:27 UTC
Size:
11.43 KB
patch
obsolete
>From 900bc4f1f57b96052fc658d89058e1bc4cf9717f Mon Sep 17 00:00:00 2001 >From: Baptiste Wojtkowski <baptiste.wojtkowski@biblibre.com> >Date: Thu, 23 Feb 2017 16:21:05 +0000 >Subject: [PATCH] BUG 11580 : Added unit test > >Added one unit test when the syspref useDaysMode is active. To perform it I >had to put the function add_holiday in the perl module Koha/Calendar.pm from >the script tools/newHolidays.pl, in order to use the function in the tests. >--- > Koha/Calendar.pm | 67 +++++++++++++++++++++++++ > t/db_dependent/Circulation/dateexpiry.t | 26 +++++++++- > tools/newHolidays.pl | 88 +++++---------------------------- > 3 files changed, 104 insertions(+), 77 deletions(-) > >diff --git a/Koha/Calendar.pm b/Koha/Calendar.pm >index f6cb58c..b36beab 100644 >--- a/Koha/Calendar.pm >+++ b/Koha/Calendar.pm >@@ -7,6 +7,7 @@ use DateTime; > use DateTime::Set; > use DateTime::Duration; > use C4::Context; >+use C4::Calendar; > use Koha::Caches; > use Carp; > >@@ -368,6 +369,72 @@ sub clear_weekly_closed_days { > return; > } > >+ >+sub add_holiday { >+ my ($newoperation, $branchcode, $weekday, $day, $month, $year, $title, $description, @holiday_list) = @_; >+ my $calendar = C4::Calendar->new(branchcode => $branchcode); >+ >+ if ($newoperation eq 'weekday') { >+ unless ( $weekday && ($weekday ne '') ) { >+ # was dow calculated by javascript? original code implies it was supposed to be. >+ # if not, we need it. >+ $weekday = &Date::Calc::Day_of_Week($year, $month, $day) % 7 unless($weekday); >+ } >+ unless($calendar->isHoliday($day, $month, $year)) { >+ $calendar->insert_week_day_holiday(weekday => $weekday, >+ title => $title, >+ description => $description); >+ } >+ }elsif ($newoperation eq 'repeatable') { >+ unless($calendar->isHoliday($day, $month, $year)) { >+ $calendar->insert_day_month_holiday(day => $day, >+ month => $month, >+ title => $title, >+ description => $description); >+ } >+ } elsif ($newoperation eq 'holiday') { >+ unless($calendar->isHoliday($day, $month, $year)) { >+ $calendar->insert_single_holiday( >+ day => $day, >+ month => $month, >+ year => $year, >+ title => $title, >+ description => $description); >+ } >+ >+ } elsif ( $newoperation eq 'holidayrange' ) { >+ if (@holiday_list){ >+ foreach my $date (@holiday_list){ >+ unless ( $calendar->isHoliday( $date->{local_c}->{day}, $date->{local_c}->{month}, $date->{local_c}->{year} ) ) { >+ $calendar->insert_single_holiday( >+ day => $date->{local_c}->{day}, >+ month => $date->{local_c}->{month}, >+ year => $date->{local_c}->{year}, >+ title => $title, >+ description => $description >+ ); >+ } >+ } >+ } >+ } elsif ( $newoperation eq 'holidayrangerepeat' ) { >+ if (@holiday_list){ >+ foreach my $date (@holiday_list){ >+ unless ( $calendar->isHoliday( $date->{local_c}->{day}, $date->{local_c}->{month}, $date->{local_c}->{year} ) ) { >+ $calendar->insert_day_month_holiday( >+ day => $date->{local_c}->{day}, >+ month => $date->{local_c}->{month}, >+ title => $title, >+ description => $description >+ ); >+ } >+ } >+ } >+ } >+ # we updated the single_holidays table, so wipe its cache >+ my $cache = Koha::Caches->get_instance(); >+ $cache->clear_from_cache( 'single_holidays') ; >+} >+ > 1; > __END__ > >diff --git a/t/db_dependent/Circulation/dateexpiry.t b/t/db_dependent/Circulation/dateexpiry.t >index 57f306e..8e1cc7b 100644 >--- a/t/db_dependent/Circulation/dateexpiry.t >+++ b/t/db_dependent/Circulation/dateexpiry.t >@@ -23,6 +23,7 @@ use Test::More tests => 2; > use C4::Members; > use Koha::DateUtils; > use Koha::Database; >+use Koha::Calendar; > > use t::lib::TestBuilder; > use t::lib::Mocks qw( mock_preference ); >@@ -39,7 +40,7 @@ subtest 'Tests for CanBookBeIssued related to dateexpiry' => sub { > can_book_be_issued(); > }; > subtest 'Tests for CalcDateDue related to dateexpiry' => sub { >- plan tests => 4; >+ plan tests => 5; > calc_date_due(); > }; > >@@ -82,6 +83,7 @@ sub can_book_be_issued { > > sub calc_date_due { > t::lib::Mocks::mock_preference( 'ReturnBeforeExpiry', 1 ); >+ t::lib::Mocks::mock_preference( 'useDaysMode', 'Days' ); > > # this triggers the compare between expiry and due date > >@@ -116,6 +118,28 @@ sub calc_date_due { > $d = C4::Circulation::CalcDateDue( $today, $item->{itype}, $branch->{branchcode}, $patron ); > my $t2 = time; > is( ref $d eq "DateTime" && $t2 - $t1 < 1, 1, "CalcDateDue with expiry in year 9876 in " . sprintf( "%6.4f", $t2 - $t1 ) . " seconds." ); >+ >+ # fifth test takes account of closed days >+ $d = C4::Circulation::CalcDateDue( $today, $item->{itype}, $branch->{branchcode}, $patron ); >+ t::lib::Mocks::mock_preference( 'useDaysMode', 'Datedue' ); >+ my $calendar = C4::Calendar->new(branchcode => $branch->{branchcode}); >+ Koha::Calendar::add_holiday('holiday', >+ $branch->{branchcode}, >+ $d->day_of_week(), >+ $d->day(), >+ $d->month(), >+ $d->year(), >+ 'holidayTest', >+ 'holidayDesc' >+ ); >+ $calendar->delete_holiday(weekday => $d->day_of_week() - 1, day => $d->day()-1, month =>$d->month(), year=>$d->year() ); >+ $d2 = C4::Circulation::CalcDateDue( $today, $item->{itype}, $branch->{branchcode}, $patron ); >+ $d2->add(days => 1); >+ $d->truncate( to => 'day' ); >+ $d2->truncate( to => 'day' ); >+ warn Data::Dumper::Dumper($d->datetime()); >+ warn Data::Dumper::Dumper($d2->datetime()); >+ is ( DateTime->compare( $d, $d2) == 0, 1, "no problem with closed days"); > } > > $schema->storage->txn_rollback; >diff --git a/tools/newHolidays.pl b/tools/newHolidays.pl >index eb948c7..7ebca63 100755 >--- a/tools/newHolidays.pl >+++ b/tools/newHolidays.pl >@@ -15,20 +15,21 @@ use Koha::Caches; > use C4::Calendar; > use DateTime; > use Koha::DateUtils; >+use Koha::Calendar; > > my $input = new CGI; > my $dbh = C4::Context->dbh(); > >-our $branchcode = $input->param('newBranchName'); >+my $branchcode = $input->param('newBranchName'); > my $originalbranchcode = $branchcode; >-our $weekday = $input->param('newWeekday'); >-our $day = $input->param('newDay'); >-our $month = $input->param('newMonth'); >-our $year = $input->param('newYear'); >+my $weekday = $input->param('newWeekday'); >+my $day = $input->param('newDay'); >+my $month = $input->param('newMonth'); >+my $year = $input->param('newYear'); > my $dateofrange = $input->param('dateofrange'); >-our $title = $input->param('newTitle'); >-our $description = $input->param('newDescription'); >-our $newoperation = $input->param('newOperation'); >+my $title = $input->param('newTitle'); >+my $description = $input->param('newDescription'); >+my $newoperation = $input->param('newOperation'); > my $allbranches = $input->param('allBranches'); > > >@@ -46,7 +47,7 @@ if ($description) { > } > > # We make an array with holiday's days >-our @holiday_list; >+my @holiday_list; > if ($end_dt){ > for (my $dt = $first_dt->clone(); > $dt <= $end_dt; >@@ -59,75 +60,10 @@ if ($end_dt){ > if($allbranches) { > my $libraries = Koha::Libraries->search; > while ( my $library = $libraries->next ) { >- add_holiday($newoperation, $library->branchcode, $weekday, $day, $month, $year, $title, $description); >+ Koha::Calendar::add_holiday($newoperation, $library->branchcode, $weekday, $day, $month, $year, $title, $description, @holiday_list); > } > } else { >- add_holiday($newoperation, $branchcode, $weekday, $day, $month, $year, $title, $description); >+ Koha::Calendar::add_holiday($newoperation, $branchcode, $weekday, $day, $month, $year, $title, $description, @holiday_list); > } > > print $input->redirect("/cgi-bin/koha/tools/holidays.pl?branch=$originalbranchcode&calendardate=$calendardate"); >- >-#FIXME: move add_holiday() to a better place >-sub add_holiday { >- ($newoperation, $branchcode, $weekday, $day, $month, $year, $title, $description) = @_; >- my $calendar = C4::Calendar->new(branchcode => $branchcode); >- >- if ($newoperation eq 'weekday') { >- unless ( $weekday && ($weekday ne '') ) { >- # was dow calculated by javascript? original code implies it was supposed to be. >- # if not, we need it. >- $weekday = &Date::Calc::Day_of_Week($year, $month, $day) % 7 unless($weekday); >- } >- unless($calendar->isHoliday($day, $month, $year)) { >- $calendar->insert_week_day_holiday(weekday => $weekday, >- title => $title, >- description => $description); >- } >- } elsif ($newoperation eq 'repeatable') { >- unless($calendar->isHoliday($day, $month, $year)) { >- $calendar->insert_day_month_holiday(day => $day, >- month => $month, >- title => $title, >- description => $description); >- } >- } elsif ($newoperation eq 'holiday') { >- unless($calendar->isHoliday($day, $month, $year)) { >- $calendar->insert_single_holiday(day => $day, >- month => $month, >- year => $year, >- title => $title, >- description => $description); >- } >- >- } elsif ( $newoperation eq 'holidayrange' ) { >- if (@holiday_list){ >- foreach my $date (@holiday_list){ >- unless ( $calendar->isHoliday( $date->{local_c}->{day}, $date->{local_c}->{month}, $date->{local_c}->{year} ) ) { >- $calendar->insert_single_holiday( >- day => $date->{local_c}->{day}, >- month => $date->{local_c}->{month}, >- year => $date->{local_c}->{year}, >- title => $title, >- description => $description >- ); >- } >- } >- } >- } elsif ( $newoperation eq 'holidayrangerepeat' ) { >- if (@holiday_list){ >- foreach my $date (@holiday_list){ >- unless ( $calendar->isHoliday( $date->{local_c}->{day}, $date->{local_c}->{month}, $date->{local_c}->{year} ) ) { >- $calendar->insert_day_month_holiday( >- day => $date->{local_c}->{day}, >- month => $date->{local_c}->{month}, >- title => $title, >- description => $description >- ); >- } >- } >- } >- } >- # we updated the single_holidays table, so wipe its cache >- my $cache = Koha::Caches->get_instance(); >- $cache->clear_from_cache( 'single_holidays') ; >-} >-- >2.7.4
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 11580
:
57562
|
58740
|
60621
|
64681
|
65779
|
65780
|
66705
|
66706
|
66707
|
66886
|
66888