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

(-)a/t/db_dependent/GetHiddenItems_PatronCategory.t (-1 / +239 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Copyright (C) 2013  Mark Tompsett
6
#
7
# This Koha test module is intended for Patron Category
8
# tweaks to the OpacHiddenItems system preference.
9
# Related to Bug 10859
10
#
11
# Koha is free software; you can redistribute it and/or modify it
12
# under the terms of the GNU General Public License as published by
13
# the Free Software Foundation; either version 3 of the License, or
14
# (at your option) any later version.
15
#
16
# Koha is distributed in the hope that it will be useful, but
17
# WITHOUT ANY WARRANTY; without even the implied warranty of
18
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
# GNU General Public License for more details.
20
#
21
# You should have received a copy of the GNU General Public License
22
# along with Koha; if not, see <http://www.gnu.org/licenses>.
23
#
24
25
use Modern::Perl;
26
use MARC::Record;
27
use Carp;
28
use C4::Biblio;
29
use C4::Context;
30
use C4::Members;
31
use Test::More tests => 22;
32
33
BEGIN {
34
    use_ok('C4::Items');
35
}
36
37
my $dbh = C4::Context->dbh;
38
# Start transaction
39
$dbh->{AutoCommit} = 0;
40
$dbh->{RaiseError} = 1;
41
42
# Helper biblio.
43
my ($bibnum, $bibitemnum) = get_biblio();
44
45
# Add dummy branches.
46
$dbh->do('INSERT INTO branches (branchcode,branchname) VALUES ("LIB1","LIB1");');
47
$dbh->do('INSERT INTO branches (branchcode,branchname) VALUES ("LIB2","LIB2");');
48
49
# Add dummy patron categories
50
my $sql = "SELECT categorycode FROM categories WHERE categorycode='PT';";
51
my $sth = $dbh->prepare($sql);
52
$sth->execute();
53
my $categorycode = $sth->fetchrow;
54
if (!$categorycode) {
55
    $dbh->do("INSERT INTO categories (categorycode, description) VALUES ('PT','Generic Patron Code');");
56
}
57
58
$sql = "SELECT categorycode FROM categories WHERE categorycode='SS';";
59
$sth = $dbh->prepare($sql);
60
$sth->execute();
61
$categorycode = $sth->fetchrow;
62
if (!$categorycode) {
63
    $dbh->do("INSERT INTO categories (categorycode, description) VALUES ('SS','Sample Staff Code');");
64
}
65
66
$sql = "SELECT categorycode FROM categories WHERE categorycode='SPT';";
67
$sth = $dbh->prepare($sql);
68
$sth->execute();
69
$categorycode = $sth->fetchrow;
70
if (!$categorycode) {
71
    $dbh->do("INSERT INTO categories (categorycode, description) VALUES ('SPT','Sample Patron Code');");
72
}
73
74
# Add same item for two branches.
75
my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'LIB1', holdingbranch => 'LIB1' } , $bibnum);
76
cmp_ok($item_bibnum, '==', $bibnum, "LIB1 Item linked to correct biblionumber.");
77
cmp_ok($item_bibitemnum, '==', $bibitemnum, "LIB1 Item linked to correct biblioitemnumber.");
78
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'LIB2', holdingbranch => 'LIB2' } , $bibnum);
79
cmp_ok($item_bibnum, '==', $bibnum, "LIB2 Item linked to correct biblionumber.");
80
cmp_ok($item_bibitemnum, '==', $bibitemnum, "LIB2 Item linked to correct biblioitemnumber.");
81
82
# Add dummy patron.
83
C4::Context->set_preference('PatronSelfRegistrationDefaultCategory','PT');
84
my %borrower;
85
$borrower{'surname'} = 'Borrower';
86
$borrower{'firstname'} = 'Sample';
87
$borrower{'address'} = '123 Bogus Street';
88
$borrower{'city'} = 'Bogusville';
89
$borrower{'branchcode'} = 'LIB1';
90
$borrower{'categorycode'} = 'PT';
91
$borrower{'zipcode'} = 'H0H 0H0';
92
$borrower{'userid'} = 'Sample.Borrower';
93
$borrower{'email'} = 'santa@northpole.com';
94
$borrower{'phone'} = '967-1111';
95
my ( $borrowernumber, $password ) = C4::Members::AddMember_Opac(%borrower) or
96
                                    croak "AddMember_Opac failed.\n";
97
98
# Get the member's card number.
99
$sql = "SELECT cardnumber FROM borrowers WHERE borrowernumber=?;";
100
$sth = $dbh->prepare($sql);
101
$sth->execute($borrowernumber);
102
my $cardnumber = $sth->fetchrow;
103
104
# Get an array of hashes of Item information.
105
my @all_items = C4::Items::GetItemsInfo($bibnum);
106
107
# Hide everything for this record.
108
C4::Context->set_preference('OpacHiddenItems',"homebranch: [LIB1,LIB2]\n");
109
110
# Check what's hidden when a user isn't logged in.
111
my @items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
112
cmp_ok( scalar @items2hide, '==', 2, "OpacHiddenItems hid everything correctly.");
113
114
# Set up dummy patron as if logged in.
115
my @USERENV = (
116
    $borrowernumber,
117
    'Sample.Borrower',
118
    $cardnumber,
119
    'Sample',
120
    'Borrower',
121
    'LIB1',
122
    'LIB1',
123
    0,
124
);
125
C4::Context->_new_userenv('DUMMY_SESSION_ID');
126
C4::Context->set_userenv( @USERENV );
127
128
# 4 blocks of 4 cases: 'SPT','SS','','SS|SPT'
129
C4::Context->set_preference('PatronSingleBranch','SPT');
130
C4::Context->set_preference('PatronEveryBranch','SPT');
131
$sql = "UPDATE borrowers SET categorycode='SPT' WHERE borrowernumber=?;";
132
$sth = $dbh->prepare($sql);
133
$sth->execute($borrowernumber);
134
135
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
136
cmp_ok( scalar @items2hide, '==', 0, "OpacHiddenItems unhid everything correctly. (SPT,SPT)");
137
138
# PatronSingleBranch toggle
139
C4::Context->set_preference('PatronSingleBranch','SPT');
140
C4::Context->set_preference('PatronEveryBranch','SS');
141
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
142
cmp_ok( scalar @items2hide, '==', 1, "OpacHiddenItems hid LIB2 correctly. (SPT,SS)");
143
144
# PatronSingleBranch toggle
145
C4::Context->set_preference('PatronSingleBranch','SPT');
146
C4::Context->set_preference('PatronEveryBranch','');
147
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
148
cmp_ok( scalar @items2hide, '==', 1, "OpacHiddenItems hid LIB2 correctly. (SPT,'')");
149
150
# PatronSingleBranch toggle
151
C4::Context->set_preference('PatronSingleBranch','SPT');
152
C4::Context->set_preference('PatronEveryBranch','SS|SPT');
153
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
154
cmp_ok( scalar @items2hide, '==', 0, "OpacHiddenItems unhid everything correctly. (SPT,SS|SPT)");
155
156
# PatronSingleBranch toggle
157
C4::Context->set_preference('PatronSingleBranch','SS');
158
C4::Context->set_preference('PatronEveryBranch','SPT');
159
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
160
cmp_ok( scalar @items2hide, '==', 0, "OpacHiddenItems unhid everything correctly. (SS,SPT)");
161
162
# PatronSingleBranch toggle
163
C4::Context->set_preference('PatronSingleBranch','SS');
164
C4::Context->set_preference('PatronEveryBranch','SS');
165
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
166
cmp_ok( scalar @items2hide, '==', 2, "OpacHiddenItems hid everything correctly. (SS,SS)");
167
168
# PatronSingleBranch toggle
169
C4::Context->set_preference('PatronSingleBranch','SS');
170
C4::Context->set_preference('PatronEveryBranch','');
171
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
172
cmp_ok( scalar @items2hide, '==', 2, "OpacHiddenItems hid everything correctly. (SS,'')");
173
174
# PatronSingleBranch toggle
175
C4::Context->set_preference('PatronSingleBranch','SS');
176
C4::Context->set_preference('PatronEveryBranch','SS|SPT');
177
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
178
cmp_ok( scalar @items2hide, '==', 0, "OpacHiddenItems unhid everything correctly. (SS,SS|SPT)");
179
180
# PatronSingleBranch toggle
181
C4::Context->set_preference('PatronSingleBranch','');
182
C4::Context->set_preference('PatronEveryBranch','SPT');
183
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
184
cmp_ok( scalar @items2hide, '==', 0, "OpacHiddenItems unhid everything correctly. ('',SPT)");
185
186
# PatronSingleBranch toggle
187
C4::Context->set_preference('PatronSingleBranch','');
188
C4::Context->set_preference('PatronEveryBranch','SS');
189
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
190
cmp_ok( scalar @items2hide, '==', 2, "OpacHiddenItems hid everything correctly. ('',SS)");
191
192
# PatronSingleBranch toggle
193
C4::Context->set_preference('PatronSingleBranch','');
194
C4::Context->set_preference('PatronEveryBranch','');
195
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
196
cmp_ok( scalar @items2hide, '==', 2, "OpacHiddenItems hid everything correctly. ('','')");
197
198
# PatronSingleBranch toggle
199
C4::Context->set_preference('PatronSingleBranch','');
200
C4::Context->set_preference('PatronEveryBranch','SS|SPT');
201
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
202
cmp_ok( scalar @items2hide, '==', 0, "OpacHiddenItems unhid everything correctly. ('',SS|SPT)");
203
204
# PatronSingleBranch toggle
205
C4::Context->set_preference('PatronSingleBranch','SS|SPT');
206
C4::Context->set_preference('PatronEveryBranch','SPT');
207
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
208
cmp_ok( scalar @items2hide, '==', 0, "OpacHiddenItems unhid everything correctly. (SS|SPT,SPT)");
209
210
# PatronSingleBranch toggle
211
C4::Context->set_preference('PatronSingleBranch','SS|SPT');
212
C4::Context->set_preference('PatronEveryBranch','SS');
213
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
214
cmp_ok( scalar @items2hide, '==', 1, "OpacHiddenItems hid LIB2 correctly. (SS|SPT,SS)");
215
216
# PatronSingleBranch toggle
217
C4::Context->set_preference('PatronSingleBranch','SS|SPT');
218
C4::Context->set_preference('PatronEveryBranch','');
219
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
220
cmp_ok( scalar @items2hide, '==', 1, "OpacHiddenItems hid LIB2 correctly. (SS|SPT,'')");
221
222
# PatronSingleBranch toggle
223
C4::Context->set_preference('PatronSingleBranch','SS|SPT');
224
C4::Context->set_preference('PatronEveryBranch','SS|SPT');
225
@items2hide = C4::Items::GetHiddenItemnumbers(@all_items);
226
cmp_ok( scalar @items2hide, '==', 0, "OpacHiddenItems unhid everything correctly. (SS|SPT,SS|SPT)");
227
228
# Nothing wrong with being explicit. :)
229
$dbh->rollback();
230
231
# Helper method to set up a Biblio.
232
sub get_biblio {
233
    my $bib = MARC::Record->new();
234
    $bib->append_fields(
235
        MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
236
        MARC::Field->new('245', ' ', ' ', a => 'Silence in the library'),
237
    );
238
    return ($bibnum, $bibitemnum) = AddBiblio($bib, '');
239
}

Return to bug 10895