Bugzilla – Attachment 128951 Details for
Bug 27208
Add a configurable time delay feature to hold notice templates
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 27208: Unit tests
Bug-27208-Unit-tests.patch (text/plain), 7.46 KB, created by
Björn Nylén
on 2022-01-02 16:09:01 UTC
(
hide
)
Description:
Bug 27208: Unit tests
Filename:
MIME Type:
Creator:
Björn Nylén
Created:
2022-01-02 16:09:01 UTC
Size:
7.46 KB
patch
obsolete
>From 5df0bc3d5ee4468c25ae57b3083268c988055181 Mon Sep 17 00:00:00 2001 >From: =?UTF-8?q?Bj=C3=B6rn=20Nyl=C3=A9n?= <bjorn.nylen@ub.lu.se> >Date: Tue, 14 Dec 2021 08:35:04 +0000 >Subject: [PATCH] Bug 27208: Unit tests > >This commit adds unit test for changes in C4/Letters.pm and C4/Reserves.pm >--- > t/db_dependent/Letters.t | 33 +++++++++++- > t/db_dependent/Reserves.t | 103 +++++++++++++++++++++++++++++++++++++- > 2 files changed, 134 insertions(+), 2 deletions(-) > >diff --git a/t/db_dependent/Letters.t b/t/db_dependent/Letters.t >index 9a37118503..a0924aff8f 100755 >--- a/t/db_dependent/Letters.t >+++ b/t/db_dependent/Letters.t >@@ -18,7 +18,7 @@ > # along with Koha; if not, see <http://www.gnu.org/licenses>. > > use Modern::Perl; >-use Test::More tests => 83; >+use Test::More tests => 88; > use Test::MockModule; > use Test::Warn; > use Test::Exception; >@@ -147,6 +147,7 @@ is( $messages->[0]->{status}, 'pending', 'EnqueueLetter stores the status pendin > isnt( $messages->[0]->{time_queued}, undef, 'Time queued inserted by default in message_queue table' ); > is( $messages->[0]->{updated_on}, $messages->[0]->{time_queued}, 'Time status changed equals time queued when created in message_queue table' ); > is( $messages->[0]->{failure_code}, '', 'Failure code for successful message correctly empty'); >+is( $messages->[0]->{delay_until}, undef, 'Delay until should be undef if not set'); > > # Setting time_queued to something else than now > my $yesterday = dt_from_string->subtract( days => 1 ); >@@ -171,6 +172,36 @@ is( > isnt($messages->[0]->{updated_on}, $messages->[0]->{time_queued}, 'Time status changed differs from time queued when status changes' ); > is(dt_from_string($messages->[0]->{time_queued}), $yesterday, 'Time queued remaines inmutable' ); > >+# Delayed message >+my $tomorrow = dt_from_string()->add( days => 1 ); >+my $delay_message = { >+ borrowernumber => $borrowernumber, >+ message_transport_type => 'email', >+ to_address => 'to@example', >+ from_address => 'from@example.com', >+ delay_until => $tomorrow, >+}; >+$delay_message->{letter} = { >+ content => 'I am waiting', >+ title => 'Patience is great', >+ metadata => 'metadata', >+ code => 'TEST_MESSAGE', >+ content_type => 'text/plain', >+}; >+ >+my $delayed_message_id = C4::Letters::EnqueueLetter($delay_message); >+ >+my $delay_until = Koha::Notice::Messages->find($delayed_message_id)->delay_until; >+is(dt_from_string($delay_until), $tomorrow, 'Delay_until is properly set'); >+ >+my $delayed_messages_processed = C4::Letters::SendQueuedMessages(); >+is($delayed_messages_processed, 0, 'Message not processed if delay_until is set in the future'); >+ >+Koha::Notice::Messages->find($delayed_message_id)->delay_until($yesterday)->store; >+$delayed_messages_processed = C4::Letters::SendQueuedMessages(); >+is($delayed_messages_processed, 1, 'Message processed if delay_until is set in the past'); >+Koha::Notice::Messages->find($delayed_message_id)->delete; >+ > # ResendMessage > my $resent = C4::Letters::ResendMessage($messages->[0]->{message_id}); > my $message = C4::Letters::GetMessage( $messages->[0]->{message_id}); >diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t >index 9b4122dbd4..7771211f0e 100755 >--- a/t/db_dependent/Reserves.t >+++ b/t/db_dependent/Reserves.t >@@ -17,7 +17,7 @@ > > use Modern::Perl; > >-use Test::More tests => 68; >+use Test::More tests => 69; > use Test::MockModule; > use Test::Warn; > >@@ -1332,6 +1332,107 @@ subtest 'ModReserveAffect logging' => sub { > like( $log->info, qr{$expected}, 'Timestamp logged is the current one' ); > }; > >+subtest 'ModReserveAffect delayed notice' => sub { >+ >+ plan tests => 4; >+ >+ my $wants_hold_and_email = { >+ wants_digest => '0', >+ transports => { >+ email => 'HOLD', >+ }, >+ letter_code => 'HOLD' >+ }; >+ >+ my $mp = Test::MockModule->new( 'C4::Members::Messaging' ); >+ >+ $mp->mock("GetMessagingPreferences",$wants_hold_and_email); >+ >+ $dbh->do('DELETE FROM letter'); >+ $dbh->do('DELETE FROM reserves'); >+ $dbh->do('DELETE FROM message_queue'); >+ >+ >+ my $email_hold_notice = $builder->build({ >+ source => 'Letter', >+ value => { >+ message_transport_type => 'email', >+ branchcode => '', >+ code => 'HOLD', >+ module => 'reserves', >+ lang => 'default', >+ } >+ }); >+ >+ my $hold_borrower = $builder->build({ >+ source => 'Borrower', >+ value => { >+ email=>'ac@b.com', >+ } >+ })->{borrowernumber}; >+ >+ my $hold = C4::Reserves::AddReserve( >+ { >+ branchcode => $item->homebranch, >+ borrowernumber => $hold_borrower, >+ biblionumber => $item->biblionumber, >+ } >+ ); >+ t::lib::Mocks::mock_preference('PickupNoticeDelayMode', 'off'); >+ t::lib::Mocks::mock_preference('PickupNoticeDelayDuration', 1); >+ >+ # No delay allowed >+ my $tomorrow = dt_from_string()->add(days => 1); >+ ModReserveAffect($item->itemnumber, $hold_borrower, 0, $hold, undef, $tomorrow ); >+ my $delay_until = $schema->resultset('MessageQueue')->search({ >+ letter_code => 'HOLD', >+ message_transport_type => 'email', >+ borrowernumber => $hold_borrower, >+ }, { order_by => { -desc => 'message_id' } })->next()->delay_until(); >+ is($delay_until, undef ,"No notice delay if PickupNoticeDelayMode is off even if delay is passed"); >+ >+ $dbh->do('DELETE FROM message_queue'); >+ $dbh->do('DELETE FROM reserves'); >+ $hold = C4::Reserves::AddReserve( >+ { >+ branchcode => $item->homebranch, >+ borrowernumber => $hold_borrower, >+ biblionumber => $item->biblionumber, >+ } >+ ); >+ >+ t::lib::Mocks::mock_preference('PickupNoticeDelayMode', 'fixed'); >+ my $more_than_hour = dt_from_string()->add( minutes => 61); >+ my $less_than_hour = dt_from_string()->add( minutes => 59); >+ ModReserveAffect($item->itemnumber, $hold_borrower, 0, $hold, undef, undef); >+ $delay_until = $schema->resultset('MessageQueue')->search({ >+ letter_code => 'HOLD', >+ message_transport_type => 'email', >+ borrowernumber => $hold_borrower, >+ }, { order_by => { -desc => 'message_id' } })->next()->delay_until(); >+ cmp_ok(dt_from_string($delay_until)->epoch, ">=", $less_than_hour->epoch, "1h fixed delay_until is bigger than 59 min."); >+ cmp_ok(dt_from_string($delay_until), "<=", $more_than_hour, "1h fixed delay_until is less than 61 min."); >+ >+ $dbh->do('DELETE FROM message_queue'); >+ $dbh->do('DELETE FROM reserves'); >+ $hold = C4::Reserves::AddReserve( >+ { >+ branchcode => $item->homebranch, >+ borrowernumber => $hold_borrower, >+ biblionumber => $item->biblionumber, >+ } >+ ); >+ >+ t::lib::Mocks::mock_preference('PickupNoticeDelayMode', 'staff'); >+ ModReserveAffect($item->itemnumber, $hold_borrower, 0, $hold, undef, $tomorrow ); >+ $delay_until = $schema->resultset('MessageQueue')->search({ >+ letter_code => 'HOLD', >+ message_transport_type => 'email', >+ borrowernumber => $hold_borrower, >+ }, { order_by => { -desc => 'message_id' } })->next()->delay_until(); >+ is(dt_from_string($delay_until), $tomorrow, "Delay_until is same as set in function call"); >+}; >+ > sub count_hold_print_messages { > my $message_count = $dbh->selectall_arrayref(q{ > SELECT COUNT(*) >-- >2.20.1
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 27208
:
128387
|
128388
|
128389
|
128390
|
128587
|
128588
|
128589
|
128590
|
128948
|
128949
|
128950
| 128951