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

(-)a/t/db_dependent/StockRotationItems.t (-18 / +50 lines)
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
use Test::Warn;
28
use Test::Warn;
Lines 196-202 subtest "Tests for needs_advancing." => sub { Link Here
196
        'itemnumber'  => $dbitem->itemnumber_id,
197
        'itemnumber'  => $dbitem->itemnumber_id,
197
        'frombranch'  => $dbitem->stage->branchcode_id,
198
        'frombranch'  => $dbitem->stage->branchcode_id,
198
        'tobranch'    => $dbitem->stage->branchcode_id,
199
        'tobranch'    => $dbitem->stage->branchcode_id,
199
        'datesent'    => DateTime->now,
200
        'datesent'    => dt_from_string(),
200
        'datearrived' => undef,
201
        'datearrived' => undef,
201
        'reason'      => "StockrotationAdvance",
202
        'reason'      => "StockrotationAdvance",
202
    })->store;
203
    })->store;
Lines 209-215 subtest "Tests for needs_advancing." => sub { Link Here
209
    $dbitem->fresh(0)->store;
210
    $dbitem->fresh(0)->store;
210
211
211
    # Test item will not be advanced if it has not spent enough time.
212
    # Test item will not be advanced if it has not spent enough time.
212
    $dbtransfer->datearrived(DateTime->now)->store;
213
    $dbtransfer->datearrived(dt_from_string())->store;
213
    is($dbitem->needs_advancing, 0, "Not ready to advance: Not spent enough time.");
214
    is($dbitem->needs_advancing, 0, "Not ready to advance: Not spent enough time.");
214
    # Test item will be advanced if it has not spent enough time, but is fresh.
215
    # Test item will be advanced if it has not spent enough time, but is fresh.
215
    $dbitem->fresh(1)->store;
216
    $dbitem->fresh(1)->store;
Lines 218-227 subtest "Tests for needs_advancing." => sub { Link Here
218
219
219
    # Test item will be advanced if it has spent enough time.
220
    # Test item will be advanced if it has spent enough time.
220
    $dbtransfer->datesent(      # Item was sent 100 days ago...
221
    $dbtransfer->datesent(      # Item was sent 100 days ago...
221
        DateTime->now - DateTime::Duration->new( days => 100 )
222
        dt_from_string() - DateTime::Duration->new( days => 100 )
222
    )->store;
223
    )->store;
223
    $dbtransfer->datearrived(   # And arrived 75 days ago.
224
    $dbtransfer->datearrived(   # And arrived 75 days ago.
224
        DateTime->now - DateTime::Duration->new( days => 75 )
225
        dt_from_string() - DateTime::Duration->new( days => 75 )
225
    )->store;
226
    )->store;
226
    is($dbitem->needs_advancing, 1, "Ready to be advanced.");
227
    is($dbitem->needs_advancing, 1, "Ready to be advanced.");
227
    $dbtransfer->delete;
228
    $dbtransfer->delete;
Lines 231-237 subtest "Tests for needs_advancing." => sub { Link Here
231
};
232
};
232
233
233
subtest "Tests for advance." => sub {
234
subtest "Tests for advance." => sub {
234
    plan tests => 15;
235
    plan tests => 23;
235
    $schema->storage->txn_begin;
236
    $schema->storage->txn_begin;
236
237
237
    my $sritem = $builder->build(
238
    my $sritem = $builder->build(
Lines 289-310 subtest "Tests for advance." => sub { Link Here
289
    $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
290
    $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
290
    ## Test results
291
    ## Test results
291
    is($dbitem->stage->stage_id, $dbstage2->stage_id, "Stage updated.");
292
    is($dbitem->stage->stage_id, $dbstage2->stage_id, "Stage updated.");
293
    is(
294
        $dbitem->itemnumber->homebranch,
295
        $dbstage2->branchcode_id,
296
        "Item homebranch updated"
297
    );
292
    my $intransfer = $dbitem->itemnumber->get_transfer;
298
    my $intransfer = $dbitem->itemnumber->get_transfer;
293
    is($intransfer->frombranch, $dbstage->branchcode_id, "Origin correct.");
299
    is($intransfer->frombranch, $dbstage->branchcode_id, "Origin correct.");
294
    is($intransfer->tobranch, $dbstage2->branchcode_id, "Target Correct.");
300
    is($intransfer->tobranch, $dbstage2->branchcode_id, "Target Correct.");
295
301
302
    # Arrive at new branch
303
    $intransfer->datearrived(dt_from_string())->store;
304
    $dbitem->itemnumber->holdingbranch($srstage->{branchcode_id})->store;
305
306
    # Test a cyclical advance
307
    ok($dbitem->advance, "Cyclical advancement done.");
308
    ## Refetch dbitem
309
    $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
310
    ## Test results
311
    is($dbitem->stage->stage_id, $dbstage->stage_id, "Stage updated.");
312
    is(
313
        $dbitem->itemnumber->homebranch,
314
        $dbstage->branchcode_id,
315
        "Item homebranch updated"
316
    );
317
    $intransfer = $dbitem->itemnumber->get_transfer;
318
    is($intransfer->frombranch, $dbstage2->branchcode_id, "Origin correct.");
319
    is($intransfer->tobranch, $dbstage->branchcode_id, "Target correct.");
320
321
    # Arrive at new branch
322
    $intransfer->datearrived(dt_from_string())->store;
323
    $dbitem->itemnumber->holdingbranch($srstage->{branchcode_id})->store;
324
296
    $dbstage->rota->cyclical(0)->store;         # Set Rota to non-cyclical.
325
    $dbstage->rota->cyclical(0)->store;         # Set Rota to non-cyclical.
297
326
327
    # Advance again, to end of rota.
328
    ok($dbitem->advance, "Non-cyclical advance to last stage.");
329
298
    # Arrive at new branch
330
    # Arrive at new branch
299
    $intransfer->datearrived(DateTime->now)->store;
331
    $intransfer->datearrived(dt_from_string())->store;
300
    $dbitem->itemnumber->holdingbranch($srstage->{branchcode_id})->store;
332
    $dbitem->itemnumber->holdingbranch($srstage->{branchcode_id})->store;
301
    $dbitem->itemnumber->homebranch($srstage->{branchcode_id})->store;
302
333
303
    # Advance again, Remove from rota.
334
    # Advance again, Remove from rota.
304
    ok($dbitem->advance, "Non-cyclical advance.");
335
    ok($dbitem->advance, "Non-cyclical advance.");
305
    ## Refetch dbitem
336
    ## Refetch dbitem
306
    $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
337
    $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
307
    is($dbitem, undef, "StockRotationItem has been removed.");
338
    is($dbitem, undef, "StockRotationItem has been removed.");
339
    my $item = Koha::Items->find($sritem->{itemnumber_id});
340
    is($item->homebranch, $srstage->{branchcode_id}, "Item homebranch remains");
308
341
309
    $schema->storage->txn_rollback;
342
    $schema->storage->txn_rollback;
310
};
343
};
Lines 356-363 subtest "Tests for investigate (singular)." => sub { Link Here
356
        'itemnumber'  => $dbitem->itemnumber_id,
389
        'itemnumber'  => $dbitem->itemnumber_id,
357
        'frombranch'  => $dbitem->itemnumber->homebranch,
390
        'frombranch'  => $dbitem->itemnumber->homebranch,
358
        'tobranch'    => $dbitem->itemnumber->homebranch,
391
        'tobranch'    => $dbitem->itemnumber->homebranch,
359
        'datesent'    => DateTime->now,
392
        'datesent'    => dt_from_string(),
360
        'datearrived' => DateTime->now,
393
        'datearrived' => dt_from_string(),
361
        'reason'      => "StockrotationAdvance",
394
        'reason'      => "StockrotationAdvance",
362
    })->store;
395
    })->store;
363
    is($dbitem->investigate->{reason}, 'repatriation', "older item repatriates.");
396
    is($dbitem->investigate->{reason}, 'repatriation', "older item repatriates.");
Lines 377-384 subtest "Tests for investigate (singular)." => sub { Link Here
377
        'itemnumber'  => $dbitem->itemnumber_id,
410
        'itemnumber'  => $dbitem->itemnumber_id,
378
        'frombranch'  => $dbitem->itemnumber->homebranch,
411
        'frombranch'  => $dbitem->itemnumber->homebranch,
379
        'tobranch'    => $dbitem->stage->branchcode_id,
412
        'tobranch'    => $dbitem->stage->branchcode_id,
380
        'datesent'    => DateTime->now,
413
        'datesent'    => dt_from_string(),
381
        'datearrived' => DateTime->now,
414
        'datearrived' => dt_from_string(),
382
        'reason'      => "StockrotationAdvance",
415
        'reason'      => "StockrotationAdvance",
383
    })->store;
416
    })->store;
384
    $dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store;
417
    $dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store;
Lines 404-411 subtest "Tests for investigate (singular)." => sub { Link Here
404
        'itemnumber'  => $dbitem->itemnumber_id,
437
        'itemnumber'  => $dbitem->itemnumber_id,
405
        'frombranch'  => $dbitem->itemnumber->homebranch,
438
        'frombranch'  => $dbitem->itemnumber->homebranch,
406
        'tobranch'    => $dbitem->stage->branchcode_id,
439
        'tobranch'    => $dbitem->stage->branchcode_id,
407
        'datesent'    => DateTime->now - $sent_duration,
440
        'datesent'    => dt_from_string() - $sent_duration,
408
        'datearrived' => DateTime->now - $arrived_duration,
441
        'datearrived' => dt_from_string() - $arrived_duration,
409
        'reason'      => "StockrotationAdvance",
442
        'reason'      => "StockrotationAdvance",
410
    })->store;
443
    })->store;
411
    $dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store;
444
    $dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store;
Lines 432-439 subtest "Tests for investigate (singular)." => sub { Link Here
432
        'itemnumber'  => $dbitem->itemnumber_id,
465
        'itemnumber'  => $dbitem->itemnumber_id,
433
        'frombranch'  => $dbitem->itemnumber->homebranch,
466
        'frombranch'  => $dbitem->itemnumber->homebranch,
434
        'tobranch'    => $dbitem->stage->branchcode_id,
467
        'tobranch'    => $dbitem->stage->branchcode_id,
435
        'datesent'    => DateTime->now - $sent_duration,
468
        'datesent'    => dt_from_string() - $sent_duration,
436
        'datearrived' => DateTime->now - $arrived_duration,
469
        'datearrived' => dt_from_string() - $arrived_duration,
437
        'reason'      => "StockrotationAdvance",
470
        'reason'      => "StockrotationAdvance",
438
    })->store;
471
    })->store;
439
    $dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store;
472
    $dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store;
Lines 460-467 subtest "Tests for investigate (singular)." => sub { Link Here
460
        'itemnumber'  => $dbitem->itemnumber_id,
493
        'itemnumber'  => $dbitem->itemnumber_id,
461
        'frombranch'  => $dbitem->itemnumber->homebranch,
494
        'frombranch'  => $dbitem->itemnumber->homebranch,
462
        'tobranch'    => $dbitem->stage->branchcode_id,
495
        'tobranch'    => $dbitem->stage->branchcode_id,
463
        'datesent'    => DateTime->now - $sent_duration,
496
        'datesent'    => dt_from_string() - $sent_duration,
464
        'datearrived' => DateTime->now - $arrived_duration,
497
        'datearrived' => dt_from_string() - $arrived_duration,
465
        'reason'      => "StockrotationAdvance",
498
        'reason'      => "StockrotationAdvance",
466
    })->store;
499
    })->store;
467
    is($dbitem->investigate->{reason}, 'repatriation',
500
    is($dbitem->investigate->{reason}, 'repatriation',
468
- 

Return to bug 24446