Bug 21798: Unify the creation of bibliographic record in tests
[koha.git] / t / Koha / Exceptions.t
1 #!/usr/bin/perl
2
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 3 of the License, or
8 # (at your option) any later version.
9 #
10 # Koha is distributed in the hope that it will be useful, but
11 # WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with Koha; if not, see <http://www.gnu.org/licenses>.
17
18 use Modern::Perl;
19
20 use Test::More tests => 3;
21 use Test::Exception;
22
23 subtest 'Koha::Exceptions::Hold tests' => sub {
24
25     plan tests => 5;
26
27     use_ok('Koha::Exceptions::Hold');
28
29     throws_ok
30         { Koha::Exceptions::Hold::CannotSuspendFound->throw( status => 'W' ); }
31         'Koha::Exceptions::Hold::CannotSuspendFound',
32         'Exception is thrown :-D';
33
34     # stringify the exception
35     is( "$@", 'Found hold cannot be suspended. Status=W', 'Exception stringified correctly' );
36
37     throws_ok
38         { Koha::Exceptions::Hold::CannotSuspendFound->throw( "Manual message exception" ) }
39         'Koha::Exceptions::Hold::CannotSuspendFound',
40         'Exception is thrown :-D';
41     is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
42 };
43
44 subtest 'Koha::Exceptions::Object::FKConstraint tests' => sub {
45
46     plan tests => 9;
47
48     use_ok('Koha::Exceptions::Object');
49
50     throws_ok
51         { Koha::Exceptions::Object::FKConstraint->throw( broken_fk => 'nasty', value => 'fk' ); }
52         'Koha::Exceptions::Object::FKConstraint',
53         'Exception is thrown :-D';
54
55     # stringify the exception
56     is( "$@", 'Invalid parameter passed, nasty=fk does not exist', 'Exception stringified correctly' );
57
58     throws_ok
59         { Koha::Exceptions::Object::FKConstraint->throw( "Manual message exception" ) }
60         'Koha::Exceptions::Object::FKConstraint',
61         'Exception is thrown :-D';
62     is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
63
64     throws_ok {
65         Koha::Exceptions::Object::BadValue->throw(
66             type     => 'datetime',
67             property => 'a_property',
68             value    => 'a_value'
69         );
70     }
71     'Koha::Exceptions::Object::BadValue',
72         'Koha::Exceptions::Object::BadValue exception is thrown :-D';
73
74     # stringify the exception
75     is( "$@", 'Invalid value passed, a_property=a_value expected type is datetime', 'Koha::Exceptions::Object::BadValue stringified correctly' );
76
77     throws_ok
78         { Koha::Exceptions::Object::BadValue->throw( "Manual message exception" ) }
79         'Koha::Exceptions::Object::BadValue',
80         'Koha::Exceptions::Object::BadValue is thrown :-D';
81     is( "$@", 'Manual message exception', 'Koha::Exceptions::Object::BadValue not stringified if manually passed' );
82 };
83
84 subtest 'Koha::Exceptions::Password tests' => sub {
85
86     plan tests => 5;
87
88     use_ok('Koha::Exceptions::Password');
89
90     throws_ok
91         { Koha::Exceptions::Password::TooShort->throw( length => 4, min_length => 5 ); }
92         'Koha::Exceptions::Password::TooShort',
93         'Exception is thrown :-D';
94
95     # stringify the exception
96     is( "$@", 'Password length (4) is shorter than required (5)', 'Exception stringified correctly' );
97
98     throws_ok
99         { Koha::Exceptions::Password::TooShort->throw( "Manual message exception" ) }
100         'Koha::Exceptions::Password::TooShort',
101         'Exception is thrown :-D';
102     is( "$@", 'Manual message exception', 'Exception not stringified if manually passed' );
103 };