From d476b89d962eeb0faacc764047559fca5b490108 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 | 48 +++++++++++++++++++++++++++++++++++- t/db_dependent/Reserves.t | 23 ++++++++--------- 2 files changed, 57 insertions(+), 14 deletions(-) diff --git a/t/db_dependent/Circulation.t b/t/db_dependent/Circulation.t index 7ae3b9f694..1782feba8d 100755 --- a/t/db_dependent/Circulation.t +++ b/t/db_dependent/Circulation.t @@ -18,7 +18,7 @@ use Modern::Perl; use utf8; -use Test::More tests => 48; +use Test::More tests => 49; use Test::MockModule; use Test::Deep qw( cmp_deeply ); @@ -35,6 +35,7 @@ use C4::Circulation; use C4::Biblio; use C4::Items; use C4::Log; +use C4::Message; use C4::Reserves; use C4::Overdues qw(UpdateFine CalcFine); use Koha::DateUtils; @@ -45,6 +46,8 @@ use Koha::Checkouts; use Koha::Patrons; use Koha::Holds; use Koha::CirculationRules; +use Koha::Patron::Message::Attributes; +use Koha::Patron::Message::Preferences; use Koha::Subscriptions; use Koha::Account::Lines; use Koha::Account::Offsets; @@ -3217,6 +3220,49 @@ subtest 'ItemsDeniedRenewal preference' => sub { is( $idr_mayrenew, 0, 'Renewal blocked for empty string when "" in pref' ); }; +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."); +}; + subtest 'CanBookBeIssued | item-level_itypes=biblio' => sub { plan tests => 2; diff --git a/t/db_dependent/Reserves.t b/t/db_dependent/Reserves.t index c75a69ad95..9d7613ecea 100755 --- a/t/db_dependent/Reserves.t +++ b/t/db_dependent/Reserves.t @@ -40,6 +40,7 @@ use Koha::Libraries; use Koha::Notice::Templates; use Koha::Patrons; use Koha::Patron::Categories; +use Koha::Patron::Message::Preference; use Koha::CirculationRules; BEGIN { @@ -734,19 +735,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({ @@ -787,6 +775,15 @@ 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($item->itemnumber, $hold_borrower, 0); my $sms_message_address = $schema->resultset('MessageQueue')->search({ letter_code => 'HOLD', -- 2.20.1