From ce46840925cdf9e1f0d32918a45af7f3466742b0 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Mon, 27 Feb 2017 10:57:18 +0100 Subject: [PATCH] Bug 18174: Add update to Koha::Object Content-Type: text/plain; charset=utf-8 Since Koha::Objects has a update method, we should allow it too in Koha::Object. Note that it is just redirecting to DBIx immediately. Changed the exception when the method generates an error. The previous code suggested that the method was not found, but this is not the case. Test plan: Run t/db_dependent/Koha/Object.t --- Koha/Object.pm | 5 ++--- t/db_dependent/Koha/Object.t | 29 +++++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Koha/Object.pm b/Koha/Object.pm index 22e11b6..d305542 100644 --- a/Koha/Object.pm +++ b/Koha/Object.pm @@ -301,13 +301,12 @@ sub AUTOLOAD { } } - my @known_methods = qw( is_changed id in_storage get_column discard_changes); - + my @known_methods = qw( is_changed id in_storage get_column discard_changes update ); Koha::Exceptions::Object::MethodNotCoveredByTests->throw( "The method $method is not covered by tests!" ) unless grep {/^$method$/} @known_methods; my $r = eval { $self->_result->$method(@_) }; if ( $@ ) { - Koha::Exceptions::Object::MethodNotFound->throw( "No method $method for " . ref($self) ); + Koha::Exceptions::Object->throw( ref($self) . "::$method generated this error: " . $@ ); } return $r; } diff --git a/t/db_dependent/Koha/Object.t b/t/db_dependent/Koha/Object.t index d812d37..ea06544 100755 --- a/t/db_dependent/Koha/Object.t +++ b/t/db_dependent/Koha/Object.t @@ -17,14 +17,16 @@ use Modern::Perl; -use Test::More tests => 8; +use Test::More tests => 9; use Test::Warn; use C4::Context; use Koha::Database; use Koha::DateUtils qw( dt_from_string ); +use Koha::Libraries; use Scalar::Util qw( isvstring ); +use Try::Tiny; use t::lib::TestBuilder; @@ -168,6 +170,29 @@ subtest 'TO_JSON tests' => sub { $schema->storage->txn_rollback; }; +subtest "Test update method" => sub { + plan tests => 6; + + $schema->storage->txn_begin; + my $branchcode = $builder->build({ source => 'Branch' })->{branchcode}; + my $library = Koha::Libraries->find( $branchcode ); + $library->update({ branchname => 'New_Name', branchcity => 'AMS' }); + is( $library->branchname, 'New_Name', 'Changed name with update' ); + is( $library->branchcity, 'AMS', 'Changed city too' ); + is( $library->is_changed, 0, 'Change should be stored already' ); + try { + $library->update({ + branchcity => 'NYC', not_a_column => 53, branchname => 'Name3', + }); + fail( 'It should not be possible to update an unexisting column without an error from Koha::Object/DBIx' ); + } catch { + ok( $_->isa('Koha::Exceptions::Object'), 'Caught error when updating wrong column' ); + $library->discard_changes; #requery after failing update + }; + # Check if the columns are not updated + is( $library->branchcity, 'AMS', 'First column not updated' ); + is( $library->branchname, 'New_Name', 'Third column not updated' ); -1; + $schema->storage->txn_rollback; +}; -- 2.1.4