From 269e45473dc0e70d847aa61b92b347a5557fdaee Mon Sep 17 00:00:00 2001 From: Lari Taskula Date: Wed, 2 Nov 2016 16:20:12 +0200 Subject: [PATCH] Bug 18595: Unit tests preparing for GetMessagingPreferences move MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch prepares removing GetMessagingPreferences by adding some useful unit tests for subroutines that the move targets. Reserves.t already covers print notice, but this patch adds tests for a set transport type. To test: 1. Run t/db_dependent/Circulation.t 2. Run t/db_dependent/Reserves.t 3. Observe test pass Works together with followup patch Signed-off-by: Marc VĂ©ron Signed-off-by: David Bourgault --- t/db_dependent/Circulation.t | 47 +++++++++++++++++++++++++++++++++++++++++++- t/db_dependent/Reserves.t | 24 +++++++++++----------- 2 files changed, 57 insertions(+), 14 deletions(-) diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t index 1eb4fbc..253507a 100755 --- a/t/db_dependent/Circulation.t +++ b/t/db_dependent/Circulation.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 112; +use Test::More tests => 113; use DateTime; @@ -29,6 +29,7 @@ use C4::Biblio; use C4::Items; use C4::Log; use C4::Members; +use C4::Message; use C4::Reserves; use C4::Overdues qw(UpdateFine CalcFine); use Koha::DateUtils; @@ -36,6 +37,8 @@ use Koha::Database; use Koha::IssuingRules; use Koha::Checkouts; use Koha::Patrons; +use Koha::Patron::Message::Attributes; +use Koha::Patron::Message::Preferences; use Koha::Subscriptions; use Koha::Account::Lines; use Koha::Account::Offsets; @@ -2010,7 +2013,49 @@ subtest 'CanBookBeIssued | is_overdue' => sub { my ($issuingimpossible, $needsconfirmation) = CanBookBeIssued($patron,$item->{barcode},$ten_days_go, undef, undef, undef); is( $needsconfirmation->{RENEW_ISSUE}, 1, "This is a renewal"); is( $needsconfirmation->{TOO_MANY}, undef, "Not too many, is a renewal"); +}; + +subtest 'SendCirculationAlert test' => sub { + plan tests => 4; + + my $library = $builder->build( { source => 'Branch' } ); + my $patron = $builder->build( { source => 'Borrower' } ); + my $attribute = Koha::Patron::Message::Attributes->find({ + message_name => 'Item_Checkout', + }); + Koha::Patron::Message::Preference->new({ + borrowernumber => $patron->{'borrowernumber'}, + message_attribute_id => $attribute->message_attribute_id, + days_in_advance => undef, + wants_digest => 0, + message_transport_types => ['email'], + })->store; + my $biblioitem_1 = $builder->build( { source => 'Biblioitem' } ); + my $item_1 = $builder->build( + { source => 'Item', + value => { + homebranch => $library->{branchcode}, + holdingbranch => $library->{branchcode}, + notforloan => 0, + itemlost => 0, + withdrawn => 0, + biblionumber => $biblioitem_1->{biblionumber} + } + } + ); + my $old_message = C4::Message->find_last_message($patron, 'CHECKOUT', 'email'); + $old_message->{'message_id'} = 0 unless $old_message; + is(C4::Circulation::SendCirculationAlert({ + type => 'CHECKOUT', + item => $item_1, + borrower => $patron, + branch => $library->{'branchcode'}, + }), undef, "SendCirculationAlert called."); + my $new_message = C4::Message->find_last_message($patron, 'CHECKOUT', 'email'); + ok($old_message->{'message_id'} != $new_message->{'message_id'}, "New message has appeared."); + is($new_message->{'letter_code'}, 'CHECKOUT', "New message letter code is CHECKOUT."); + is($new_message->{'borrowernumber'}, $patron->{'borrowernumber'}, "New message is to our test patron."); }; sub set_userenv { diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index fd79427..61a3d16 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -39,6 +39,7 @@ use Koha::Libraries; use Koha::Notice::Templates; use Koha::Patrons; use Koha::Patron::Categories; +use Koha::Patron::Message::Preference; BEGIN { require_ok('C4::Reserves'); @@ -623,19 +624,6 @@ subtest '_koha_notify_reserve() tests' => sub { plan tests => 2; - my $wants_hold_and_email = { - wants_digest => '0', - transports => { - sms => 'HOLD', - 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'); my $email_hold_notice = $builder->build({ @@ -675,6 +663,16 @@ subtest '_koha_notify_reserve() tests' => sub { } }); + my $message_attr_id = Koha::Patron::Message::Attributes->find({ + message_name => 'Hold_Filled' + })->message_attribute_id; + Koha::Patron::Message::Preference->new({ + borrowernumber => $hold_borrower, + message_attribute_id => $message_attr_id, + message_transport_types => ['sms', 'email'], + wants_digest => 0, + })->store; + ModReserveAffect($hold->{itemnumber}, $hold->{borrowernumber}, 0); my $sms_message_address = $schema->resultset('MessageQueue')->search({ letter_code => 'HOLD', -- 2.7.4