Browse Source

Bug 23463: update permanent_location if location has been updated

This change to Koha::Item->store seems correct here, but tests from /db_dependent/Items.t is failing now.

Adjusting them to make them pass.

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
20.05.x
Jonathan Druart 5 years ago
committed by Martin Renvoize
parent
commit
fce29fb77d
Signed by: martin.renvoize GPG Key ID: 422B469130441A0F
  1. 2
      Koha/Item.pm
  2. 11
      t/db_dependent/Items.t

2
Koha/Item.pm

@ -137,7 +137,7 @@ sub store {
my %updated_columns = $self->_result->get_dirty_columns;
return $self->SUPER::store unless %updated_columns;
if ( defined $self->location
if ( exists $updated_columns{location}
and $self->location ne 'CART'
and $self->location ne 'PROC'
and not exists $updated_columns{permanent_location} )

11
t/db_dependent/Items.t

@ -107,15 +107,16 @@ subtest 'General Add, Get and Del tests' => sub {
is( $getitem->location, $location, "The location should not have been modified" );
is( $getitem->permanent_location, 'my permanent location', "The permanent_location should not have modified" );
$getitem->location($location)->store;
my $new_location = "New location";
$getitem->location($new_location)->store;
$getitem = Koha::Items->find($itemnumber);
is( $getitem->location, $location, "The location should have been set to correct location" );
is( $getitem->permanent_location, $location, "The permanent_location should have been set to location" );
is( $getitem->location, $new_location, "The location should have been set to correct location" );
is( $getitem->permanent_location, $new_location, "The permanent_location should have been set to location" );
$getitem->location('CART')->store;
$getitem = Koha::Items->find($itemnumber);
is( $getitem->location, 'CART', "The location should have been set to CART" );
is( $getitem->permanent_location, $location, "The permanent_location should not have been set to CART" );
is( $getitem->permanent_location, $new_location, "The permanent_location should not have been set to CART" );
t::lib::Mocks::mock_preference('item-level_itypes', '1');
$getitem = Koha::Items->find($itemnumber);
@ -879,7 +880,7 @@ subtest 'Test logging for ModItem' => sub {
# True means logging
$schema->resultset('ActionLog')->search()->delete();
$item->location($location)->store({ log_action => 1 });
$item->location('new location')->store({ log_action => 1 });
is( $schema->resultset('ActionLog')->count(), 1, 'True value does trigger logging' );
# Undefined defaults to true

Loading…
Cancel
Save