7 use Test::More tests => 19;
14 use lib $FindBin::Bin;
15 use_ok('C4::Reserves');
18 my $borrowers_count = 5;
20 # Setup Test------------------------
22 diag("Creating biblio instance for testing.");
23 my ($bibnum, $title, $bibitemnum) = create_helper_biblio();
25 # Helper item for that biblio.
26 diag("Creating item instance for testing.");
27 my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => 'CPL', holdingbranch => 'CPL' } , $bibnum);
30 my $dbh = C4::Context->dbh;
31 my $query = "SELECT borrowernumber FROM borrowers LIMIT $borrowers_count";
32 my $sth = $dbh->prepare($query);
35 while ( my $row = $sth->fetchrow_hashref ) {
36 push( @borrowernumbers, $row->{'borrowernumber'} );
39 my $biblionumber = $bibnum;
41 my @branches = GetBranchesLoop();
42 my $branch = $branches[0][0]{value};
44 # Create five item level holds
45 foreach my $borrowernumber ( @borrowernumbers ) {
57 my $checkitem = $itemnumber,
63 my ($count, $reserves) = GetReservesFromBiblionumber($biblionumber);
64 is( $count, $borrowers_count, "Test GetReserves()" );
67 my ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = GetReservesFromItemnumber($itemnumber);
68 ok($reserve_id, "Test GetReservesFromItemnumber()");
71 my ( $reserve ) = GetReservesFromBorrowernumber($borrowernumbers[0]);
72 ok( $reserve->{'borrowernumber'} eq $borrowernumbers[0], "Test GetReservesFromBorrowernumber()");
75 ok( GetReserveCount( $borrowernumbers[0] ), "Test GetReserveCount()" );
78 CancelReserve({ 'reserve_id' => $reserve_id });
79 ($count, $reserves) = GetReservesFromBiblionumber($biblionumber);
80 ok( $count == $borrowers_count - 1, "Test CancelReserve()" );
83 ( $reservedate, $borrowernumber, $branchcode, $reserve_id ) = GetReservesFromItemnumber($itemnumber);
85 reserve_id => $reserve_id,
87 branchcode => $branch,
88 itemnumber => $itemnumber,
89 suspend_until => C4::Dates->new("2013-01-01","iso")->output(),
91 $reserve = GetReserve( $reserve_id );
92 ok( $reserve->{'priority'} eq '4', "Test GetReserve(), priority changed correctly" );
93 ok( $reserve->{'suspend'}, "Test GetReserve(), suspend hold" );
94 ok( $reserve->{'suspend_until'} eq '2013-01-01 00:00:00', "Test GetReserve(), suspend until date" );
96 ToggleSuspend( $reserve_id );
97 $reserve = GetReserve( $reserve_id );
98 ok( !$reserve->{'suspend'}, "Test ToggleSuspend(), no date" );
100 ToggleSuspend( $reserve_id, '2012-01-01' );
101 $reserve = GetReserve( $reserve_id );
102 ok( $reserve->{'suspend_until'} eq '2012-01-01 00:00:00', "Test ToggleSuspend(), with date" );
104 AutoUnsuspendReserves();
105 $reserve = GetReserve( $reserve_id );
106 ok( !$reserve->{'suspend'}, "Test AutoUnsuspendReserves()" );
108 # Add a new hold for the borrower whose hold we canceled earlier, this time at the bib level
113 my $constraint = 'a',
123 ( $reserve ) = GetReservesFromBorrowernumber($borrowernumber);
124 my $reserveid = C4::Reserves::GetReserveId(
126 biblionumber => $biblionumber,
127 borrowernumber => $borrowernumber
130 is( $reserveid, $reserve->{reserve_id}, "Test GetReserveId" );
131 ModReserveMinusPriority( $itemnumber, $reserve->{'reserve_id'} );
132 ( $reserve ) = GetReservesFromBorrowernumber($borrowernumber);
133 ok( $reserve->{'itemnumber'} eq $itemnumber, "Test ModReserveMinusPriority()" );
136 my $reserve2 = GetReserveInfo( $reserve->{'reserve_id'} );
137 ok( $reserve->{'reserve_id'} eq $reserve2->{'reserve_id'}, "Test GetReserveInfo()" );
140 ($count, $reserves) = GetReservesFromBiblionumber($biblionumber,1);
141 $reserve = $reserves->[1];
142 AlterPriority( 'top', $reserve->{'reserve_id'} );
143 $reserve = GetReserve( $reserve->{'reserve_id'} );
144 ok( $reserve->{'priority'} eq '1', "Test AlterPriority(), move to top" );
146 AlterPriority( 'down', $reserve->{'reserve_id'} );
147 $reserve = GetReserve( $reserve->{'reserve_id'} );
148 ok( $reserve->{'priority'} eq '2', "Test AlterPriority(), move down" );
150 AlterPriority( 'up', $reserve->{'reserve_id'} );
151 $reserve = GetReserve( $reserve->{'reserve_id'} );
152 ok( $reserve->{'priority'} eq '1', "Test AlterPriority(), move up" );
154 AlterPriority( 'bottom', $reserve->{'reserve_id'} );
155 $reserve = GetReserve( $reserve->{'reserve_id'} );
156 ok( $reserve->{'priority'} eq '5', "Test AlterPriority(), move to bottom" );
158 # Delete the reserves
159 diag("Deleting holds.");
160 $dbh->do("DELETE FROM reserves WHERE biblionumber = ?", undef, ( $biblionumber ) );
163 diag("Deleting item testing instance.");
164 DelItem($dbh, $bibnum, $itemnumber);
166 # Delete helper Biblio.
167 diag("Deleting biblio testing instance.");
170 # Helper method to set up a Biblio.
171 sub create_helper_biblio {
172 my $bib = MARC::Record->new();
173 my $title = 'Silence in the library';
175 MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
176 MARC::Field->new('245', ' ', ' ', a => $title),
178 return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, '');