From 971c9362602e4542db889de151b0a309dbeb1de0 Mon Sep 17 00:00:00 2001 From: Julian Maurice Date: Thu, 12 Oct 2017 13:39:24 +0000 Subject: [PATCH] Bug 12802: Make tests pass Signed-off-by: Axelle Clarisse --- C4/Letters.pm | 16 ++++++++++++---- t/db_dependent/Letters.t | 17 +++++++++++++++-- t/db_dependent/Members.t | 4 ++-- 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/C4/Letters.pm b/C4/Letters.pm index d5340ed..247c273 100644 --- a/C4/Letters.pm +++ b/C4/Letters.pm @@ -962,14 +962,17 @@ sub _parseletter { =head2 EnqueueLetter - my $success = EnqueueLetter( { letter => $letter, - borrowernumber => '12', message_transport_type => 'email' } ) + my $queued_count = EnqueueLetter({ + letter => $letter, + borrowernumber => '12', + message_transport_type => 'email' + }); places a letter in the message_queue database table, which will eventually get processed (sent) by the process_message_queue.pl cronjob when it calls SendQueuedMessages. -return message_id on success +return the number of queued messages =cut @@ -1015,6 +1018,8 @@ sub EnqueueLetter { $from_address ||= C4::Context->preference('KohaAdminEmailAddress'); } + my $queued = 0; + my $rs = Koha::Database->new->schema->resultset('MessageQueue'); if ($params->{message_transport_type} eq 'email') { for my $to_address ( @to_addresses ) { @@ -1030,6 +1035,7 @@ sub EnqueueLetter { from_address => $from_address, content_type => $params->{letter}{'content-type'}, }); + ++$queued; } } else { $rs->create({ @@ -1043,8 +1049,10 @@ sub EnqueueLetter { from_address => $from_address, content_type => $params->{letter}{'content-type'}, }); + ++$queued; } - return scalar( @to_addresses ); + + return $queued; } =head2 SendQueuedMessages ([$hashref]) diff --git a/t/db_dependent/Letters.t b/t/db_dependent/Letters.t index 8231e55..77ed1c0 100644 --- a/t/db_dependent/Letters.t +++ b/t/db_dependent/Letters.t @@ -18,7 +18,7 @@ # along with Koha; if not, see . use Modern::Perl; -use Test::More tests => 82; +use Test::More tests => 94; use Test::MockModule; use Test::Warn; @@ -702,10 +702,23 @@ subtest 'SendQueuedMessages' => sub { my $sms_pro = $builder->build_object({ class => 'Koha::SMS::Providers', value => { domain => 'kidclamp.rocks' } }); ModMember( borrowernumber => $borrowernumber, smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() ); - C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward + my $message = { + borrowernumber => $borrowernumber, + message_transport_type => 'sms', + letter => { + content => 'a message', + title => 'message title', + metadata => 'metadata', + code => 'TEST_MESSAGE', + content_type => 'text/plain', + }, + }; + C4::Letters::EnqueueLetter($message); C4::Letters::SendQueuedMessages(); + my $sms_message_address = $schema->resultset('MessageQueue')->search({ borrowernumber => $borrowernumber, + message_transport_type => 'sms', status => 'sent' })->next()->to_address(); is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email' ); diff --git a/t/db_dependent/Members.t b/t/db_dependent/Members.t index 57d27f8..578fb04 100755 --- a/t/db_dependent/Members.t +++ b/t/db_dependent/Members.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 63; +use Test::More tests => 65; use Test::MockModule; use Data::Dumper qw/Dumper/; use C4::Context; @@ -153,7 +153,7 @@ C4::Context->clear_syspref_cache(); $notice_emails = GetNoticeEmailAddresses($member->{'borrowernumber'}); is_deeply ($notice_emails, [ $EMAILPRO ], "GetNoticeEmailAddresses returns correct value when AutoEmailPrimaryAddress is emailpro"); -C4::Context->set_preference( 'AutoEmailPrimaryAddress', 'emailpro,email' ); +t::lib::Mocks::mock_preference( 'AutoEmailPrimaryAddress', 'emailpro,email' ); C4::Context->clear_syspref_cache(); $notice_emails = GetNoticeEmailAddresses($member->{'borrowernumber'}); is_deeply ($notice_emails, [ $EMAILPRO, $EMAIL ], "GetNoticeEmailAddresses returns correct value when AutoEmailPrimaryAddress is emailpro|email"); -- 2.7.4