@@ -, +, @@ $ kshell k$ prove t/db_dependent/Koha/Object.t --- Koha/Object.pm | 43 +++++++++++++++++++++++++++++++++++++++++++ t/db_dependent/Koha/Object.t | 23 ++++++++++++++++++++++- 2 files changed, 65 insertions(+), 1 deletion(-) --- a/Koha/Object.pm +++ a/Koha/Object.pm @@ -28,6 +28,7 @@ use Try::Tiny; use Koha::Database; use Koha::Exceptions::Object; use Koha::DateUtils; +use Koha::Object::Message; =head1 NAME @@ -77,6 +78,8 @@ sub new { $schema->resultset( $class->_type() )->new($attributes); } + $self->{_messages} = []; + croak("No _type found! Koha::Object must be subclassed!") unless $class->_type(); @@ -332,6 +335,46 @@ sub get_from_storage { return $object_class->_new_from_dbic($stored_object); } +=head3 $object->messages + + my @messages = @{ $object->messages }; + +Returns the (probably non-fatal) messages that were recorded on the object. + +=cut + +sub messages { + my ( $self ) = @_; + return $self->{_messages}; +} + +=head3 $object->add_message + + try { + + } + catch { + if ( ) { + Koha::Exception->throw... + } + + # This is a non fatal error, notify the caller + $self->add_message({ message => $error, type => 'error' }); + } + return $self; + +Adds a message. + +=cut + +sub add_message { + my ( $self, $params ) = @_; + + push @{ $self->{_messages} }, Koha::Object::Message->new($params); + + return $self; +} + =head3 $object->TO_JSON Returns an unblessed representation of the object, suitable for JSON output. --- a/t/db_dependent/Koha/Object.t +++ a/t/db_dependent/Koha/Object.t @@ -17,7 +17,7 @@ use Modern::Perl; -use Test::More tests => 20; +use Test::More tests => 21; use Test::Exception; use Test::Warn; use DateTime; @@ -867,3 +867,24 @@ subtest 'set_or_blank' => sub { $schema->storage->txn_rollback; }; + +subtest 'messages() and add_message() tests' => sub { + + plan tests => 6; + + my $patron = Koha::Patron->new; + + my @messages = @{ $patron->messages }; + is( scalar @messages, 0, 'No messages' ); + + $patron->add_message({ message => "message_1" }); + $patron->add_message({ message => "message_2" }); + + @messages = @{ $patron->messages }; + + is( scalar @messages, 2, 'Messages are returned' ); + is( ref($messages[0]), 'Koha::Object::Message', 'Right type returned' ); + is( ref($messages[1]), 'Koha::Object::Message', 'Right type returned' ); + is( $messages[0]->message, 'message_1', 'Right message recorded' ); + is( $messages[1]->message, 'message_2', 'Right message recorded' ); +}; --