7 use Test::More tests => 18;
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 ModReserveMinusPriority( $itemnumber, $reserve->{'reserve_id'} );
125 ( $reserve ) = GetReservesFromBorrowernumber($borrowernumber);
126 ok( $reserve->{'itemnumber'} eq $itemnumber, "Test ModReserveMinusPriority()" );
129 my $reserve2 = GetReserveInfo( $reserve->{'reserve_id'} );
130 ok( $reserve->{'reserve_id'} eq $reserve2->{'reserve_id'}, "Test GetReserveInfo()" );
133 ($count, $reserves) = GetReservesFromBiblionumber($biblionumber,1);
134 $reserve = $reserves->[1];
135 AlterPriority( 'top', $reserve->{'reserve_id'} );
136 $reserve = GetReserve( $reserve->{'reserve_id'} );
137 ok( $reserve->{'priority'} eq '1', "Test AlterPriority(), move to top" );
139 AlterPriority( 'down', $reserve->{'reserve_id'} );
140 $reserve = GetReserve( $reserve->{'reserve_id'} );
141 ok( $reserve->{'priority'} eq '2', "Test AlterPriority(), move down" );
143 AlterPriority( 'up', $reserve->{'reserve_id'} );
144 $reserve = GetReserve( $reserve->{'reserve_id'} );
145 ok( $reserve->{'priority'} eq '1', "Test AlterPriority(), move up" );
147 AlterPriority( 'bottom', $reserve->{'reserve_id'} );
148 $reserve = GetReserve( $reserve->{'reserve_id'} );
149 ok( $reserve->{'priority'} eq '5', "Test AlterPriority(), move to bottom" );
151 # Delete the reserves
152 diag("Deleting holds.");
153 $dbh->do("DELETE FROM reserves WHERE biblionumber = ?", undef, ( $biblionumber ) );
156 diag("Deleting item testing instance.");
157 DelItem($dbh, $bibnum, $itemnumber);
159 # Delete helper Biblio.
160 diag("Deleting biblio testing instance.");
163 # Helper method to set up a Biblio.
164 sub create_helper_biblio {
165 my $bib = MARC::Record->new();
166 my $title = 'Silence in the library';
168 MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
169 MARC::Field->new('245', ' ', ' ', a => $title),
171 return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, '');