Bug 34887: Remove Test::DBIx::Class from Patron.t
[koha.git] / t / Patron.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::Warn;
22 use t::lib::Mocks;
23 use t::lib::TestBuilder;
24
25 use_ok('Koha::Object');
26 use_ok('Koha::Patron');
27
28 use Koha::Database;
29
30 my $schema  = Koha::Database->new->schema;
31 my $builder = t::lib::TestBuilder->new;
32
33 subtest 'Accessor tests' => sub {
34     plan tests => 9;
35     $schema->storage->txn_begin;
36
37     my $object = Koha::Patron->new( { surname => 'Test Patron' } );
38     is( $object->surname(), 'Test Patron', "Accessor returns correct value" );
39     $object->surname('Test Patron Surname');
40     is( $object->surname(), 'Test Patron Surname', "Accessor returns correct value after set" );
41
42     my $object2 = Koha::Patron->new( { surname => 'Test Patron 2' } );
43     is( $object2->surname(), 'Test Patron 2', "Accessor returns correct value" );
44     $object2->surname('Test Patron Surname 2');
45     is( $object2->surname(), 'Test Patron Surname 2', "Accessor returns correct value after set" );
46
47     my $ret;
48     $ret = $object2->set( { surname => "Test Patron Surname 3", firstname => "Test Firstname" } );
49     ok( ref($ret) eq 'Koha::Patron', "Set returns object on success" );
50     is( $object2->surname(),   "Test Patron Surname 3", "Set sets first field correctly" );
51     is( $object2->firstname(), "Test Firstname",          "Set sets second field correctly" );
52
53     our $patron = Koha::Patron->new(
54         {
55             borrowernumber      => '12345',
56             cardnumber          => '1234567890',
57             surname             => 'mySurname',
58             firstname           => 'myFirstname',
59             title               => 'Mr.',
60             othernames          => 'myOthernames',
61             initials            => 'MM',
62             streetnumber        => '100',
63             streettype          => 'Blvd',
64             address             => 'my personnal address',
65             address2            => 'my adress2',
66             city                => 'Marseille',
67             state               => 'mystate',
68             zipcode             => '13006',
69             country             => 'France',
70             email               => 'mySurname.myFirstname@email.com',
71             phone               => '0402872934',
72             mobile              => '0627884632',
73             fax                 => '0402872935',
74             emailpro            => 'myEmailPro@email.com',
75             phonepro            => '0402873334',
76             B_streetnumber      => '101',
77             B_streettype        => 'myB_streettype',
78             B_address           => 'myB_address',
79             B_address2          => 'myB_address2',
80             B_city              => 'myB_city',
81             B_state             => 'myB_state',
82             B_zipcode           => '23456',
83             B_country           => 'myB_country',
84             B_email             => 'myB_email',
85             B_phone             => '0678353935',
86             dateofbirth         => '1990-07-16',
87             branchcode          => 'myBranCode',
88             categorycode        => 'myCatCode',
89             dateenrolled        => '2015-03-19',
90             dateexpiry          => '2016-03-19',
91             gonenoaddress       => '0',
92             lost                => '0',
93             debarred            => '2015-04-19',
94             debarredcomment     => 'You are debarred',
95             borrowernotes       => 'borrowernotes',
96             sex                 => 'M',
97             password            => 'hfkurhfe976634èj!',
98             flags               => '55555',
99             userid              => '87987',
100             opacnote            => 'myOpacnote',
101             contactnote         => 'myContactnote',
102             sort1               => 'mySort1',
103             sort2               => 'mySort2',
104             altcontactfirstname => 'myAltcontactfirstname',
105             altcontactsurname   => 'myAltcontactsurname',
106             altcontactaddress1  => 'myAltcontactaddress1',
107             altcontactaddress2  => 'myAltcontactaddress2',
108             altcontactaddress3  => 'myAltcontactaddress3',
109             altcontactstate     => 'myAltcontactstate',
110             altcontactzipcode   => '465843',
111             altcontactcountry   => 'myOtherCountry',
112             altcontactphone     => 'myOtherphone',
113             smsalertnumber      => '0683027346',
114             privacy             => '667788',
115         }
116     );
117
118     subtest 'Accessor tests after new' => sub {
119         plan tests => 60;
120         is( $patron->borrowernumber, '12345',                           'borrowernumber accessor returns correct value' );
121         is( $patron->cardnumber,     '1234567890',                      'cardnumber accessor returns correct value' );
122         is( $patron->surname,        'mySurname',                       'surname accessor returns correct value' );
123         is( $patron->firstname,      'myFirstname',                     'firstname accessor returns correct value' );
124         is( $patron->title,          'Mr.',                             'title accessor returns correct value' );
125         is( $patron->othernames,     'myOthernames',                    'othernames accessor returns correct value' );
126         is( $patron->initials,       'MM',                              'initials accessor returns correct value' );
127         is( $patron->streetnumber,   '100',                             'streetnumber accessor returns correct value' );
128         is( $patron->streettype,     'Blvd',                            'streettype accessor returns correct value' );
129         is( $patron->address,        'my personnal address',            'address accessor returns correct value' );
130         is( $patron->address2,       'my adress2',                      'address2 accessor returns correct value' );
131         is( $patron->city,           'Marseille',                       'city accessor returns correct value' );
132         is( $patron->state,          'mystate',                         'state accessor returns correct value' );
133         is( $patron->zipcode,        '13006',                           'zipcode accessor returns correct value' );
134         is( $patron->country,        'France',                          'country accessor returns correct value' );
135         is( $patron->email,          'mySurname.myFirstname@email.com', 'email accessor returns correct value' );
136         is( $patron->phone,          '0402872934',                      'phone accessor returns correct value' );
137         is( $patron->mobile,         '0627884632',                      'mobile accessor returns correct value' );
138         is( $patron->fax,            '0402872935',                      'fax accessor returns correct value' );
139         is( $patron->emailpro,       'myEmailPro@email.com',            'emailpro accessor returns correct value' );
140         is( $patron->phonepro,       '0402873334',                      'phonepro accessor returns correct value' );
141         is( $patron->B_streetnumber, '101',                             'B_streetnumber accessor returns correct value' );
142         is( $patron->B_streettype,   'myB_streettype',                  'B_streettype accessor returns correct value' );
143         is( $patron->B_address,      'myB_address',                     'B_address accessor returns correct value' );
144         is( $patron->B_address2,     'myB_address2',                    'B_address2 accessor returns correct value' );
145         is( $patron->B_city,         'myB_city',                        'B_city accessor returns correct value' );
146         is( $patron->B_state,        'myB_state',                       'B_state accessor returns correct value' );
147         is( $patron->B_zipcode,      '23456',                           'B_zipcode accessor returns correct value' );
148         is( $patron->B_country,      'myB_country',                     'B_country accessor returns correct value' );
149         is( $patron->B_email,        'myB_email',                       'B_email accessor returns correct value' );
150         is( $patron->B_phone,        '0678353935',                      'B_phone accessor returns correct value' );
151         is( $patron->dateofbirth,    '1990-07-16',                      'dateofbirth accessor returns correct value' );
152         is( $patron->branchcode,     'myBranCode',                      'branchcode accessor returns correct value' );
153         is( $patron->categorycode,   'myCatCode',                       'categorycode accessor returns correct value' );
154         is( $patron->dateenrolled,   '2015-03-19',                      'dateenrolled accessor returns correct value' );
155         is( $patron->dateexpiry,     '2016-03-19',                      'dateexpiry accessor returns correct value' );
156         is( $patron->gonenoaddress,  '0',                               'gonenoaddress accessor returns correct value' );
157         is( $patron->lost,           '0',                               'lost accessor returns correct value' );
158         is( $patron->debarred,       '2015-04-19',                      'debarred accessor returns correct value' );
159         is( $patron->debarredcomment,     'You are debarred',      'debarredcomment accessor returns correct value' );
160         is( $patron->borrowernotes,       'borrowernotes',         'borrowernotes accessor returns correct value' );
161         is( $patron->sex,                 'M',                     'sex accessor returns correct value' );
162         is( $patron->password,            'hfkurhfe976634èj!',    'password accessor returns correct value' );
163         is( $patron->flags,               '55555',                 'flags accessor returns correct value' );
164         is( $patron->userid,              '87987',                 'userid accessor returns correct value' );
165         is( $patron->opacnote,            'myOpacnote',            'opacnote accessor returns correct value' );
166         is( $patron->contactnote,         'myContactnote',         'contactnote accessor returns correct value' );
167         is( $patron->sort1,               'mySort1',               'sort1 accessor returns correct value' );
168         is( $patron->sort2,               'mySort2',               'sort2 accessor returns correct value' );
169         is( $patron->altcontactfirstname, 'myAltcontactfirstname', 'altcontactfirstname accessor returns correct value' );
170         is( $patron->altcontactsurname,   'myAltcontactsurname',   'altcontactsurname accessor returns correct value' );
171         is( $patron->altcontactaddress1,  'myAltcontactaddress1',  'altcontactaddress1 accessor returns correct value' );
172         is( $patron->altcontactaddress2,  'myAltcontactaddress2',  'altcontactaddress2 accessor returns correct value' );
173         is( $patron->altcontactaddress3,  'myAltcontactaddress3',  'altcontactaddress3 accessor returns correct value' );
174         is( $patron->altcontactstate,     'myAltcontactstate',     'altcontactstate accessor returns correct value' );
175         is( $patron->altcontactzipcode,   '465843',                'altcontactzipcode accessor returns correct value' );
176         is( $patron->altcontactcountry,   'myOtherCountry',        'altcontactcountry accessor returns correct value' );
177         is( $patron->altcontactphone,     'myOtherphone',          'altcontactphone accessor returns correct value' );
178         is( $patron->smsalertnumber,      '0683027346',            'smsalertnumber accessor returns correct value' );
179         is( $patron->privacy,             '667788',                'privacy accessor returns correct value' );
180     };
181
182     subtest 'Accessor tests after set' => sub {
183         plan tests => 60;
184
185         $patron->set(
186             {
187                 borrowernumber      => '12346',
188                 cardnumber          => '1234567891',
189                 surname             => 'SmySurname',
190                 firstname           => 'SmyFirstname',
191                 title               => 'Mme.',
192                 othernames          => 'SmyOthernames',
193                 initials            => 'SS',
194                 streetnumber        => '200',
195                 streettype          => 'Rue',
196                 address             => 'Smy personnal address',
197                 address2            => 'Smy adress2',
198                 city                => 'Lyon',
199                 state               => 'Smystate',
200                 zipcode             => '69000',
201                 country             => 'France',
202                 email               => 'SmySurname.myFirstname@email.com',
203                 phone               => '0402872935',
204                 mobile              => '0627884633',
205                 fax                 => '0402872936',
206                 emailpro            => 'SmyEmailPro@email.com',
207                 phonepro            => '0402873335',
208                 B_streetnumber      => '102',
209                 B_streettype        => 'SmyB_streettype',
210                 B_address           => 'SmyB_address',
211                 B_address2          => 'SmyB_address2',
212                 B_city              => 'SmyB_city',
213                 B_state             => 'SmyB_state',
214                 B_zipcode           => '12333',
215                 B_country           => 'SmyB_country',
216                 B_email             => 'SmyB_email',
217                 B_phone             => '0678353936',
218                 dateofbirth         => '1991-07-16',
219                 branchcode          => 'SmyBranCode',
220                 categorycode        => 'SmyCatCode',
221                 dateenrolled        => '2014-03-19',
222                 dateexpiry          => '2017-03-19',
223                 gonenoaddress       => '1',
224                 lost                => '1',
225                 debarred            => '2016-04-19',
226                 debarredcomment     => 'You are still debarred',
227                 borrowernotes       => 'Sborrowernotes',
228                 sex                 => 'F',
229                 password            => 'zerzerzer#',
230                 flags               => '666666',
231                 userid              => '98233',
232                 opacnote            => 'SmyOpacnote',
233                 contactnote         => 'SmyContactnote',
234                 sort1               => 'SmySort1',
235                 sort2               => 'SmySort2',
236                 altcontactfirstname => 'SmyAltcontactfirstname',
237                 altcontactsurname   => 'SmyAltcontactsurname',
238                 altcontactaddress1  => 'SmyAltcontactaddress1',
239                 altcontactaddress2  => 'SmyAltcontactaddress2',
240                 altcontactaddress3  => 'SmyAltcontactaddress3',
241                 altcontactstate     => 'SmyAltcontactstate',
242                 altcontactzipcode   => '565843',
243                 altcontactcountry   => 'SmyOtherCountry',
244                 altcontactphone     => 'SmyOtherphone',
245                 smsalertnumber      => '0683027347',
246                 privacy             => '667789'
247             }
248         );
249
250         is( $patron->borrowernumber,      '12346',                            'borrowernumber field set ok' );
251         is( $patron->cardnumber,          '1234567891',                       'cardnumber field set ok' );
252         is( $patron->surname,             'SmySurname',                       'surname field set ok' );
253         is( $patron->firstname,           'SmyFirstname',                     'firstname field set ok' );
254         is( $patron->title,               'Mme.',                             'title field set ok' );
255         is( $patron->othernames,          'SmyOthernames',                    'othernames field set ok' );
256         is( $patron->initials,            'SS',                               'initials field set ok' );
257         is( $patron->streetnumber,        '200',                              'streetnumber field set ok' );
258         is( $patron->streettype,          'Rue',                              'streettype field set ok' );
259         is( $patron->address,             'Smy personnal address',            'address field set ok' );
260         is( $patron->address2,            'Smy adress2',                      'address2 field set ok' );
261         is( $patron->city,                'Lyon',                             'city field set ok' );
262         is( $patron->state,               'Smystate',                         'state field set ok' );
263         is( $patron->zipcode,             '69000',                            'zipcode field set ok' );
264         is( $patron->country,             'France',                           'country field set ok' );
265         is( $patron->email,               'SmySurname.myFirstname@email.com', 'email field set ok' );
266         is( $patron->phone,               '0402872935',                       'phone field set ok' );
267         is( $patron->mobile,              '0627884633',                       'mobile field set ok' );
268         is( $patron->fax,                 '0402872936',                       'fax field set ok' );
269         is( $patron->emailpro,            'SmyEmailPro@email.com',            'emailpro field set ok' );
270         is( $patron->phonepro,            '0402873335',                       'phonepro field set ok' );
271         is( $patron->B_streetnumber,      '102',                              'B_streetnumber field set ok' );
272         is( $patron->B_streettype,        'SmyB_streettype',                  'B_streettype field set ok' );
273         is( $patron->B_address,           'SmyB_address',                     'B_address field set ok' );
274         is( $patron->B_address2,          'SmyB_address2',                    'B_address2 field set ok' );
275         is( $patron->B_city,              'SmyB_city',                        'B_city field set ok' );
276         is( $patron->B_state,             'SmyB_state',                       'B_state field set ok' );
277         is( $patron->B_zipcode,           '12333',                            'B_zipcode field set ok' );
278         is( $patron->B_country,           'SmyB_country',                     'B_country field set ok' );
279         is( $patron->B_email,             'SmyB_email',                       'B_email field set ok' );
280         is( $patron->B_phone,             '0678353936',                       'B_phone field set ok' );
281         is( $patron->dateofbirth,         '1991-07-16',                       'dateofbirth field set ok' );
282         is( $patron->branchcode,          'SmyBranCode',                      'branchcode field set ok' );
283         is( $patron->categorycode,        'SmyCatCode',                       'categorycode field set ok' );
284         is( $patron->dateenrolled,        '2014-03-19',                       'dateenrolled field set ok' );
285         is( $patron->dateexpiry,          '2017-03-19',                       'dateexpiry field set ok' );
286         is( $patron->gonenoaddress,       '1',                                'gonenoaddress field set ok' );
287         is( $patron->lost,                '1',                                'lost field set ok' );
288         is( $patron->debarred,            '2016-04-19',                       'debarred field set ok' );
289         is( $patron->debarredcomment,     'You are still debarred',           'debarredcomment field set ok' );
290         is( $patron->borrowernotes,       'Sborrowernotes',                   'borrowernotes field set ok' );
291         is( $patron->sex,                 'F',                                'sex field set ok' );
292         is( $patron->password,            'zerzerzer#',                       'password field set ok' );
293         is( $patron->flags,               '666666',                           'flags field set ok' );
294         is( $patron->userid,              '98233',                            'userid field set ok' );
295         is( $patron->opacnote,            'SmyOpacnote',                      'opacnote field set ok' );
296         is( $patron->contactnote,         'SmyContactnote',                   'contactnote field set ok' );
297         is( $patron->sort1,               'SmySort1',                         'sort1 field set ok' );
298         is( $patron->sort2,               'SmySort2',                         'sort2 field set ok' );
299         is( $patron->altcontactfirstname, 'SmyAltcontactfirstname',           'altcontactfirstname field set ok' );
300         is( $patron->altcontactsurname,   'SmyAltcontactsurname',             'altcontactsurname field set ok' );
301         is( $patron->altcontactaddress1,  'SmyAltcontactaddress1',            'altcontactaddress1 field set ok' );
302         is( $patron->altcontactaddress2,  'SmyAltcontactaddress2',            'altcontactaddress2 field set ok' );
303         is( $patron->altcontactaddress3,  'SmyAltcontactaddress3',            'altcontactaddress3 field set ok' );
304         is( $patron->altcontactstate,     'SmyAltcontactstate',               'altcontactstate field set ok' );
305         is( $patron->altcontactzipcode,   '565843',                           'altcontactzipcode field set ok' );
306         is( $patron->altcontactcountry,   'SmyOtherCountry',                  'altcontactcountry field set ok' );
307         is( $patron->altcontactphone,     'SmyOtherphone',                    'altcontactphone field set ok' );
308         is( $patron->smsalertnumber,      '0683027347',                       'smsalertnumber field set ok' );
309         is( $patron->privacy,             '667789',                           'privacy field set ok' );
310     };
311
312     $schema->storage->txn_rollback;
313 };