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 |
- |
|
|