|
Lines 117-124
my $my_message = {
Link Here
|
| 117 |
to_address => undef, |
117 |
to_address => undef, |
| 118 |
from_address => 'from@example.com', |
118 |
from_address => 'from@example.com', |
| 119 |
}; |
119 |
}; |
| 120 |
my $message_id = C4::Letters::EnqueueLetter($my_message); |
120 |
is( C4::Letters::EnqueueLetter($my_message), undef, 'EnqueueLetter without the letter argument returns undef' ); |
| 121 |
is( $message_id, undef, 'EnqueueLetter without the letter argument returns undef' ); |
|
|
| 122 |
|
121 |
|
| 123 |
delete $my_message->{message_transport_type}; |
122 |
delete $my_message->{message_transport_type}; |
| 124 |
$my_message->{letter} = { |
123 |
$my_message->{letter} = { |
|
Lines 129-141
$my_message->{letter} = {
Link Here
|
| 129 |
content_type => 'text/plain', |
128 |
content_type => 'text/plain', |
| 130 |
}; |
129 |
}; |
| 131 |
|
130 |
|
| 132 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
131 |
my @message_ids = C4::Letters::EnqueueLetter($my_message); |
| 133 |
is( $message_id, undef, 'EnqueueLetter without the message type argument argument returns undef' ); |
132 |
is( scalar @message_ids, 0, 'EnqueueLetter without the message type argument argument returns an empty list' ); |
| 134 |
|
133 |
|
| 135 |
$my_message->{message_transport_type} = 'sms'; |
134 |
$my_message->{message_transport_type} = 'sms'; |
| 136 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
135 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
| 137 |
ok(defined $message_id && $message_id > 0, 'new message successfully queued'); |
136 |
is(scalar @message_ids, 1, 'new message successfully queued'); |
| 138 |
|
|
|
| 139 |
|
137 |
|
| 140 |
# GetQueuedMessages |
138 |
# GetQueuedMessages |
| 141 |
my $messages = C4::Letters::GetQueuedMessages(); |
139 |
my $messages = C4::Letters::GetQueuedMessages(); |
|
Lines 143-149
is( @$messages, 1, 'GetQueuedMessages without argument returns all the entries'
Link Here
|
| 143 |
|
141 |
|
| 144 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
142 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
| 145 |
is( @$messages, 1, 'one message stored for the borrower' ); |
143 |
is( @$messages, 1, 'one message stored for the borrower' ); |
| 146 |
is( $messages->[0]->{message_id}, $message_id, 'EnqueueLetter returns the message id correctly' ); |
|
|
| 147 |
is( $messages->[0]->{borrowernumber}, $borrowernumber, 'EnqueueLetter stores the borrower number correctly' ); |
144 |
is( $messages->[0]->{borrowernumber}, $borrowernumber, 'EnqueueLetter stores the borrower number correctly' ); |
| 148 |
is( $messages->[0]->{subject}, $my_message->{letter}->{title}, 'EnqueueLetter stores the subject correctly' ); |
145 |
is( $messages->[0]->{subject}, $my_message->{letter}->{title}, 'EnqueueLetter stores the subject correctly' ); |
| 149 |
is( $messages->[0]->{content}, $my_message->{letter}->{content}, 'EnqueueLetter stores the content correctly' ); |
146 |
is( $messages->[0]->{content}, $my_message->{letter}->{content}, 'EnqueueLetter stores the content correctly' ); |
|
Lines 951-958
subtest 'Test SMS handling in SendQueuedMessages' => sub {
Link Here
|
| 951 |
is( $@, '', 'SendQueuedMessages should not explode if the patron does not have a sms provider set' ); |
948 |
is( $@, '', 'SendQueuedMessages should not explode if the patron does not have a sms provider set' ); |
| 952 |
|
949 |
|
| 953 |
my $sms_pro = $builder->build_object({ class => 'Koha::SMS::Providers', value => { domain => 'kidclamp.rocks' } }); |
950 |
my $sms_pro = $builder->build_object({ class => 'Koha::SMS::Providers', value => { domain => 'kidclamp.rocks' } }); |
| 954 |
$patron->set( { smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() } )->store; |
951 |
$patron->set( { smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id(), email => '', emailpro => '' } )->store; |
| 955 |
$message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward |
952 |
C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward |
| 956 |
|
953 |
|
| 957 |
warning_like { C4::Letters::SendQueuedMessages(); } |
954 |
warning_like { C4::Letters::SendQueuedMessages(); } |
| 958 |
qr|Fake send_or_die|, |
955 |
qr|Fake send_or_die|, |
|
Lines 975-981
subtest 'Test SMS handling in SendQueuedMessages' => sub {
Link Here
|
| 975 |
|
972 |
|
| 976 |
t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', 'override@example.com'); |
973 |
t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', 'override@example.com'); |
| 977 |
|
974 |
|
| 978 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
975 |
C4::Letters::EnqueueLetter($my_message); |
| 979 |
warning_like { C4::Letters::SendQueuedMessages(); } |
976 |
warning_like { C4::Letters::SendQueuedMessages(); } |
| 980 |
qr|Fake send_or_die|, |
977 |
qr|Fake send_or_die|, |
| 981 |
"SendAlerts is using the mocked send_or_die routine (claimissues)"; |
978 |
"SendAlerts is using the mocked send_or_die routine (claimissues)"; |
|
Lines 993-999
subtest 'Test SMS handling in SendQueuedMessages' => sub {
Link Here
|
| 993 |
|
990 |
|
| 994 |
$schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue |
991 |
$schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue |
| 995 |
$my_message->{to_address} = 'fixme@kidclamp.iswrong'; |
992 |
$my_message->{to_address} = 'fixme@kidclamp.iswrong'; |
| 996 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
993 |
C4::Letters::EnqueueLetter($my_message); |
| 997 |
|
994 |
|
| 998 |
my $number_attempted = C4::Letters::SendQueuedMessages({ |
995 |
my $number_attempted = C4::Letters::SendQueuedMessages({ |
| 999 |
borrowernumber => -1, # -1 still triggers the borrowernumber condition |
996 |
borrowernumber => -1, # -1 still triggers the borrowernumber condition |
|
Lines 1007-1012
subtest 'Test SMS handling in SendQueuedMessages' => sub {
Link Here
|
| 1007 |
|
1004 |
|
| 1008 |
my $sms_message_address = $schema->resultset('MessageQueue')->search({ |
1005 |
my $sms_message_address = $schema->resultset('MessageQueue')->search({ |
| 1009 |
borrowernumber => $borrowernumber, |
1006 |
borrowernumber => $borrowernumber, |
|
|
1007 |
message_transport_type => 'sms', |
| 1010 |
status => 'sent' |
1008 |
status => 'sent' |
| 1011 |
})->next()->to_address(); |
1009 |
})->next()->to_address(); |
| 1012 |
is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address is set incorrectly' ); |
1010 |
is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address is set incorrectly' ); |
|
Lines 1391-1397
subtest 'Test message_id parameter for SendQueuedMessages' => sub {
Link Here
|
| 1391 |
'message_transport_type' => 'email', |
1389 |
'message_transport_type' => 'email', |
| 1392 |
'from_address' => '@example.com' # invalid from_address |
1390 |
'from_address' => '@example.com' # invalid from_address |
| 1393 |
}; |
1391 |
}; |
| 1394 |
my $message_id = C4::Letters::EnqueueLetter($my_message); |
1392 |
my ($message_id) = C4::Letters::EnqueueLetter($my_message); |
| 1395 |
$send_or_die_count = 0; # reset |
1393 |
$send_or_die_count = 0; # reset |
| 1396 |
my $processed = C4::Letters::SendQueuedMessages( { message_id => $message_id } ); |
1394 |
my $processed = C4::Letters::SendQueuedMessages( { message_id => $message_id } ); |
| 1397 |
is( $send_or_die_count, 0, 'Nothing sent when one message_id passed' ); |
1395 |
is( $send_or_die_count, 0, 'Nothing sent when one message_id passed' ); |
|
Lines 1400-1406
subtest 'Test message_id parameter for SendQueuedMessages' => sub {
Link Here
|
| 1400 |
is( $message_1->{failure_code}, 'INVALID_EMAIL:from', 'Failure code set correctly for invalid email parameter'); |
1398 |
is( $message_1->{failure_code}, 'INVALID_EMAIL:from', 'Failure code set correctly for invalid email parameter'); |
| 1401 |
|
1399 |
|
| 1402 |
$my_message->{from_address} = 'root@example.org'; # valid from_address |
1400 |
$my_message->{from_address} = 'root@example.org'; # valid from_address |
| 1403 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
1401 |
($message_id) = C4::Letters::EnqueueLetter($my_message); |
| 1404 |
warning_like { C4::Letters::SendQueuedMessages( { message_id => $message_id } ); } |
1402 |
warning_like { C4::Letters::SendQueuedMessages( { message_id => $message_id } ); } |
| 1405 |
qr|Fake send_or_die|, |
1403 |
qr|Fake send_or_die|, |
| 1406 |
"SendQueuedMessages is using the mocked send_or_die routine"; |
1404 |
"SendQueuedMessages is using the mocked send_or_die routine"; |
|
Lines 1410-1412
subtest 'Test message_id parameter for SendQueuedMessages' => sub {
Link Here
|
| 1410 |
is( $message_1->{status}, 'failed', 'Message 1 status is unchanged' ); |
1408 |
is( $message_1->{status}, 'failed', 'Message 1 status is unchanged' ); |
| 1411 |
is( $message_2->{status}, 'sent', 'Valid from_address => status sent' ); |
1409 |
is( $message_2->{status}, 'sent', 'Valid from_address => status sent' ); |
| 1412 |
}; |
1410 |
}; |
|
|
1411 |
|
| 1412 |
subtest 'EnqueueLetter and EmailFieldPrimary' => sub { |
| 1413 |
plan tests => 19; |
| 1414 |
|
| 1415 |
my ( $email, $emailpro ) = ( 'email@example.org', 'emailpro@example.org' ); |
| 1416 |
my $borrowernumber = Koha::Patron->new( |
| 1417 |
{ firstname => 'Jane', |
| 1418 |
surname => 'Smith', |
| 1419 |
categorycode => $patron_category, |
| 1420 |
branchcode => $library->{branchcode}, |
| 1421 |
dateofbirth => $date, |
| 1422 |
smsalertnumber => undef, |
| 1423 |
email => $email, |
| 1424 |
emailpro => $emailpro, |
| 1425 |
} |
| 1426 |
)->store->borrowernumber; |
| 1427 |
|
| 1428 |
my $my_message = { |
| 1429 |
borrowernumber => $borrowernumber, |
| 1430 |
message_transport_type => 'email', |
| 1431 |
to_address => 'to@example.com', |
| 1432 |
from_address => 'from@example.com', |
| 1433 |
letter => { |
| 1434 |
content => 'a message', |
| 1435 |
title => 'message title', |
| 1436 |
metadata => 'metadata', |
| 1437 |
code => 'TEST_MESSAGE', |
| 1438 |
content_type => 'text/plain', |
| 1439 |
}, |
| 1440 |
}; |
| 1441 |
|
| 1442 |
$dbh->do(q|DELETE FROM message_queue|); |
| 1443 |
t::lib::Mocks::mock_preference( 'EmailFieldPrimary', 'email' ); |
| 1444 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
| 1445 |
is( scalar @message_ids, 1, 'message successfully queued' ); |
| 1446 |
$messages = C4::Letters::GetQueuedMessages( { borrowernumber => $borrowernumber } ); |
| 1447 |
is( scalar(@$messages), 1, 'The message has been queued for the expected patron' ); |
| 1448 |
is( $messages->[0]{to_address}, 'to@example.com', 'EmailFieldPrimary=email, EnqueueLetter used the to_address given in parameter' ); |
| 1449 |
|
| 1450 |
$dbh->do(q|DELETE FROM message_queue|); |
| 1451 |
delete $my_message->{to_address}; |
| 1452 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
| 1453 |
is( scalar @message_ids, 1, 'message successfully queued' ); |
| 1454 |
$messages = C4::Letters::GetQueuedMessages( { borrowernumber => $borrowernumber } ); |
| 1455 |
is( scalar(@$messages), 1, 'The message has been queued for the expected patron' ); |
| 1456 |
is( $messages->[0]{to_address}, $email, 'EmailFieldPrimary=email, EnqueueLetter used the patron email address if no to_address is given in parameter' ); |
| 1457 |
|
| 1458 |
$dbh->do(q|DELETE FROM message_queue|); |
| 1459 |
t::lib::Mocks::mock_preference( 'EmailFieldPrimary', 'emailpro' ); |
| 1460 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
| 1461 |
is( scalar @message_ids, 1, 'message successfully queued' ); |
| 1462 |
$messages = C4::Letters::GetQueuedMessages( { borrowernumber => $borrowernumber } ); |
| 1463 |
is( scalar(@$messages), 1, 'The message has been queued for the expected patron' ); |
| 1464 |
is( $messages->[0]{to_address}, $emailpro, 'EmailFieldPrimary=emailpro, EnqueueLetter used the patron emailpro address if no to_address is given in parameter' ); |
| 1465 |
|
| 1466 |
$dbh->do(q|DELETE FROM message_queue|); |
| 1467 |
t::lib::Mocks::mock_preference( 'EmailFieldPrimary', 'OFF' ); |
| 1468 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
| 1469 |
is( scalar @message_ids, 1, 'message successfully queued' ); |
| 1470 |
$messages = C4::Letters::GetQueuedMessages( { borrowernumber => $borrowernumber } ); |
| 1471 |
is( scalar(@$messages), 1, 'The message has been queued for the expected patron' ); |
| 1472 |
is( $messages->[0]{to_address}, $email, 'EmailFieldPrimary=OFF, EnqueueLetter used the patron email address if no to_address is given in parameter' ); |
| 1473 |
|
| 1474 |
$dbh->do(q|DELETE FROM message_queue|); |
| 1475 |
t::lib::Mocks::mock_preference( 'EmailFieldPrimary', 'email,OFF,emailpro' ); # This is no consistent. OFF should be alone. |
| 1476 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
| 1477 |
is( scalar @message_ids, 1, 'message successfully queued' ); |
| 1478 |
$messages = C4::Letters::GetQueuedMessages( { borrowernumber => $borrowernumber } ); |
| 1479 |
is( scalar(@$messages), 1, 'The message has been queued for the expected patron' ); |
| 1480 |
is( $messages->[0]{to_address}, $email, 'EmailFieldPrimary=email,OFF,emailpro, EnqueueLetter used the patron email address if no to_address is given in parameter' ); |
| 1481 |
|
| 1482 |
$dbh->do(q|DELETE FROM message_queue|); |
| 1483 |
t::lib::Mocks::mock_preference( 'EmailFieldPrimary', 'email,emailpro' ); |
| 1484 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
| 1485 |
is( scalar @message_ids, 2, 'messages successfully queued' ); |
| 1486 |
$messages = C4::Letters::GetQueuedMessages( { borrowernumber => $borrowernumber } ); |
| 1487 |
is( scalar(@$messages), 2, 'The messages have been queued for the expected patron' ); |
| 1488 |
is( $messages->[0]{to_address}, $email, 'EmailFieldPrimary=email,emailpro, EnqueueLetter used the patron email address for the first letter' ); |
| 1489 |
is( $messages->[1]{to_address}, $emailpro, 'EmailFieldPrimary=email,emailpro, EnqueueLetter used the patron emailpro address for the second letter' ); |
| 1490 |
}; |