@@ -, +, @@ --- t/db_dependent/Letters.t | 56 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 53 insertions(+), 3 deletions(-) --- a/t/db_dependent/Letters.t +++ a/t/db_dependent/Letters.t @@ -87,6 +87,7 @@ is_deeply( $mtts, ['email', 'phone', 'print', 'sms'], 'GetMessageTransportTypes # EnqueueLetter is( C4::Letters::EnqueueLetter(), undef, 'EnqueueLetter without argument returns undef' ); +# used to trigger _send_message_by_sms in C4::Letter my $my_message = { borrowernumber => $borrowernumber, message_transport_type => 'sms', @@ -111,13 +112,35 @@ $my_message->{message_transport_type} = 'sms'; $message_id = C4::Letters::EnqueueLetter($my_message); ok(defined $message_id && $message_id > 0, 'new message successfully queued'); +# This is will force C4::Context->preference() to read the DB. +C4::Context->disable_syspref_cache(); + +# used to trigger _send_message_by_email in C4::Letter +# first override. +$dbh->do("UPDATE systempreferences SET value='override\@example.com' WHERE variable='SendAllEmailsTo';"); +my $message_id2 = C4::Letters::EnqueueLetter({ + borrowernumber => $borrowernumber, + message_transport_type => 'email', + to_address => 'to@example.com', + from_address => 'from@example.com', + letter => { + content => 'a message', + title => 'message title', + metadata => 'metadata', + code => 'TEST_MESSAGE', + content_type => 'text/plain', + }, +}); + +ok(defined $message_id2 && $message_id2 > 0, 'new message successfully queued'); + # GetQueuedMessages my $messages = C4::Letters::GetQueuedMessages(); -is( @$messages, 1, 'GetQueuedMessages without argument returns all the entries' ); +is( @$messages, 2, 'GetQueuedMessages without argument returns all the entries' ); $messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); -is( @$messages, 1, 'one message stored for the borrower' ); +is( @$messages, 2, 'two messages stored for the borrower' ); is( $messages->[0]->{message_id}, $message_id, 'EnqueueLetter returns the message id correctly' ); is( $messages->[0]->{borrowernumber}, $borrowernumber, 'EnqueueLetter stores the borrower number correctly' ); is( $messages->[0]->{subject}, $my_message->{letter}->{title}, 'EnqueueLetter stores the subject correctly' ); @@ -128,14 +151,41 @@ is( $messages->[0]->{status}, 'pending', 'EnqueueLetter stores the status pendin # SendQueuedMessages my $messages_processed = C4::Letters::SendQueuedMessages(); -is($messages_processed, 1, 'all queued messages processed'); +is($messages_processed, 2, 'all queued messages processed'); + +$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); +is(scalar(@$messages), 2, 'two messages stored for the borrower'); + +# used to trigger _send_message_by_email in C4::Letter +# second no override. +$dbh->do("UPDATE systempreferences SET value='' WHERE variable='SendAllEmailsTo';"); +my $message_id3 = C4::Letters::EnqueueLetter({ + borrowernumber => $borrowernumber, + message_transport_type => 'email', + to_address => 'to@example.com', + from_address => 'from@example.com', + letter => { + content => 'a message', + title => 'message title', + metadata => 'metadata', + code => 'TEST_MESSAGE', + content_type => 'text/plain', + }, +}); + +$messages_processed = C4::Letters::SendQueuedMessages(); +is($messages_processed, 1, 'third queued message processed'); $messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); +is(scalar(@$messages), 3, 'three messages stored for the borrower'); + is( $messages->[0]->{status}, 'failed', 'message marked failed if tried to send SMS message for borrower with no smsalertnumber set (bug 11208)' ); +is ( $messages->[1]->{sentto_address},'override@example.com','Second message sent to override.'); +is ( $messages->[2]->{sentto_address},'to@example.com','Third message sent to default.'); # ResendMessage my $resent = C4::Letters::ResendMessage($messages->[0]->{message_id}); --