View | Details | Raw Unified | Return to bug 27208
Collapse All | Expand All

(-)a/t/db_dependent/Letters.t (-1 / +32 lines)
Lines 18-24 Link Here
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
18
# along with Koha; if not, see <http://www.gnu.org/licenses>.
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
use Test::More tests => 83;
21
use Test::More tests => 88;
22
use Test::MockModule;
22
use Test::MockModule;
23
use Test::Warn;
23
use Test::Warn;
24
use Test::Exception;
24
use Test::Exception;
Lines 147-152 is( $messages->[0]->{status}, 'pending', 'EnqueueLetter stores the status pendin Link Here
147
isnt( $messages->[0]->{time_queued}, undef, 'Time queued inserted by default in message_queue table' );
147
isnt( $messages->[0]->{time_queued}, undef, 'Time queued inserted by default in message_queue table' );
148
is( $messages->[0]->{updated_on}, $messages->[0]->{time_queued}, 'Time status changed equals time queued when created in message_queue table' );
148
is( $messages->[0]->{updated_on}, $messages->[0]->{time_queued}, 'Time status changed equals time queued when created in message_queue table' );
149
is( $messages->[0]->{failure_code}, '', 'Failure code for successful message correctly empty');
149
is( $messages->[0]->{failure_code}, '', 'Failure code for successful message correctly empty');
150
is( $messages->[0]->{delay_until}, undef, 'Delay until should be undef if not set');
150
151
151
# Setting time_queued to something else than now
152
# Setting time_queued to something else than now
152
my $yesterday = dt_from_string->subtract( days => 1 );
153
my $yesterday = dt_from_string->subtract( days => 1 );
Lines 171-176 is( Link Here
171
isnt($messages->[0]->{updated_on}, $messages->[0]->{time_queued}, 'Time status changed differs from time queued when status changes' );
172
isnt($messages->[0]->{updated_on}, $messages->[0]->{time_queued}, 'Time status changed differs from time queued when status changes' );
172
is(dt_from_string($messages->[0]->{time_queued}), $yesterday, 'Time queued remaines inmutable' );
173
is(dt_from_string($messages->[0]->{time_queued}), $yesterday, 'Time queued remaines inmutable' );
173
174
175
# Delayed message
176
my $tomorrow = dt_from_string()->add( days => 1 );
177
my $delay_message = {
178
    borrowernumber         => $borrowernumber,
179
    message_transport_type => 'email',
180
    to_address             => 'to@example',
181
    from_address           => 'from@example.com',
182
    delay_until            => $tomorrow,
183
};
184
$delay_message->{letter} = {
185
    content      => 'I am waiting',
186
    title        => 'Patience is great',
187
    metadata     => 'metadata',
188
    code         => 'TEST_MESSAGE',
189
    content_type => 'text/plain',
190
};
191
192
my $delayed_message_id = C4::Letters::EnqueueLetter($delay_message);
193
194
my $delay_until = Koha::Notice::Messages->find($delayed_message_id)->delay_until;
195
is(dt_from_string($delay_until), $tomorrow, 'Delay_until is properly set');
196
197
my $delayed_messages_processed = C4::Letters::SendQueuedMessages();
198
is($delayed_messages_processed, 0, 'Message not processed if delay_until is set in the future');
199
200
Koha::Notice::Messages->find($delayed_message_id)->delay_until($yesterday)->store;
201
$delayed_messages_processed = C4::Letters::SendQueuedMessages();
202
is($delayed_messages_processed, 1, 'Message processed if delay_until is set in the past');
203
Koha::Notice::Messages->find($delayed_message_id)->delete;
204
174
# ResendMessage
205
# ResendMessage
175
my $resent = C4::Letters::ResendMessage($messages->[0]->{message_id});
206
my $resent = C4::Letters::ResendMessage($messages->[0]->{message_id});
176
my $message = C4::Letters::GetMessage( $messages->[0]->{message_id});
207
my $message = C4::Letters::GetMessage( $messages->[0]->{message_id});
(-)a/t/db_dependent/Reserves.t (-2 / +102 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 68;
20
use Test::More tests => 69;
21
use Test::MockModule;
21
use Test::MockModule;
22
use Test::Warn;
22
use Test::Warn;
23
23
Lines 1332-1337 subtest 'ModReserveAffect logging' => sub { Link Here
1332
    like( $log->info, qr{$expected}, 'Timestamp logged is the current one' );
1332
    like( $log->info, qr{$expected}, 'Timestamp logged is the current one' );
1333
};
1333
};
1334
1334
1335
subtest 'ModReserveAffect delayed notice' => sub {
1336
1337
    plan tests => 4;
1338
1339
    my $wants_hold_and_email = {
1340
        wants_digest => '0',
1341
        transports => {
1342
            email => 'HOLD',
1343
            },
1344
        letter_code => 'HOLD'
1345
    };
1346
1347
    my $mp = Test::MockModule->new( 'C4::Members::Messaging' );
1348
1349
    $mp->mock("GetMessagingPreferences",$wants_hold_and_email);
1350
1351
    $dbh->do('DELETE FROM letter');
1352
    $dbh->do('DELETE FROM reserves');
1353
    $dbh->do('DELETE FROM message_queue');
1354
1355
1356
    my $email_hold_notice = $builder->build({
1357
            source => 'Letter',
1358
            value => {
1359
                message_transport_type => 'email',
1360
                branchcode => '',
1361
                code => 'HOLD',
1362
                module => 'reserves',
1363
                lang => 'default',
1364
            }
1365
        });
1366
1367
    my $hold_borrower = $builder->build({
1368
            source => 'Borrower',
1369
            value => {
1370
                email=>'ac@b.com',
1371
            }
1372
        })->{borrowernumber};
1373
1374
    my $hold = C4::Reserves::AddReserve(
1375
        {
1376
            branchcode     => $item->homebranch,
1377
            borrowernumber => $hold_borrower,
1378
            biblionumber   => $item->biblionumber,
1379
        }
1380
    );
1381
    t::lib::Mocks::mock_preference('PickupNoticeDelayMode', 'off');
1382
    t::lib::Mocks::mock_preference('PickupNoticeDelayDuration', 1);
1383
1384
    # No delay allowed
1385
    my $tomorrow = dt_from_string()->add(days => 1);
1386
    ModReserveAffect($item->itemnumber, $hold_borrower, 0, $hold, undef, $tomorrow );
1387
    my $delay_until = $schema->resultset('MessageQueue')->search({
1388
            letter_code     => 'HOLD',
1389
            message_transport_type => 'email',
1390
            borrowernumber => $hold_borrower,
1391
        }, { order_by => { -desc => 'message_id' } })->next()->delay_until();
1392
    is($delay_until, undef ,"No notice delay if PickupNoticeDelayMode is off even if delay is passed");
1393
1394
    $dbh->do('DELETE FROM message_queue');
1395
    $dbh->do('DELETE FROM reserves');
1396
    $hold = C4::Reserves::AddReserve(
1397
        {
1398
            branchcode     => $item->homebranch,
1399
            borrowernumber => $hold_borrower,
1400
            biblionumber   => $item->biblionumber,
1401
        }
1402
    );
1403
1404
    t::lib::Mocks::mock_preference('PickupNoticeDelayMode', 'fixed');
1405
    my $more_than_hour = dt_from_string()->add( minutes => 61);
1406
    my $less_than_hour = dt_from_string()->add( minutes => 59);
1407
    ModReserveAffect($item->itemnumber, $hold_borrower, 0, $hold, undef, undef);
1408
    $delay_until = $schema->resultset('MessageQueue')->search({
1409
            letter_code     => 'HOLD',
1410
            message_transport_type => 'email',
1411
            borrowernumber => $hold_borrower,
1412
        }, { order_by => { -desc => 'message_id' } })->next()->delay_until();
1413
    cmp_ok(dt_from_string($delay_until)->epoch, ">=", $less_than_hour->epoch, "1h fixed delay_until is bigger than 59 min.");
1414
    cmp_ok(dt_from_string($delay_until), "<=", $more_than_hour, "1h fixed delay_until is less than 61 min.");
1415
1416
    $dbh->do('DELETE FROM message_queue');
1417
    $dbh->do('DELETE FROM reserves');
1418
    $hold = C4::Reserves::AddReserve(
1419
        {
1420
            branchcode     => $item->homebranch,
1421
            borrowernumber => $hold_borrower,
1422
            biblionumber   => $item->biblionumber,
1423
        }
1424
    );
1425
1426
    t::lib::Mocks::mock_preference('PickupNoticeDelayMode', 'staff');
1427
    ModReserveAffect($item->itemnumber, $hold_borrower, 0, $hold, undef, $tomorrow );
1428
    $delay_until = $schema->resultset('MessageQueue')->search({
1429
            letter_code     => 'HOLD',
1430
            message_transport_type => 'email',
1431
            borrowernumber => $hold_borrower,
1432
        }, { order_by => { -desc => 'message_id' } })->next()->delay_until();
1433
    is(dt_from_string($delay_until), $tomorrow, "Delay_until is same as set in function call");
1434
};
1435
1335
sub count_hold_print_messages {
1436
sub count_hold_print_messages {
1336
    my $message_count = $dbh->selectall_arrayref(q{
1437
    my $message_count = $dbh->selectall_arrayref(q{
1337
        SELECT COUNT(*)
1438
        SELECT COUNT(*)
1338
- 

Return to bug 27208