Lines 22-27
use Modern::Perl;
Link Here
|
22 |
use DateTime; |
22 |
use DateTime; |
23 |
use DateTime::Duration; |
23 |
use DateTime::Duration; |
24 |
use Koha::Database; |
24 |
use Koha::Database; |
|
|
25 |
use Koha::DateUtils; |
25 |
use Koha::Item::Transfer; |
26 |
use Koha::Item::Transfer; |
26 |
use t::lib::TestBuilder; |
27 |
use t::lib::TestBuilder; |
27 |
|
28 |
|
Lines 195-201
subtest "Tests for needs_advancing." => sub {
Link Here
|
195 |
'itemnumber' => $dbitem->itemnumber_id, |
196 |
'itemnumber' => $dbitem->itemnumber_id, |
196 |
'frombranch' => $dbitem->stage->branchcode_id, |
197 |
'frombranch' => $dbitem->stage->branchcode_id, |
197 |
'tobranch' => $dbitem->stage->branchcode_id, |
198 |
'tobranch' => $dbitem->stage->branchcode_id, |
198 |
'datesent' => DateTime->now, |
199 |
'datesent' => dt_from_string, |
199 |
'datearrived' => undef, |
200 |
'datearrived' => undef, |
200 |
'reason' => "StockrotationAdvance", |
201 |
'reason' => "StockrotationAdvance", |
201 |
})->store; |
202 |
})->store; |
Lines 208-214
subtest "Tests for needs_advancing." => sub {
Link Here
|
208 |
$dbitem->fresh(0)->store; |
209 |
$dbitem->fresh(0)->store; |
209 |
|
210 |
|
210 |
# Test item will not be advanced if it has not spent enough time. |
211 |
# Test item will not be advanced if it has not spent enough time. |
211 |
$dbtransfer->datearrived(DateTime->now)->store; |
212 |
$dbtransfer->datearrived(dt_from_string)->store; |
212 |
is($dbitem->needs_advancing, 0, "Not ready to advance: Not spent enough time."); |
213 |
is($dbitem->needs_advancing, 0, "Not ready to advance: Not spent enough time."); |
213 |
# Test item will be advanced if it has not spent enough time, but is fresh. |
214 |
# Test item will be advanced if it has not spent enough time, but is fresh. |
214 |
$dbitem->fresh(1)->store; |
215 |
$dbitem->fresh(1)->store; |
Lines 217-226
subtest "Tests for needs_advancing." => sub {
Link Here
|
217 |
|
218 |
|
218 |
# Test item will be advanced if it has spent enough time. |
219 |
# Test item will be advanced if it has spent enough time. |
219 |
$dbtransfer->datesent( # Item was sent 100 days ago... |
220 |
$dbtransfer->datesent( # Item was sent 100 days ago... |
220 |
DateTime->now - DateTime::Duration->new( days => 100 ) |
221 |
dt_from_string - DateTime::Duration->new( days => 100 ) |
221 |
)->store; |
222 |
)->store; |
222 |
$dbtransfer->datearrived( # And arrived 75 days ago. |
223 |
$dbtransfer->datearrived( # And arrived 75 days ago. |
223 |
DateTime->now - DateTime::Duration->new( days => 75 ) |
224 |
dt_from_string - DateTime::Duration->new( days => 75 ) |
224 |
)->store; |
225 |
)->store; |
225 |
is($dbitem->needs_advancing, 1, "Ready to be advanced."); |
226 |
is($dbitem->needs_advancing, 1, "Ready to be advanced."); |
226 |
|
227 |
|
Lines 228-234
subtest "Tests for needs_advancing." => sub {
Link Here
|
228 |
}; |
229 |
}; |
229 |
|
230 |
|
230 |
subtest "Tests for advance." => sub { |
231 |
subtest "Tests for advance." => sub { |
231 |
plan tests => 15; |
232 |
plan tests => 23; |
232 |
$schema->storage->txn_begin; |
233 |
$schema->storage->txn_begin; |
233 |
|
234 |
|
234 |
my $sritem = $builder->build( |
235 |
my $sritem = $builder->build( |
Lines 286-307
subtest "Tests for advance." => sub {
Link Here
|
286 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
287 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
287 |
## Test results |
288 |
## Test results |
288 |
is($dbitem->stage->stage_id, $dbstage2->stage_id, "Stage updated."); |
289 |
is($dbitem->stage->stage_id, $dbstage2->stage_id, "Stage updated."); |
|
|
290 |
is( |
291 |
$dbitem->itemnumber->homebranch, |
292 |
$dbstage2->branchcode_id, |
293 |
"Item homebranch updated" |
294 |
); |
289 |
my $intransfer = $dbitem->itemnumber->get_transfer; |
295 |
my $intransfer = $dbitem->itemnumber->get_transfer; |
290 |
is($intransfer->frombranch, $dbstage->branchcode_id, "Origin correct."); |
296 |
is($intransfer->frombranch, $dbstage->branchcode_id, "Origin correct."); |
291 |
is($intransfer->tobranch, $dbstage2->branchcode_id, "Target Correct."); |
297 |
is($intransfer->tobranch, $dbstage2->branchcode_id, "Target Correct."); |
292 |
|
298 |
|
|
|
299 |
# Arrive at new branch |
300 |
$intransfer->datearrived(dt_from_string)->store; |
301 |
$dbitem->itemnumber->holdingbranch($srstage->{branchcode_id})->store; |
302 |
|
303 |
# Test a cyclical advance |
304 |
ok($dbitem->advance, "Cyclical advancement done."); |
305 |
## Refetch dbitem |
306 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
307 |
## Test results |
308 |
is($dbitem->stage->stage_id, $dbstage->stage_id, "Stage updated."); |
309 |
is( |
310 |
$dbitem->itemnumber->homebranch, |
311 |
$dbstage->branchcode_id, |
312 |
"Item homebranch updated" |
313 |
); |
314 |
$intransfer = $dbitem->itemnumber->get_transfer; |
315 |
is($intransfer->frombranch, $dbstage2->branchcode_id, "Origin correct."); |
316 |
is($intransfer->tobranch, $dbstage->branchcode_id, "Target correct."); |
317 |
|
318 |
# Arrive at new branch |
319 |
$intransfer->datearrived(dt_from_string)->store; |
320 |
$dbitem->itemnumber->holdingbranch($srstage->{branchcode_id})->store; |
321 |
|
293 |
$dbstage->rota->cyclical(0)->store; # Set Rota to non-cyclical. |
322 |
$dbstage->rota->cyclical(0)->store; # Set Rota to non-cyclical. |
294 |
|
323 |
|
|
|
324 |
# Advance again, to end of rota. |
325 |
ok($dbitem->advance, "Non-cyclical advance to last stage."); |
326 |
|
295 |
# Arrive at new branch |
327 |
# Arrive at new branch |
296 |
$intransfer->datearrived(DateTime->now)->store; |
328 |
$intransfer->datearrived(dt_from_string)->store; |
297 |
$dbitem->itemnumber->holdingbranch($srstage->{branchcode_id})->store; |
329 |
$dbitem->itemnumber->holdingbranch($srstage->{branchcode_id})->store; |
298 |
$dbitem->itemnumber->homebranch($srstage->{branchcode_id})->store; |
|
|
299 |
|
330 |
|
300 |
# Advance again, Remove from rota. |
331 |
# Advance again, Remove from rota. |
301 |
ok($dbitem->advance, "Non-cyclical advance."); |
332 |
ok($dbitem->advance, "Non-cyclical advance."); |
302 |
## Refetch dbitem |
333 |
## Refetch dbitem |
303 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
334 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
304 |
is($dbitem, undef, "StockRotationItem has been removed."); |
335 |
is($dbitem, undef, "StockRotationItem has been removed."); |
|
|
336 |
my $item = Koha::Items->find($sritem->{itemnumber_id}); |
337 |
is($item->homebranch, $srstage->{branchcode_id}, "Item homebranch remains"); |
305 |
|
338 |
|
306 |
$schema->storage->txn_rollback; |
339 |
$schema->storage->txn_rollback; |
307 |
}; |
340 |
}; |
Lines 353-360
subtest "Tests for investigate (singular)." => sub {
Link Here
|
353 |
'itemnumber' => $dbitem->itemnumber_id, |
386 |
'itemnumber' => $dbitem->itemnumber_id, |
354 |
'frombranch' => $dbitem->itemnumber->homebranch, |
387 |
'frombranch' => $dbitem->itemnumber->homebranch, |
355 |
'tobranch' => $dbitem->itemnumber->homebranch, |
388 |
'tobranch' => $dbitem->itemnumber->homebranch, |
356 |
'datesent' => DateTime->now, |
389 |
'datesent' => dt_from_string, |
357 |
'datearrived' => DateTime->now, |
390 |
'datearrived' => dt_from_string, |
358 |
'reason' => "StockrotationAdvance", |
391 |
'reason' => "StockrotationAdvance", |
359 |
})->store; |
392 |
})->store; |
360 |
is($dbitem->investigate->{reason}, 'repatriation', "older item repatriates."); |
393 |
is($dbitem->investigate->{reason}, 'repatriation', "older item repatriates."); |
Lines 374-381
subtest "Tests for investigate (singular)." => sub {
Link Here
|
374 |
'itemnumber' => $dbitem->itemnumber_id, |
407 |
'itemnumber' => $dbitem->itemnumber_id, |
375 |
'frombranch' => $dbitem->itemnumber->homebranch, |
408 |
'frombranch' => $dbitem->itemnumber->homebranch, |
376 |
'tobranch' => $dbitem->stage->branchcode_id, |
409 |
'tobranch' => $dbitem->stage->branchcode_id, |
377 |
'datesent' => DateTime->now, |
410 |
'datesent' => dt_from_string, |
378 |
'datearrived' => DateTime->now, |
411 |
'datearrived' => dt_from_string, |
379 |
'reason' => "StockrotationAdvance", |
412 |
'reason' => "StockrotationAdvance", |
380 |
})->store; |
413 |
})->store; |
381 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store; |
414 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store; |
Lines 401-408
subtest "Tests for investigate (singular)." => sub {
Link Here
|
401 |
'itemnumber' => $dbitem->itemnumber_id, |
434 |
'itemnumber' => $dbitem->itemnumber_id, |
402 |
'frombranch' => $dbitem->itemnumber->homebranch, |
435 |
'frombranch' => $dbitem->itemnumber->homebranch, |
403 |
'tobranch' => $dbitem->stage->branchcode_id, |
436 |
'tobranch' => $dbitem->stage->branchcode_id, |
404 |
'datesent' => DateTime->now - $sent_duration, |
437 |
'datesent' => dt_from_string - $sent_duration, |
405 |
'datearrived' => DateTime->now - $arrived_duration, |
438 |
'datearrived' => dt_from_string - $arrived_duration, |
406 |
'reason' => "StockrotationAdvance", |
439 |
'reason' => "StockrotationAdvance", |
407 |
})->store; |
440 |
})->store; |
408 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store; |
441 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store; |
Lines 429-436
subtest "Tests for investigate (singular)." => sub {
Link Here
|
429 |
'itemnumber' => $dbitem->itemnumber_id, |
462 |
'itemnumber' => $dbitem->itemnumber_id, |
430 |
'frombranch' => $dbitem->itemnumber->homebranch, |
463 |
'frombranch' => $dbitem->itemnumber->homebranch, |
431 |
'tobranch' => $dbitem->stage->branchcode_id, |
464 |
'tobranch' => $dbitem->stage->branchcode_id, |
432 |
'datesent' => DateTime->now - $sent_duration, |
465 |
'datesent' => dt_from_string - $sent_duration, |
433 |
'datearrived' => DateTime->now - $arrived_duration, |
466 |
'datearrived' => dt_from_string - $arrived_duration, |
434 |
'reason' => "StockrotationAdvance", |
467 |
'reason' => "StockrotationAdvance", |
435 |
})->store; |
468 |
})->store; |
436 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store; |
469 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store; |
Lines 457-464
subtest "Tests for investigate (singular)." => sub {
Link Here
|
457 |
'itemnumber' => $dbitem->itemnumber_id, |
490 |
'itemnumber' => $dbitem->itemnumber_id, |
458 |
'frombranch' => $dbitem->itemnumber->homebranch, |
491 |
'frombranch' => $dbitem->itemnumber->homebranch, |
459 |
'tobranch' => $dbitem->stage->branchcode_id, |
492 |
'tobranch' => $dbitem->stage->branchcode_id, |
460 |
'datesent' => DateTime->now - $sent_duration, |
493 |
'datesent' => dt_from_string - $sent_duration, |
461 |
'datearrived' => DateTime->now - $arrived_duration, |
494 |
'datearrived' => dt_from_string - $arrived_duration, |
462 |
'reason' => "StockrotationAdvance", |
495 |
'reason' => "StockrotationAdvance", |
463 |
})->store; |
496 |
})->store; |
464 |
is($dbitem->investigate->{reason}, 'repatriation', |
497 |
is($dbitem->investigate->{reason}, 'repatriation', |
465 |
- |
|
|