Bug 26250: StockRotationItems.t and StockRotationStages.t

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
This commit is contained in:
Martin Renvoize 2020-08-19 13:56:08 +01:00 committed by Jonathan Druart
parent 9c9dddeaa4
commit 28d826263b
2 changed files with 154 additions and 56 deletions

View File

@ -40,13 +40,13 @@ subtest 'Basic object tests' => sub {
$schema->storage->txn_begin;
my $itm = $builder->build({ source => 'Item' });
my $itm = $builder->build_sample_item;
my $stage = $builder->build({ source => 'Stockrotationstage' });
my $item = $builder->build({
source => 'Stockrotationitem',
value => {
itemnumber_id => $itm->{itemnumber},
itemnumber_id => $itm->itemnumber,
stage_id => $stage->{stage_id},
},
});
@ -60,7 +60,7 @@ subtest 'Basic object tests' => sub {
# Relationship to rota
isa_ok( $sritem->itemnumber, 'Koha::Item', "Fetched related item." );
is( $sritem->itemnumber->itemnumber, $itm->{itemnumber}, "Related rota OK." );
is( $sritem->itemnumber->itemnumber, $itm->itemnumber, "Related rota OK." );
# Relationship to stage
isa_ok( $sritem->stage, 'Koha::StockRotationStage', "Fetched related stage." );
@ -77,7 +77,13 @@ subtest 'Tests for needs_repatriating' => sub {
$schema->storage->txn_begin;
# Setup a pristine stockrotation context.
my $sritem = $builder->build({ source => 'Stockrotationitem' });
my $sritem = $builder->build(
{
source => 'Stockrotationitem',
value =>
{ itemnumber_id => $builder->build_sample_item->itemnumber }
}
);
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id);
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id);
@ -130,7 +136,13 @@ subtest 'Tests for needs_repatriating' => sub {
subtest "Tests for repatriate." => sub {
plan tests => 3;
$schema->storage->txn_begin;
my $sritem = $builder->build({ source => 'Stockrotationitem' });
my $sritem = $builder->build(
{
source => 'Stockrotationitem',
value =>
{ itemnumber_id => $builder->build_sample_item->itemnumber }
}
);
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbitem->stage->position(1);
$dbitem->stage->duration(50);
@ -151,18 +163,28 @@ subtest "Tests for needs_advancing." => sub {
$schema->storage->txn_begin;
# Test behaviour of item freshly added to rota.
my $sritem = $builder->build({
source => 'Stockrotationitem',
value => { 'fresh' => 1, },
});
my $sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
'fresh' => 1,
itemnumber_id => $builder->build_sample_item->itemnumber
},
}
);
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
is($dbitem->needs_advancing, 1, "An item that is fresh will always need advancing.");
# Setup a pristine stockrotation context.
$sritem = $builder->build({
source => 'Stockrotationitem',
value => { 'fresh' => 0,}
});
$sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
'fresh' => 0,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id);
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id);
@ -209,10 +231,15 @@ subtest "Tests for advance." => sub {
plan tests => 15;
$schema->storage->txn_begin;
my $sritem = $builder->build({
source => 'Stockrotationitem',
value => { 'fresh' => 1 }
});
my $sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
'fresh' => 1,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id);
my $dbstage = $dbitem->stage;
@ -284,22 +311,43 @@ subtest "Tests for investigate (singular)." => sub {
$schema->storage->txn_begin;
# Test brand new item's investigation ['initiation']
my $sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 1 } });
my $sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
fresh => 1,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
my $dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
is($dbitem->investigate->{reason}, 'initiation', "fresh item initiates.");
# Test brand new item at stagebranch ['initiation']
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 1 } });
$sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
fresh => 1,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbitem->itemnumber->homebranch($dbitem->stage->branchcode_id)->store;
$dbitem->itemnumber->holdingbranch($dbitem->stage->branchcode_id)->store;
is($dbitem->investigate->{reason}, 'initiation', "fresh item at stagebranch initiates.");
# Test item not at stagebranch with branchtransfer history ['repatriation']
$sritem = $builder->build({
source => 'Stockrotationitem',
value => { 'fresh' => 0,}
});
$sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
'fresh' => 0,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
my $dbtransfer = Koha::Item::Transfer->new({
'itemnumber' => $dbitem->itemnumber_id,
@ -312,10 +360,15 @@ subtest "Tests for investigate (singular)." => sub {
is($dbitem->investigate->{reason}, 'repatriation', "older item repatriates.");
# Test item at stagebranch with branchtransfer history ['not-ready']
$sritem = $builder->build({
source => 'Stockrotationitem',
value => { 'fresh' => 0,}
});
$sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
'fresh' => 0,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbtransfer = Koha::Item::Transfer->new({
'itemnumber' => $dbitem->itemnumber_id,
@ -330,7 +383,15 @@ subtest "Tests for investigate (singular)." => sub {
is($dbitem->investigate->{reason}, 'not-ready', "older item at stagebranch not-ready.");
# Test item due for advancement ['advancement']
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } });
$sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
fresh => 0,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbitem->indemand(0)->store;
$dbitem->stage->duration(50)->store;
@ -350,7 +411,15 @@ subtest "Tests for investigate (singular)." => sub {
"Item ready for advancement.");
# Test item due for advancement but in-demand ['in-demand']
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } });
$sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
fresh => 0,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbitem->indemand(1)->store;
$dbitem->stage->duration(50)->store;
@ -370,7 +439,15 @@ subtest "Tests for investigate (singular)." => sub {
"Item advances, but in-demand.");
# Test item ready for advancement, but at wrong library ['repatriation']
$sritem = $builder->build({ source => 'Stockrotationitem', value => { fresh => 0 } });
$sritem = $builder->build(
{
source => 'Stockrotationitem',
value => {
fresh => 0,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
);
$dbitem = Koha::StockRotationItems->find($sritem->{itemnumber_id});
$dbitem->indemand(0)->store;
$dbitem->stage->duration(50)->store;

View File

@ -165,18 +165,33 @@ subtest 'Relationship to stockrotationitems' => sub {
$schema->storage->txn_begin;
my $stage = $builder->build({ source => 'Stockrotationstage' });
$builder->build({
source => 'Stockrotationitem',
value => { stage_id => $stage->{stage_id} },
});
$builder->build({
source => 'Stockrotationitem',
value => { stage_id => $stage->{stage_id} },
});
$builder->build({
source => 'Stockrotationitem',
value => { stage_id => $stage->{stage_id} },
});
$builder->build(
{
source => 'Stockrotationitem',
value => {
stage_id => $stage->{stage_id},
itemnumber_id => $builder->build_sample_item->itemnumber
},
}
);
$builder->build(
{
source => 'Stockrotationitem',
value => {
stage_id => $stage->{stage_id},
itemnumber_id => $builder->build_sample_item->itemnumber
},
}
);
$builder->build(
{
source => 'Stockrotationitem',
value => {
stage_id => $stage->{stage_id},
itemnumber_id => $builder->build_sample_item->itemnumber
},
}
);
my $srstage = Koha::StockRotationStages->find($stage->{stage_id});
my $sritems = $srstage->stockrotationitems;
@ -283,14 +298,17 @@ subtest 'Tests for investigate (singular)' => sub {
while ( my ( $code, $count ) = each %{$spec} ) {
my $cnt = 0;
while ( $cnt < $count ) {
my $item = $builder->build({
source => 'Stockrotationitem',
value => {
stage_id => $stage1->{stage_id},
indemand => 0,
fresh => 1,
my $item = $builder->build(
{
source => 'Stockrotationitem',
value => {
stage_id => $stage1->{stage_id},
indemand => 0,
fresh => 1,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
});
);
my $dbitem = Koha::StockRotationItems->find($item);
$dbitem->itemnumber->homebranch($code)
->holdingbranch($code)->store;
@ -322,14 +340,17 @@ subtest 'Tests for investigate (singular)' => sub {
while ( my ( $code, $count ) = each %{$spec} ) {
my $cnt = 0;
while ( $cnt < $count ) {
my $item = $builder->build({
source => 'Stockrotationitem',
value => {
stage_id => $stage2->{stage_id},
indemand => 0,
fresh => 1,
my $item = $builder->build(
{
source => 'Stockrotationitem',
value => {
stage_id => $stage2->{stage_id},
indemand => 0,
fresh => 1,
itemnumber_id => $builder->build_sample_item->itemnumber
}
}
});
);
my $dbitem = Koha::StockRotationItems->find($item);
$dbitem->itemnumber->homebranch($code)
->holdingbranch($code)->store;