Lines 112-119
my $my_message = {
Link Here
|
112 |
to_address => undef, |
112 |
to_address => undef, |
113 |
from_address => 'from@example.com', |
113 |
from_address => 'from@example.com', |
114 |
}; |
114 |
}; |
115 |
my $message_id = C4::Letters::EnqueueLetter($my_message); |
115 |
is( C4::Letters::EnqueueLetter($my_message), undef, 'EnqueueLetter without the letter argument returns undef' ); |
116 |
is( $message_id, undef, 'EnqueueLetter without the letter argument returns undef' ); |
|
|
117 |
|
116 |
|
118 |
delete $my_message->{message_transport_type}; |
117 |
delete $my_message->{message_transport_type}; |
119 |
$my_message->{letter} = { |
118 |
$my_message->{letter} = { |
Lines 124-136
$my_message->{letter} = {
Link Here
|
124 |
content_type => 'text/plain', |
123 |
content_type => 'text/plain', |
125 |
}; |
124 |
}; |
126 |
|
125 |
|
127 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
126 |
my @message_ids = C4::Letters::EnqueueLetter($my_message); |
128 |
is( $message_id, undef, 'EnqueueLetter without the message type argument argument returns undef' ); |
127 |
is( scalar @message_ids, 0, 'EnqueueLetter without the message type argument argument returns an empty list' ); |
129 |
|
128 |
|
130 |
$my_message->{message_transport_type} = 'sms'; |
129 |
$my_message->{message_transport_type} = 'sms'; |
131 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
130 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
132 |
ok(defined $message_id && $message_id > 0, 'new message successfully queued'); |
131 |
is(scalar @message_ids, 1, 'new message successfully queued'); |
133 |
|
|
|
134 |
|
132 |
|
135 |
# GetQueuedMessages |
133 |
# GetQueuedMessages |
136 |
my $messages = C4::Letters::GetQueuedMessages(); |
134 |
my $messages = C4::Letters::GetQueuedMessages(); |
Lines 138-144
is( @$messages, 1, 'GetQueuedMessages without argument returns all the entries'
Link Here
|
138 |
|
136 |
|
139 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
137 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
140 |
is( @$messages, 1, 'one message stored for the borrower' ); |
138 |
is( @$messages, 1, 'one message stored for the borrower' ); |
141 |
is( $messages->[0]->{message_id}, $message_id, 'EnqueueLetter returns the message id correctly' ); |
|
|
142 |
is( $messages->[0]->{borrowernumber}, $borrowernumber, 'EnqueueLetter stores the borrower number correctly' ); |
139 |
is( $messages->[0]->{borrowernumber}, $borrowernumber, 'EnqueueLetter stores the borrower number correctly' ); |
143 |
is( $messages->[0]->{subject}, $my_message->{letter}->{title}, 'EnqueueLetter stores the subject correctly' ); |
140 |
is( $messages->[0]->{subject}, $my_message->{letter}->{title}, 'EnqueueLetter stores the subject correctly' ); |
144 |
is( $messages->[0]->{content}, $my_message->{letter}->{content}, 'EnqueueLetter stores the content correctly' ); |
141 |
is( $messages->[0]->{content}, $my_message->{letter}->{content}, 'EnqueueLetter stores the content correctly' ); |
Lines 820-827
subtest 'SendQueuedMessages' => sub {
Link Here
|
820 |
is( $@, '', 'SendQueuedMessages should not explode if the patron does not have a sms provider set' ); |
817 |
is( $@, '', 'SendQueuedMessages should not explode if the patron does not have a sms provider set' ); |
821 |
|
818 |
|
822 |
my $sms_pro = $builder->build_object({ class => 'Koha::SMS::Providers', value => { domain => 'kidclamp.rocks' } }); |
819 |
my $sms_pro = $builder->build_object({ class => 'Koha::SMS::Providers', value => { domain => 'kidclamp.rocks' } }); |
823 |
$patron->set( { smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id() } )->store; |
820 |
$patron->set( { smsalertnumber => '5555555555', sms_provider_id => $sms_pro->id(), email => '', emailpro => '' } )->store; |
824 |
$message_id = C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward |
821 |
C4::Letters::EnqueueLetter($my_message); #using datas set around line 95 and forward |
825 |
|
822 |
|
826 |
warning_like { C4::Letters::SendQueuedMessages(); } |
823 |
warning_like { C4::Letters::SendQueuedMessages(); } |
827 |
qr|Fake send_or_die|, |
824 |
qr|Fake send_or_die|, |
Lines 843-849
subtest 'SendQueuedMessages' => sub {
Link Here
|
843 |
|
840 |
|
844 |
t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', 'override@example.com'); |
841 |
t::lib::Mocks::mock_preference('EmailSMSSendDriverFromAddress', 'override@example.com'); |
845 |
|
842 |
|
846 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
843 |
C4::Letters::EnqueueLetter($my_message); |
847 |
warning_like { C4::Letters::SendQueuedMessages(); } |
844 |
warning_like { C4::Letters::SendQueuedMessages(); } |
848 |
qr|Fake send_or_die|, |
845 |
qr|Fake send_or_die|, |
849 |
"SendAlerts is using the mocked send_or_die routine (claimissues)"; |
846 |
"SendAlerts is using the mocked send_or_die routine (claimissues)"; |
Lines 861-867
subtest 'SendQueuedMessages' => sub {
Link Here
|
861 |
|
858 |
|
862 |
$schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue |
859 |
$schema->resultset('MessageQueue')->search({borrowernumber => $borrowernumber,status => 'sent'})->delete(); #clear borrower queue |
863 |
$my_message->{to_address} = 'fixme@kidclamp.iswrong'; |
860 |
$my_message->{to_address} = 'fixme@kidclamp.iswrong'; |
864 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
861 |
C4::Letters::EnqueueLetter($my_message); |
865 |
|
862 |
|
866 |
my $number_attempted = C4::Letters::SendQueuedMessages({ |
863 |
my $number_attempted = C4::Letters::SendQueuedMessages({ |
867 |
borrowernumber => -1, # -1 still triggers the borrowernumber condition |
864 |
borrowernumber => -1, # -1 still triggers the borrowernumber condition |
Lines 875-880
subtest 'SendQueuedMessages' => sub {
Link Here
|
875 |
|
872 |
|
876 |
my $sms_message_address = $schema->resultset('MessageQueue')->search({ |
873 |
my $sms_message_address = $schema->resultset('MessageQueue')->search({ |
877 |
borrowernumber => $borrowernumber, |
874 |
borrowernumber => $borrowernumber, |
|
|
875 |
message_transport_type => 'sms', |
878 |
status => 'sent' |
876 |
status => 'sent' |
879 |
})->next()->to_address(); |
877 |
})->next()->to_address(); |
880 |
is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address is set incorrectly' ); |
878 |
is( $sms_message_address, '5555555555@kidclamp.rocks', 'SendQueuedMessages populates the to address correctly for SMS by email when to_address is set incorrectly' ); |
Lines 989-995
subtest 'Test message_id parameter for SendQueuedMessages' => sub {
Link Here
|
989 |
'message_transport_type' => 'email', |
987 |
'message_transport_type' => 'email', |
990 |
'from_address' => 'root@localhost' # invalid KohaAdminEmailAddress |
988 |
'from_address' => 'root@localhost' # invalid KohaAdminEmailAddress |
991 |
}; |
989 |
}; |
992 |
my $message_id = C4::Letters::EnqueueLetter($my_message); |
990 |
my ($message_id) = C4::Letters::EnqueueLetter($my_message); |
993 |
throws_ok { |
991 |
throws_ok { |
994 |
C4::Letters::SendQueuedMessages( { message_id => $message_id } ); |
992 |
C4::Letters::SendQueuedMessages( { message_id => $message_id } ); |
995 |
} 'Koha::Exceptions::BadParameter', |
993 |
} 'Koha::Exceptions::BadParameter', |
Lines 999-1008
subtest 'Test message_id parameter for SendQueuedMessages' => sub {
Link Here
|
999 |
is( $message_1->{status}, 'pending', 'Invalid KohaAdminEmailAddress => status pending' ); |
997 |
is( $message_1->{status}, 'pending', 'Invalid KohaAdminEmailAddress => status pending' ); |
1000 |
|
998 |
|
1001 |
$my_message->{from_address} = 'root@example.org'; # valid KohaAdminEmailAddress |
999 |
$my_message->{from_address} = 'root@example.org'; # valid KohaAdminEmailAddress |
1002 |
$message_id = C4::Letters::EnqueueLetter($my_message); |
1000 |
($message_id) = C4::Letters::EnqueueLetter($my_message); |
1003 |
C4::Letters::SendQueuedMessages( { message_id => $message_id } ); |
1001 |
C4::Letters::SendQueuedMessages( { message_id => $message_id } ); |
1004 |
$message_1 = C4::Letters::GetMessage($message_1->{message_id}); |
1002 |
$message_1 = C4::Letters::GetMessage($message_1->{message_id}); |
1005 |
my $message_2 = C4::Letters::GetMessage($message_id); |
1003 |
my $message_2 = C4::Letters::GetMessage($message_id); |
1006 |
is( $message_1->{status}, 'pending', 'Message 1 status is unchanged' ); # Must be 'failed' |
1004 |
is( $message_1->{status}, 'pending', 'Message 1 status is unchanged' ); # Must be 'failed' |
1007 |
is( $message_2->{status}, 'sent', 'Valid KohaAdminEmailAddress => status sent' ); |
1005 |
is( $message_2->{status}, 'sent', 'Valid KohaAdminEmailAddress => status sent' ); |
1008 |
}; |
1006 |
}; |
1009 |
- |
1007 |
|
|
|
1008 |
subtest 'EnqueueLetter and AutoEmailPrimaryAddress' => sub { |
1009 |
plan tests => 19; |
1010 |
|
1011 |
my ( $email, $emailpro ) = ( 'email@example.org', 'emailpro@example.org' ); |
1012 |
my $borrowernumber = Koha::Patron->new({ |
1013 |
firstname => 'Jane', |
1014 |
surname => 'Smith', |
1015 |
categorycode => $patron_category, |
1016 |
branchcode => $library->{branchcode}, |
1017 |
dateofbirth => $date, |
1018 |
smsalertnumber => undef, |
1019 |
email => $email, |
1020 |
emailpro => $emailpro, |
1021 |
})->store->borrowernumber; |
1022 |
|
1023 |
my $my_message = { |
1024 |
borrowernumber => $borrowernumber, |
1025 |
message_transport_type => 'email', |
1026 |
to_address => 'to@example.com', |
1027 |
from_address => 'from@example.com', |
1028 |
letter => { |
1029 |
content => 'a message', |
1030 |
title => 'message title', |
1031 |
metadata => 'metadata', |
1032 |
code => 'TEST_MESSAGE', |
1033 |
content_type => 'text/plain', |
1034 |
}, |
1035 |
}; |
1036 |
|
1037 |
$dbh->do(q|DELETE FROM message_queue|); |
1038 |
t::lib::Mocks::mock_preference('AutoEmailPrimaryAddress', 'email'); |
1039 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
1040 |
is(scalar @message_ids, 1, 'message successfully queued' ); |
1041 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
1042 |
is( scalar( @$messages ), 1, 'The message has been queued for the expected patron' ); |
1043 |
is( $messages->[0]{to_address}, 'to@example.com', 'AutoEmailPrimaryAddress=email, EnqueueLetter used the to_address given in parameter' ); |
1044 |
|
1045 |
$dbh->do(q|DELETE FROM message_queue|); |
1046 |
delete $my_message->{to_address}; |
1047 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
1048 |
is(scalar @message_ids, 1, 'message successfully queued' ); |
1049 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
1050 |
is( scalar( @$messages ), 1, 'The message has been queued for the expected patron' ); |
1051 |
is( $messages->[0]{to_address}, $email, 'AutoEmailPrimaryAddress=email, EnqueueLetter used the patron email address if no to_address is given in parameter' ); |
1052 |
|
1053 |
$dbh->do(q|DELETE FROM message_queue|); |
1054 |
t::lib::Mocks::mock_preference('AutoEmailPrimaryAddress', 'emailpro'); |
1055 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
1056 |
is( scalar @message_ids, 1, 'message successfully queued' ); |
1057 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
1058 |
is( scalar( @$messages ), 1, 'The message has been queued for the expected patron' ); |
1059 |
is( $messages->[0]{to_address}, $emailpro, 'AutoEmailPrimaryAddress=emailpro, EnqueueLetter used the patron emailpro address if no to_address is given in parameter' ); |
1060 |
|
1061 |
$dbh->do(q|DELETE FROM message_queue|); |
1062 |
t::lib::Mocks::mock_preference('AutoEmailPrimaryAddress', 'OFF'); |
1063 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
1064 |
is( scalar @message_ids, 1, 'message successfully queued' ); |
1065 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
1066 |
is( scalar( @$messages ), 1, 'The message has been queued for the expected patron' ); |
1067 |
is( $messages->[0]{to_address}, $email, 'AutoEmailPrimaryAddress=OFF, EnqueueLetter used the patron email address if no to_address is given in parameter' ); |
1068 |
|
1069 |
$dbh->do(q|DELETE FROM message_queue|); |
1070 |
t::lib::Mocks::mock_preference('AutoEmailPrimaryAddress', 'email,OFF,emailpro'); # This is no consistent. OFF should be alone. |
1071 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
1072 |
is( scalar @message_ids, 1, 'message successfully queued' ); |
1073 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
1074 |
is( scalar( @$messages ), 1, 'The message has been queued for the expected patron' ); |
1075 |
is( $messages->[0]{to_address}, $email, 'AutoEmailPrimaryAddress=email,OFF,emailpro, EnqueueLetter used the patron email address if no to_address is given in parameter' ); |
1076 |
|
1077 |
$dbh->do(q|DELETE FROM message_queue|); |
1078 |
t::lib::Mocks::mock_preference('AutoEmailPrimaryAddress', 'email,emailpro'); |
1079 |
@message_ids = C4::Letters::EnqueueLetter($my_message); |
1080 |
is( scalar @message_ids, 2, 'messages successfully queued' ); |
1081 |
$messages = C4::Letters::GetQueuedMessages({ borrowernumber => $borrowernumber }); |
1082 |
is( scalar( @$messages ), 2, 'The messages have been queued for the expected patron' ); |
1083 |
is( $messages->[0]{to_address}, $email, 'AutoEmailPrimaryAddress=email,emailpro, EnqueueLetter used the patron email address for the first letter' ); |
1084 |
is( $messages->[1]{to_address}, $emailpro, 'AutoEmailPrimaryAddress=email,emailpro, EnqueueLetter used the patron emailpro address for the second letter' ); |
1085 |
}; |