Bug 16961: Add Koha::Objects->update

In order to update several rows in a single query, we need this new
method.

Test plan:
Confirm that the changes in Objects.t make sense and that the tests
pass.

Signed-off-by: Hector Castro <hector.hecaxmmx@gmail.com>
Test passed successfully

Signed-off-by: Katrin Fischer  <katrin.fischer@bsz-bw.de>

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
This commit is contained in:
Jonathan Druart 2016-07-22 13:56:36 +01:00 committed by Kyle M Hall
parent 82af4da811
commit 5e0f55fac8
2 changed files with 29 additions and 1 deletions

View File

@ -234,6 +234,19 @@ sub _wrap {
return @objects;
}
=head3 update
Koha::Objects->search({ $key => $value})->update( \%values );
Sets the specified columns in the resultset to the supplied values in a single query.
=cut
sub update {
my ( $self, $params ) = @_;
return $self->_resultset()->update($params);
}
=head3 Koha::Objects->_resultset
Returns the internal resultset or creates it if undefined

View File

@ -19,9 +19,10 @@
use Modern::Perl;
use Test::More tests => 2;
use Test::More tests => 3;
use Koha::Authority::Types;
use Koha::Cities;
use Koha::Patrons;
use Koha::Database;
@ -36,5 +37,19 @@ my @columns = Koha::Patrons->columns;
my $borrowernumber_exists = grep { /^borrowernumber$/ } @columns;
is( $borrowernumber_exists, 1, 'Koha::Objects->columns should return the table columns' );
subtest 'update' => sub {
plan tests => 2;
my $builder = t::lib::TestBuilder->new;
$builder->build( { source => 'City', value => { city_country => 'UK' } } );
$builder->build( { source => 'City', value => { city_country => 'UK' } } );
$builder->build( { source => 'City', value => { city_country => 'UK' } } );
$builder->build( { source => 'City', value => { city_country => 'France' } } );
$builder->build( { source => 'City', value => { city_country => 'France' } } );
$builder->build( { source => 'City', value => { city_country => 'Germany' } } );
Koha::Cities->search( { city_country => 'UK' } )->update( { city_country => 'EU' } );
is( Koha::Cities->search( { city_country => 'EU' } )->count, 3, 'Koha::Objects->update should have updated the 3 rows' );
is( Koha::Cities->search( { city_country => 'UK' } )->count, 0, 'Koha::Objects->update should have updated the 3 rows' );
};
$schema->storage->txn_rollback;
1;