View | Details | Raw Unified | Return to bug 22194
Collapse All | Expand All

(-)a/Koha/Exceptions/Metadata.pm (+69 lines)
Line 0 Link Here
1
package Koha::Exceptions::Metadata;
2
3
# This file is part of Koha.
4
#
5
# Koha is free software; you can redistribute it and/or modify it under the
6
# terms of the GNU General Public License as published by the Free Software
7
# Foundation; either version 3 of the License, or (at your option) any later
8
# version.
9
#
10
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12
# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
13
#
14
# You should have received a copy of the GNU General Public License along
15
# with Koha; if not, write to the Free Software Foundation, Inc.,
16
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18
use Modern::Perl;
19
20
use Exception::Class (
21
22
    'Koha::Exceptions::Metadata' => {
23
        description => 'Something went wrong!',
24
    },
25
    'Koha::Exceptions::Metadata::Invalid' => {
26
        isa => 'Koha::Exceptions::Metadata',
27
        description => 'Invalid data',
28
        fields => ['id','format','schema']
29
    }
30
);
31
32
sub full_message {
33
    my $self = shift;
34
35
    my $msg = $self->message;
36
37
    unless ($msg) {
38
        if ( $self->isa('Koha::Exceptions::Metadata::Invalid') ) {
39
            $msg = sprintf( "Invalid data, cannot decode object (id=%s, format=%s, schema=%s)",
40
                $self->id, $self->format, $self->schema );
41
        }
42
    }
43
44
    return $msg;
45
}
46
47
=head1 NAME
48
49
Koha::Exceptions::Metadata - Base class for metadata exceptions
50
51
=head1 Exceptions
52
53
=head2 Koha::Exceptions::Metadata
54
55
Generic metadata exception
56
57
=head2 Koha::Exceptions::Metadata::Invalid
58
59
The metadata is invalid.
60
61
=head1 Class methods
62
63
=head2 full_message
64
65
Overloaded method for exception stringifying.
66
67
=cut
68
69
1;
(-)a/t/Koha/Exceptions.t (-2 / +28 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 2;
20
use Test::More tests => 3;
21
use Test::MockObject;
21
use Test::Exception;
22
use Test::Exception;
22
23
23
subtest 'Koha::Exceptions::Object::FKConstraint tests' => sub {
24
subtest 'Koha::Exceptions::Object::FKConstraint tests' => sub {
Lines 61-63 subtest 'Koha::Exceptions::Password tests' => sub { Link Here
61
        'Exception is thrown :-D';
62
        'Exception is thrown :-D';
62
    is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
63
    is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
63
};
64
};
64
- 
65
66
subtest 'Koha::Exceptions::Metadata tests' => sub {
67
68
    plan tests => 5;
69
70
    use_ok('Koha::Exceptions::Metadata');
71
72
    my $object = Test::MockObject->new;
73
    $object->mock( 'id', 'an_id' );
74
    $object->mock( 'format', 'a_format' );
75
    $object->mock( 'schema', 'a_schema' );
76
77
    throws_ok
78
        { Koha::Exceptions::Metadata::Invalid->throw( id => 'an_id', format => 'a_format', schema => 'a_schema' ); }
79
        'Koha::Exceptions::Metadata::Invalid',
80
        'Exception is thrown :-D';
81
82
    # stringify the exception
83
    is( "$@", 'Invalid data, cannot decode object (id=an_id, format=a_format, schema=a_schema)', 'Exception stringified correctly' );
84
85
    throws_ok
86
        { Koha::Exceptions::Metadata::Invalid->throw( "Manual message exception" ) }
87
        'Koha::Exceptions::Metadata::Invalid',
88
        'Exception is thrown :-D';
89
    is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
90
};

Return to bug 22194