Lines 12-18
use C4::Context;
Link Here
|
12 |
|
12 |
|
13 |
use Data::Dumper; |
13 |
use Data::Dumper; |
14 |
|
14 |
|
15 |
use Test::More tests => 17; |
15 |
use Test::More tests => 20; |
16 |
|
16 |
|
17 |
|
17 |
|
18 |
use C4::Branch; |
18 |
use C4::Branch; |
Lines 159-164
ok(
Link Here
|
159 |
# Cleanup |
159 |
# Cleanup |
160 |
$dbh->rollback; |
160 |
$dbh->rollback; |
161 |
|
161 |
|
|
|
162 |
### Test holds queue builder does not violate holds policy ### |
163 |
|
164 |
# Clear out existing rules relating to holdallowed |
165 |
$dbh->do("DELETE FROM default_branch_circ_rules"); |
166 |
$dbh->do("DELETE FROM default_branch_item_rules"); |
167 |
$dbh->do("DELETE FROM default_circ_rules"); |
168 |
|
169 |
C4::Context->set_preference('UseTransportCostMatrix', 0); |
170 |
|
171 |
my @branchcodes = keys %$branches; |
172 |
( $itemtype ) = @{ $dbh->selectrow_arrayref("SELECT itemtype FROM itemtypes LIMIT 1") }; |
173 |
|
174 |
my $borrowernumber1 = AddMember( |
175 |
( |
176 |
cardnumber => 'CARDNUMBER1', |
177 |
firstname => 'Firstname', |
178 |
surname => 'Surname', |
179 |
categorycode => 'S', |
180 |
branchcode => $branchcodes[0], |
181 |
) |
182 |
); |
183 |
my $borrowernumber2 = AddMember( |
184 |
( |
185 |
cardnumber => 'CARDNUMBER2', |
186 |
firstname => 'Firstname', |
187 |
surname => 'Surname', |
188 |
categorycode => 'S', |
189 |
branchcode => $branchcodes[1], |
190 |
) |
191 |
); |
192 |
my $borrowernumber3 = AddMember( |
193 |
( |
194 |
cardnumber => 'CARDNUMBER3', |
195 |
firstname => 'Firstname', |
196 |
surname => 'Surname', |
197 |
categorycode => 'S', |
198 |
branchcode => $branchcodes[2], |
199 |
) |
200 |
); |
201 |
my $borrower1 = GetMember( borrowernumber => $borrowernumber1 ); |
202 |
my $borrower2 = GetMember( borrowernumber => $borrowernumber2 ); |
203 |
my $borrower3 = GetMember( borrowernumber => $borrowernumber3 ); |
204 |
|
205 |
$dbh->do(qq{ |
206 |
INSERT INTO biblio ( |
207 |
frameworkcode, |
208 |
author, |
209 |
title, |
210 |
datecreated |
211 |
) VALUES ( |
212 |
'SER', |
213 |
'Koha test', |
214 |
'$TITLE', |
215 |
'2011-02-01' |
216 |
) |
217 |
}); |
218 |
$biblionumber = $dbh->selectrow_array("SELECT biblionumber FROM biblio WHERE title = '$TITLE'") |
219 |
or BAIL_OUT("Cannot find newly created biblio record"); |
220 |
|
221 |
$dbh->do(qq{ |
222 |
INSERT INTO biblioitems ( |
223 |
biblionumber, |
224 |
marcxml, |
225 |
itemtype |
226 |
) VALUES ( |
227 |
$biblionumber, |
228 |
'', |
229 |
'$itemtype' |
230 |
) |
231 |
}); |
232 |
$biblioitemnumber = $dbh->selectrow_array("SELECT biblioitemnumber FROM biblioitems WHERE biblionumber = $biblionumber") |
233 |
or BAIL_OUT("Cannot find newly created biblioitems record"); |
234 |
|
235 |
$items_insert_sth = $dbh->prepare(qq{ |
236 |
INSERT INTO items ( |
237 |
biblionumber, |
238 |
biblioitemnumber, |
239 |
barcode, |
240 |
homebranch, |
241 |
holdingbranch, |
242 |
notforloan, |
243 |
damaged, |
244 |
itemlost, |
245 |
withdrawn, |
246 |
onloan, |
247 |
itype |
248 |
) VALUES ( |
249 |
$biblionumber, |
250 |
$biblioitemnumber, |
251 |
?, |
252 |
?, |
253 |
?, |
254 |
0, |
255 |
0, |
256 |
0, |
257 |
0, |
258 |
NULL, |
259 |
'$itemtype' |
260 |
) |
261 |
}); |
262 |
# Create 3 items from 2 branches ( branches are for borrowers 1 and 2 respectively ) |
263 |
$barcode = int( rand(1000000000000) ); |
264 |
$items_insert_sth->execute( $barcode + 0, $branchcodes[0], $branchcodes[0] ); |
265 |
$items_insert_sth->execute( $barcode + 1, $branchcodes[1], $branchcodes[1] ); |
266 |
$items_insert_sth->execute( $barcode + 2, $branchcodes[1], $branchcodes[1] ); |
267 |
|
268 |
$dbh->do("DELETE FROM reserves"); |
269 |
my $sth = $dbh->prepare(q{ |
270 |
INSERT INTO reserves ( |
271 |
borrowernumber, |
272 |
biblionumber, |
273 |
branchcode, |
274 |
priority, |
275 |
reservedate |
276 |
) VALUES ( ?,?,?,?, CURRENT_DATE() ) |
277 |
}); |
278 |
$sth->execute( $borrower1->{borrowernumber}, $biblionumber, $branchcodes[0], 1 ); |
279 |
$sth->execute( $borrower2->{borrowernumber}, $biblionumber, $branchcodes[0], 2 ); |
280 |
$sth->execute( $borrower3->{borrowernumber}, $biblionumber, $branchcodes[0], 3 ); |
281 |
#warn "RESERVES" . Data::Dumper::Dumper( $dbh->selectall_arrayref("SELECT * FROM reserves", { Slice => {} }) ); |
282 |
#warn "ITEMS: " . Data::Dumper::Dumper( $dbh->selectall_arrayref("SELECT * FROM items WHERE biblionumber = $biblionumber", { Slice => {} }) ); |
283 |
|
284 |
my $holds_queue; |
285 |
|
286 |
$dbh->do("DELETE FROM default_circ_rules"); |
287 |
$dbh->do("INSERT INTO default_circ_rules ( holdallowed ) VALUES ( 1 )"); |
288 |
C4::HoldsQueue::CreateQueue(); |
289 |
$holds_queue = $dbh->selectall_arrayref("SELECT * FROM tmp_holdsqueue", { Slice => {} }); |
290 |
ok( @$holds_queue == 1, "Holds queue filling correct number for default holds policy 'from home library'" ); |
291 |
ok( $holds_queue->[0]->{cardnumber} eq 'CARDNUMBER1', "Holds queue filling correct hold for default holds policy 'from home library'"); |
292 |
|
293 |
$dbh->do("DELETE FROM default_circ_rules"); |
294 |
$dbh->do("INSERT INTO default_circ_rules ( holdallowed ) VALUES ( 2 )"); |
295 |
C4::HoldsQueue::CreateQueue(); |
296 |
$holds_queue = $dbh->selectall_arrayref("SELECT * FROM tmp_holdsqueue", { Slice => {} }); |
297 |
ok( @$holds_queue == 3, "Holds queue filling correct number for holds for default holds policy 'from any library'" ); |
298 |
#warn "HOLDS QUEUE: " . Data::Dumper::Dumper( $holds_queue ); |
299 |
|
300 |
# Cleanup |
301 |
$dbh->rollback; |
302 |
|
303 |
### END Test holds queue builder does not violate holds policy ### |
304 |
|
162 |
sub test_queue { |
305 |
sub test_queue { |
163 |
my ($test_name, $use_cost_matrix, $pick_branch, $hold_branch) = @_; |
306 |
my ($test_name, $use_cost_matrix, $pick_branch, $hold_branch) = @_; |
164 |
|
307 |
|
165 |
- |
|
|