Lines 29-36
use Test::More tests => 8;
Link Here
|
29 |
|
29 |
|
30 |
my $schema = Koha::Database->new->schema; |
30 |
my $schema = Koha::Database->new->schema; |
31 |
|
31 |
|
32 |
use_ok('Koha::Stockrotationitems'); |
32 |
use_ok('Koha::StockRotationItems'); |
33 |
use_ok('Koha::Stockrotationitem'); |
33 |
use_ok('Koha::StockRotationItem'); |
34 |
|
34 |
|
35 |
my $builder = t::lib::TestBuilder->new; |
35 |
my $builder = t::lib::TestBuilder->new; |
36 |
|
36 |
|
Lines 51-60
subtest 'Basic object tests' => sub {
Link Here
|
51 |
}, |
51 |
}, |
52 |
}); |
52 |
}); |
53 |
|
53 |
|
54 |
my $sritem = Koha::Stockrotationitems->find($item->{itemnumber_id}); |
54 |
my $sritem = Koha::StockRotationItems->find($item->{itemnumber_id}); |
55 |
isa_ok( |
55 |
isa_ok( |
56 |
$sritem, |
56 |
$sritem, |
57 |
'Koha::Stockrotationitem', |
57 |
'Koha::StockRotationItem', |
58 |
"Correctly create and load a stock rotation item." |
58 |
"Correctly create and load a stock rotation item." |
59 |
); |
59 |
); |
60 |
|
60 |
|
Lines 63-69
subtest 'Basic object tests' => sub {
Link Here
|
63 |
is( $sritem->itemnumber->itemnumber, $itm->{itemnumber}, "Related rota OK." ); |
63 |
is( $sritem->itemnumber->itemnumber, $itm->{itemnumber}, "Related rota OK." ); |
64 |
|
64 |
|
65 |
# Relationship to stage |
65 |
# Relationship to stage |
66 |
isa_ok( $sritem->stage, 'Koha::Stockrotationstage', "Fetched related stage." ); |
66 |
isa_ok( $sritem->stage, 'Koha::StockRotationStage', "Fetched related stage." ); |
67 |
is( $sritem->stage->stage_id, $stage->{stage_id}, "Related stage OK." ); |
67 |
is( $sritem->stage->stage_id, $stage->{stage_id}, "Related stage OK." ); |
68 |
|
68 |
|
69 |
|
69 |
|
Lines 78-84
subtest 'Tests for needs_repatriating' => sub {
Link Here
|
78 |
|
78 |
|
79 |
# Setup a pristine stockrotation context. |
79 |
# Setup a pristine stockrotation context. |
80 |
my $sritem = $builder->build({ source => 'Stockrotationitem' }); |
80 |
my $sritem = $builder->build({ source => 'Stockrotationitem' }); |
81 |
my $dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
81 |
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
82 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id); |
82 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id); |
83 |
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id); |
83 |
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id); |
84 |
$dbitem->stage->position(1); |
84 |
$dbitem->stage->position(1); |
Lines 113-119
subtest 'Tests for needs_repatriating' => sub {
Link Here
|
113 |
# - homebranch != stockrotationstage.branch & not in transit [1] |
113 |
# - homebranch != stockrotationstage.branch & not in transit [1] |
114 |
is( |
114 |
is( |
115 |
$dbitem->needs_repatriating, 1, |
115 |
$dbitem->needs_repatriating, 1, |
116 |
"Homebranch != Stockrotationstage.Branchcode_id & not in transit." |
116 |
"Homebranch != StockRotationStage.Branchcode_id & not in transit." |
117 |
); |
117 |
); |
118 |
|
118 |
|
119 |
# Set to in transit (by implication). |
119 |
# Set to in transit (by implication). |
Lines 131-137
subtest "Tests for repatriate." => sub {
Link Here
|
131 |
plan tests => 3; |
131 |
plan tests => 3; |
132 |
$schema->storage->txn_begin; |
132 |
$schema->storage->txn_begin; |
133 |
my $sritem = $builder->build({ source => 'Stockrotationitem' }); |
133 |
my $sritem = $builder->build({ source => 'Stockrotationitem' }); |
134 |
my $dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
134 |
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
135 |
$dbitem->stage->position(1); |
135 |
$dbitem->stage->position(1); |
136 |
$dbitem->stage->duration(50); |
136 |
$dbitem->stage->duration(50); |
137 |
my $branch = $builder->build({ source => 'Branch' }); |
137 |
my $branch = $builder->build({ source => 'Branch' }); |
Lines 155-161
subtest "Tests for needs_advancing." => sub {
Link Here
|
155 |
source => 'Stockrotationitem', |
155 |
source => 'Stockrotationitem', |
156 |
value => { 'fresh' => 1, }, |
156 |
value => { 'fresh' => 1, }, |
157 |
}); |
157 |
}); |
158 |
my $dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
158 |
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
159 |
is($dbitem->needs_advancing, 1, "An item that is fresh will always need advancing."); |
159 |
is($dbitem->needs_advancing, 1, "An item that is fresh will always need advancing."); |
160 |
|
160 |
|
161 |
# Setup a pristine stockrotation context. |
161 |
# Setup a pristine stockrotation context. |
Lines 163-169
subtest "Tests for needs_advancing." => sub {
Link Here
|
163 |
source => 'Stockrotationitem', |
163 |
source => 'Stockrotationitem', |
164 |
value => { 'fresh' => 0,} |
164 |
value => { 'fresh' => 0,} |
165 |
}); |
165 |
}); |
166 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
166 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
167 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id); |
167 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id); |
168 |
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id); |
168 |
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id); |
169 |
$dbitem->stage->position(1); |
169 |
$dbitem->stage->position(1); |
Lines 213-219
subtest "Tests for advance." => sub {
Link Here
|
213 |
source => 'Stockrotationitem', |
213 |
source => 'Stockrotationitem', |
214 |
value => { 'fresh' => 1 } |
214 |
value => { 'fresh' => 1 } |
215 |
}); |
215 |
}); |
216 |
my $dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
216 |
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
217 |
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id); |
217 |
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id); |
218 |
my $dbstage = $dbitem->stage; |
218 |
my $dbstage = $dbitem->stage; |
219 |
$dbstage->position(1)->duration(50)->store; # Configure stage. |
219 |
$dbstage->position(1)->duration(50)->store; # Configure stage. |
Lines 233-246
subtest "Tests for advance." => sub {
Link Here
|
233 |
$dbstage->rota->cyclical(1)->store; # Set Rota to cyclical. |
233 |
$dbstage->rota->cyclical(1)->store; # Set Rota to cyclical. |
234 |
ok($dbitem->advance, "Single stage cyclical advance done."); |
234 |
ok($dbitem->advance, "Single stage cyclical advance done."); |
235 |
## Refetch dbitem |
235 |
## Refetch dbitem |
236 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
236 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
237 |
is($dbitem->stage->stage_id, $dbstage->stage_id, "Single stage cyclical stage OK."); |
237 |
is($dbitem->stage->stage_id, $dbstage->stage_id, "Single stage cyclical stage OK."); |
238 |
|
238 |
|
239 |
# Test with indemand advance |
239 |
# Test with indemand advance |
240 |
$dbitem->indemand(1)->store; |
240 |
$dbitem->indemand(1)->store; |
241 |
ok($dbitem->advance, "Indemand item advance done."); |
241 |
ok($dbitem->advance, "Indemand item advance done."); |
242 |
## Refetch dbitem |
242 |
## Refetch dbitem |
243 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
243 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
244 |
is($dbitem->indemand, 0, "Indemand OK."); |
244 |
is($dbitem->indemand, 0, "Indemand OK."); |
245 |
is($dbitem->stage->stage_id, $dbstage->stage_id, "Indemand item advance stage OK."); |
245 |
is($dbitem->stage->stage_id, $dbstage->stage_id, "Indemand item advance stage OK."); |
246 |
|
246 |
|
Lines 249-262
subtest "Tests for advance." => sub {
Link Here
|
249 |
source => 'Stockrotationstage', |
249 |
source => 'Stockrotationstage', |
250 |
values => { duration => 50 } |
250 |
values => { duration => 50 } |
251 |
}); |
251 |
}); |
252 |
my $dbstage2 = Koha::Stockrotationstages->find($srstage->{stage_id}); |
252 |
my $dbstage2 = Koha::StockRotationStages->find($srstage->{stage_id}); |
253 |
$dbstage2->move_to_group($dbitem->stage->rota_id); |
253 |
$dbstage2->move_to_group($dbitem->stage->rota_id); |
254 |
$dbstage2->move_last; |
254 |
$dbstage2->move_last; |
255 |
|
255 |
|
256 |
# Test a straight up advance |
256 |
# Test a straight up advance |
257 |
ok($dbitem->advance, "Advancement done."); |
257 |
ok($dbitem->advance, "Advancement done."); |
258 |
## Refetch dbitem |
258 |
## Refetch dbitem |
259 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
259 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
260 |
## Test results |
260 |
## Test results |
261 |
is($dbitem->stage->stage_id, $dbstage2->stage_id, "Stage updated."); |
261 |
is($dbitem->stage->stage_id, $dbstage2->stage_id, "Stage updated."); |
262 |
my $intransfer = $dbitem->itemnumber->get_transfer; |
262 |
my $intransfer = $dbitem->itemnumber->get_transfer; |
Lines 273-280
subtest "Tests for advance." => sub {
Link Here
|
273 |
# Advance again, Remove from rota. |
273 |
# Advance again, Remove from rota. |
274 |
ok($dbitem->advance, "Non-cyclical advance."); |
274 |
ok($dbitem->advance, "Non-cyclical advance."); |
275 |
## Refetch dbitem |
275 |
## Refetch dbitem |
276 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
276 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
277 |
is($dbitem, undef, "Stockrotationitem has been removed."); |
277 |
is($dbitem, undef, "StockRotationItem has been removed."); |
278 |
|
278 |
|
279 |
$schema->storage->txn_rollback; |
279 |
$schema->storage->txn_rollback; |
280 |
}; |
280 |
}; |
Lines 285-296
subtest "Tests for investigate (singular)." => sub {
Link Here
|
285 |
|
285 |
|
286 |
# Test brand new item's investigation ['initiation'] |
286 |
# Test brand new item's investigation ['initiation'] |
287 |
my $sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 1 } }); |
287 |
my $sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 1 } }); |
288 |
my $dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
288 |
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
289 |
is($dbitem->investigate->{reason}, 'initiation', "fresh item initiates."); |
289 |
is($dbitem->investigate->{reason}, 'initiation', "fresh item initiates."); |
290 |
|
290 |
|
291 |
# Test brand new item at stagebranch ['initiation'] |
291 |
# Test brand new item at stagebranch ['initiation'] |
292 |
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 1 } }); |
292 |
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 1 } }); |
293 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
293 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
294 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store; |
294 |
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store; |
295 |
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id)->store; |
295 |
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id)->store; |
296 |
is($dbitem->investigate->{reason}, 'initiation', "fresh item at stagebranch initiates."); |
296 |
is($dbitem->investigate->{reason}, 'initiation', "fresh item at stagebranch initiates."); |
Lines 300-306
subtest "Tests for investigate (singular)." => sub {
Link Here
|
300 |
source => 'Stockrotationitem', |
300 |
source => 'Stockrotationitem', |
301 |
value => { 'fresh' => 0,} |
301 |
value => { 'fresh' => 0,} |
302 |
}); |
302 |
}); |
303 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
303 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
304 |
my $dbtransfer = Koha::Item::Transfer->new({ |
304 |
my $dbtransfer = Koha::Item::Transfer->new({ |
305 |
'itemnumber' => $dbitem->itemnumber_id, |
305 |
'itemnumber' => $dbitem->itemnumber_id, |
306 |
'frombranch' => $dbitem->itemnumber->homebranch, |
306 |
'frombranch' => $dbitem->itemnumber->homebranch, |
Lines 316-322
subtest "Tests for investigate (singular)." => sub {
Link Here
|
316 |
source => 'Stockrotationitem', |
316 |
source => 'Stockrotationitem', |
317 |
value => { 'fresh' => 0,} |
317 |
value => { 'fresh' => 0,} |
318 |
}); |
318 |
}); |
319 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
319 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
320 |
$dbtransfer = Koha::Item::Transfer->new({ |
320 |
$dbtransfer = Koha::Item::Transfer->new({ |
321 |
'itemnumber' => $dbitem->itemnumber_id, |
321 |
'itemnumber' => $dbitem->itemnumber_id, |
322 |
'frombranch' => $dbitem->itemnumber->homebranch, |
322 |
'frombranch' => $dbitem->itemnumber->homebranch, |
Lines 331-337
subtest "Tests for investigate (singular)." => sub {
Link Here
|
331 |
|
331 |
|
332 |
# Test item due for advancement ['advancement'] |
332 |
# Test item due for advancement ['advancement'] |
333 |
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } }); |
333 |
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } }); |
334 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
334 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
335 |
$dbitem->indemand(0)->store; |
335 |
$dbitem->indemand(0)->store; |
336 |
$dbitem->stage->duration(50)->store; |
336 |
$dbitem->stage->duration(50)->store; |
337 |
my $sent_duration = DateTime::Duration->new( days => 55); |
337 |
my $sent_duration = DateTime::Duration->new( days => 55); |
Lines 351-357
subtest "Tests for investigate (singular)." => sub {
Link Here
|
351 |
|
351 |
|
352 |
# Test item due for advancement but in-demand ['in-demand'] |
352 |
# Test item due for advancement but in-demand ['in-demand'] |
353 |
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } }); |
353 |
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } }); |
354 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
354 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
355 |
$dbitem->indemand(1)->store; |
355 |
$dbitem->indemand(1)->store; |
356 |
$dbitem->stage->duration(50)->store; |
356 |
$dbitem->stage->duration(50)->store; |
357 |
$sent_duration = DateTime::Duration->new( days => 55); |
357 |
$sent_duration = DateTime::Duration->new( days => 55); |
Lines 371-377
subtest "Tests for investigate (singular)." => sub {
Link Here
|
371 |
|
371 |
|
372 |
# Test item ready for advancement, but at wrong library ['repatriation'] |
372 |
# Test item ready for advancement, but at wrong library ['repatriation'] |
373 |
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } }); |
373 |
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } }); |
374 |
$dbitem = Koha::Stockrotationitems->find($sritem->{itemnumber_id}); |
374 |
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id}); |
375 |
$dbitem->indemand(0)->store; |
375 |
$dbitem->indemand(0)->store; |
376 |
$dbitem->stage->duration(50)->store; |
376 |
$dbitem->stage->duration(50)->store; |
377 |
$sent_duration = DateTime::Duration->new( days => 55); |
377 |
$sent_duration = DateTime::Duration->new( days => 55); |