@@ -, +, @@ --- Koha/Object.pm | 5 ++--- t/db_dependent/Koha/Object.t | 29 +++++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 5 deletions(-) --- a/Koha/Object.pm +++ a/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; } --- a/t/db_dependent/Koha/Object.t +++ a/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; +}; --