# CanBookBeRenewed tests
C4::Context->set_preference('ItemsDeniedRenewal','');
# Generate test biblio
- my $title = 'Silence in the library';
- my ($biblionumber, $biblioitemnumber) = add_biblio($title, 'Moffat, Steven');
+ my $biblio = $builder->gimme_a_biblio();
my $barcode = 'R00000342';
my $branch = $library2->{branchcode};
replacementprice => 12.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $barcode2 = 'R00000343';
replacementprice => 23.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $barcode3 = 'R00000346';
replacementprice => 23.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
# Create borrowers
# Biblio-level hold, renewal test
AddReserve(
- $branch, $reserving_borrowernumber, $biblionumber,
+ $branch, $reserving_borrowernumber, $biblio->biblionumber,
$bibitems, $priority, $resdate, $expdate, $notes,
- $title, $checkitem, $found
+ 'a title', $checkitem, $found
);
# Testing of feature to allow the renewal of reserved items if other items on the record can fill all needed holds
my $hold = Koha::Database->new()->schema()->resultset('Reserve')->create(
{
borrowernumber => $hold_waiting_borrowernumber,
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
itemnumber => $itemnumber,
branchcode => $branch,
priority => 3,
$hold = Koha::Database->new()->schema()->resultset('Reserve')->create(
{
borrowernumber => $hold_waiting_borrowernumber,
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
itemnumber => $itemnumber3,
branchcode => $branch,
priority => 0,
is( $renewokay, 0, '(Bug 10663) Cannot renew, reserved');
is( $error, 'on_reserve', '(Bug 10663) Cannot renew, reserved (returned error is on_reserve)');
- my $reserveid = Koha::Holds->search({ biblionumber => $biblionumber, borrowernumber => $reserving_borrowernumber })->next->reserve_id;
+ my $reserveid = Koha::Holds->search({ biblionumber => $biblio->biblionumber, borrowernumber => $reserving_borrowernumber })->next->reserve_id;
my $reserving_borrower = Koha::Patrons->find( $reserving_borrowernumber )->unblessed;
AddIssue($reserving_borrower, $barcode3);
my $reserve = $dbh->selectrow_hashref(
# Item-level hold, renewal test
AddReserve(
- $branch, $reserving_borrowernumber, $biblionumber,
+ $branch, $reserving_borrowernumber, $biblio->biblionumber,
$bibitems, $priority, $resdate, $expdate, $notes,
- $title, $itemnumber, $found
+ 'a title', $itemnumber, $found
);
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber, 1);
is( $renewokay, 1, 'Can renew item 2, item-level hold is on item 1');
# Items can't fill hold for reasons
- ModItem({ notforloan => 1 }, $biblionumber, $itemnumber);
+ ModItem({ notforloan => 1 }, $biblio->biblionumber, $itemnumber);
( $renewokay, $error ) = CanBookBeRenewed($renewing_borrowernumber, $itemnumber, 1);
is( $renewokay, 1, 'Can renew, item is marked not for loan, hold does not block');
- ModItem({ notforloan => 0, itype => $itemtype }, $biblionumber, $itemnumber);
+ ModItem({ notforloan => 0, itype => $itemtype }, $biblio->biblionumber, $itemnumber);
# FIXME: Add more for itemtype not for loan etc.
replacementprice => 23.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $datedue5 = AddIssue($restricted_borrower, $barcode5);
is (defined $datedue5, 1, "Item with date due checked out, due date: $datedue5");
replacementprice => 23.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $barcode7 = 'R00000349';
replacementprice => 23.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $datedue6 = AddIssue( $renewing_borrower, $barcode6);
is (defined $datedue6, 1, "Item 2 checked out, due date: ".$datedue6->date_due);
is( $renewokay, 0, '(Bug 8236), Cannot renew, this item is overdue');
- $hold = Koha::Holds->search({ biblionumber => $biblionumber, borrowernumber => $reserving_borrowernumber })->next;
+ $hold = Koha::Holds->search({ biblionumber => $biblio->biblionumber, borrowernumber => $reserving_borrowernumber })->next;
$hold->cancel;
# Bug 14101
replacementprice => 16.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
$issue = AddIssue( $renewing_borrower, $barcode4, undef, undef, undef, undef, { auto_renew => 1 } );
my $item_to_auto_renew = $builder->build(
{ source => 'Item',
value => {
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
homebranch => $branch,
holdingbranch => $branch,
}
my $item_to_auto_renew = $builder->build({
source => 'Item',
value => {
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
homebranch => $branch,
holdingbranch => $branch,
}
my $item_to_auto_renew = $builder->build({
source => 'Item',
value => {
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
homebranch => $branch,
holdingbranch => $branch,
}
my $item_to_auto_renew = $builder->build(
{ source => 'Item',
value => {
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
homebranch => $branch,
holdingbranch => $branch,
}
my $branch = $library2->{branchcode};
#Create another record
- my $title2 = 'Something is worng here';
- my ($biblionumber2, $biblioitemnumber2) = add_biblio($title2, 'Anonymous');
+ my $biblio2 = $builder->gimme_a_biblio();
#Create third item
AddItem(
barcode => $barcode3,
itype => $itemtype
},
- $biblionumber2
+ $biblio2->biblionumber
);
# Create a borrower
my $barcode = '1234567890';
my $branch = $library2->{branchcode};
- my ($biblionumber, $biblioitemnumber) = add_biblio();
+ my $biblio = $builder->gimme_a_biblio();
#Create third item
my ( undef, undef, $itemnumber ) = AddItem(
barcode => $barcode,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
# Create a borrower
undef, 0,
.10, 1
);
- my ( $biblionumber, $biblioitemnumber ) = add_biblio();
+ my $biblio = $builder->gimme_a_biblio();
my $barcode1 = '1234';
my ( undef, undef, $itemnumber1 ) = AddItem(
barcode => $barcode1,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $barcode2 = '4321';
my ( undef, undef, $itemnumber2 ) = AddItem(
barcode => $barcode2,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $borrowernumber1 = Koha::Patron->new({
is( $renewokay, 1, 'Bug 14337 - Verify the borrower can renew with no hold on the record' );
AddReserve(
- $library2->{branchcode}, $borrowernumber2, $biblionumber,
+ $library2->{branchcode}, $borrowernumber2, $biblio->biblionumber,
'', 1, undef, undef, '',
undef, undef, undef
);
is( $renewokay, 1, 'Bug 14337 - Verify the borrower can renew with a hold on the record if AllowRenewalIfOtherItemsAvailable and onshelfhold are enabled' );
# Setting item not checked out to be not for loan but holdable
- ModItem({ notforloan => -1 }, $biblionumber, $itemnumber2);
+ ModItem({ notforloan => -1 }, $biblio->biblionumber, $itemnumber2);
( $renewokay, $error ) = CanBookBeRenewed( $borrowernumber1, $itemnumber1 );
is( $renewokay, 0, 'Bug 14337 - Verify the borrower can not renew with a hold on the record if AllowRenewalIfOtherItemsAvailable is enabled but the only available item is notforloan' );
my $branch = $library->{branchcode};
#Create another record
- my ($biblionumber, $biblioitemnumber) = add_biblio('A title', 'Anonymous');
+ my $biblio = $builder->gimme_a_biblio();
my (undef, undef, $itemnumber) = AddItem(
{
barcode => $barcode,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $borrowernumber = Koha::Patron->new({
{
my $library = $builder->build({ source => 'Branch' });
- my ($biblionumber, $biblioitemnumber) = add_biblio();
+ my $biblio = $builder->gimme_a_biblio();
my $barcode = 'just a barcode';
my ( undef, undef, $itemnumber ) = AddItem(
barcode => $barcode,
itype => $itemtype
},
- $biblionumber,
+ $biblio->biblionumber,
);
my $patron = $builder->build({ source => 'Borrower', value => { branchcode => $library->{branchcode}, categorycode => $patron_category->{categorycode} } } );
subtest 'MultipleReserves' => sub {
plan tests => 3;
- my $title = 'Silence in the library';
- my ($biblionumber, $biblioitemnumber) = add_biblio($title, 'Moffat, Steven');
+ my $biblio = $builder->gimme_a_biblio();
my $branch = $library2->{branchcode};
replacementprice => 12.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $barcode2 = 'R00110002';
replacementprice => 12.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $bibitems = '';
);
my $reserving_borrowernumber1 = Koha::Patron->new(\%reserving_borrower_data1)->store->borrowernumber;
AddReserve(
- $branch, $reserving_borrowernumber1, $biblionumber,
+ $branch, $reserving_borrowernumber1, $biblio->biblionumber,
$bibitems, $priority, $resdate, $expdate, $notes,
- $title, $checkitem, $found
+ 'a title', $checkitem, $found
);
my %reserving_borrower_data2 = (
);
my $reserving_borrowernumber2 = Koha::Patron->new(\%reserving_borrower_data2)->store->borrowernumber;
AddReserve(
- $branch, $reserving_borrowernumber2, $biblionumber,
+ $branch, $reserving_borrowernumber2, $biblio->biblionumber,
$bibitems, $priority, $resdate, $expdate, $notes,
- $title, $checkitem, $found
+ 'a title', $checkitem, $found
);
{
replacementprice => 12.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
{
);
my $library = $builder->build_object( { class => 'Koha::Libraries' } );
- # Generate test biblio
- my $title = 'Koha for Dummies';
- my ( $biblionumber, $biblioitemnumber ) = add_biblio( $title, 'Hall, Daria' );
+ my $biblio = $builder->gimme_a_biblio({ author => 'Hall, Daria' });
subtest 'Full write-off tests' => sub {
replacementprice => $replacement_amount,
itype => $item_type->itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
AddIssue( $patron->unblessed, $barcode );
# Simulate item marked as lost
- ModItem( { itemlost => 3 }, $biblionumber, $item_id );
+ ModItem( { itemlost => 3 }, $biblio->biblionumber, $item_id );
LostItem( $item_id, 1 );
my $processing_fee_lines = Koha::Account::Lines->search(
replacementprice => $replacement_amount,
itype => $item_type->itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
AddIssue( $patron->unblessed, $barcode );
# Simulate item marked as lost
- ModItem( { itemlost => 1 }, $biblionumber, $item_id );
+ ModItem( { itemlost => 1 }, $biblio->biblionumber, $item_id );
LostItem( $item_id, 1 );
my $processing_fee_lines = Koha::Account::Lines->search(
replacementprice => $replacement_amount,
itype => $item_type->itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
AddIssue( $patron->unblessed, $barcode );
# Simulate item marked as lost
- ModItem( { itemlost => 3 }, $biblionumber, $item_id );
+ ModItem( { itemlost => 3 }, $biblio->biblionumber, $item_id );
LostItem( $item_id, 1 );
my $processing_fee_lines = Koha::Account::Lines->search(
replacementprice => $replacement_amount,
itype => $item_type->itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
AddIssue( $patron->unblessed, $barcode );
# Simulate item marked as lost
- ModItem( { itemlost => 1 }, $biblionumber, $item_id );
+ ModItem( { itemlost => 1 }, $biblio->biblionumber, $item_id );
LostItem( $item_id, 1 );
my $processing_fee_lines = Koha::Account::Lines->search(
subtest '_FixOverduesOnReturn' => sub {
plan tests => 10;
- # Generate test biblio
- my $title = 'Koha for Dummies';
- my ( $biblionumber, $biblioitemnumber ) = add_biblio($title, 'Hall, Kylie');
+ my $biblio = $builder->gimme_a_biblio({ author => 'Hall, Kylie' });
my $barcode = 'KD987654321';
my $branchcode = $library2->{branchcode};
replacementprice => 99.00,
itype => $itemtype
},
- $biblionumber
+ $biblio->biblionumber
);
my $patron = $builder->build( { source => 'Borrower' } );
return $s;
}
-sub add_biblio {
- my ($title, $author) = @_;
-
- my $marcflavour = C4::Context->preference('marcflavour');
-
- my $biblio = MARC::Record->new();
- if ($title) {
- my $tag = $marcflavour eq 'UNIMARC' ? '200' : '245';
- $biblio->append_fields(
- MARC::Field->new($tag, ' ', ' ', a => $title),
- );
- }
-
- if ($author) {
- my ($tag, $code) = $marcflavour eq 'UNIMARC' ? (200, 'f') : (100, 'a');
- $biblio->append_fields(
- MARC::Field->new($tag, ' ', ' ', $code => $author),
- );
- }
-
- return AddBiblio($biblio, '');
-}
-
sub test_debarment_on_checkout {
my ($params) = @_;
my $item = $params->{item};
$insert_sth->execute('ONLY1');
# Setup Test------------------------
-# Create a biblio instance for testing
-my ($bibnum, $title, $bibitemnum) = create_helper_biblio('DUMMY');
+my $biblio = $builder->gimme_a_biblio({ itemtype => 'DUMMY' });
# Create item instance for testing.
my ($item_bibnum, $item_bibitemnum, $itemnumber)
- = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum);
+ = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber);
# Create some borrowers
my @borrowernumbers;
push @borrowernumbers, $borrowernumber;
}
-my $biblionumber = $bibnum;
-
# Create five item level holds
foreach my $borrowernumber ( @borrowernumbers ) {
AddReserve(
$branch_1,
$borrowernumber,
- $biblionumber,
+ $biblio->biblionumber,
my $bibitems = q{},
- my $priority = C4::Reserves::CalculatePriority( $biblionumber ),
+ my $priority = C4::Reserves::CalculatePriority( $biblio->biblionumber ),
my $resdate,
my $expdate,
my $notes = q{},
- $title,
+ 'a title',
my $checkitem = $itemnumber,
my $found,
);
}
-my $biblio = Koha::Biblios->find( $biblionumber );
my $holds = $biblio->holds;
is( $holds->count, $borrowers_count, 'Test GetReserves()' );
is( $holds->next->priority, 1, "Reserve 1 has a priority of 1" );
SuspendAll(
borrowernumber => $borrowernumber,
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
suspend => 1,
suspend_until => '2012-01-01',
);
SuspendAll(
borrowernumber => $borrowernumber,
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
suspend => 0,
);
$hold = Koha::Holds->find( $reserve_id );
AddReserve(
$branch_1,
$borrowernumbers[0],
- $biblionumber,
+ $biblio->biblionumber,
my $bibitems = q{},
my $priority,
my $resdate,
my $expdate,
my $notes = q{},
- $title,
+ 'a title',
my $checkitem,
my $found,
);
$patron = Koha::Patrons->find( $borrowernumber );
$holds = $patron->holds;
-my $reserveid = Koha::Holds->search({ biblionumber => $bibnum, borrowernumber => $borrowernumbers[0] })->next->reserve_id;
+my $reserveid = Koha::Holds->search({ biblionumber => $biblio->biblionumber, borrowernumber => $borrowernumbers[0] })->next->reserve_id;
ModReserveMinusPriority( $itemnumber, $reserveid );
$holds = $patron->holds;
is( $holds->next->itemnumber, $itemnumber, "Test ModReserveMinusPriority()" );
# Note that canreservefromotherbranches has no effect if
# IndependentBranches is OFF.
-my ($foreign_bibnum, $foreign_title, $foreign_bibitemnum) = create_helper_biblio('DUMMY');
+my $foreign_biblio = $builder->gimme_a_biblio({ itemtype => 'DUMMY' });
my ($foreign_item_bibnum, $foreign_item_bibitemnum, $foreign_itemnumber)
- = AddItem({ homebranch => $branch_2, holdingbranch => $branch_2 } , $foreign_bibnum);
+ = AddItem({ homebranch => $branch_2, holdingbranch => $branch_2 } , $foreign_biblio->biblionumber);
$dbh->do('DELETE FROM issuingrules');
$dbh->do(
q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed, holds_per_record)
{
# Regression test for bug 11336 # Test if ModReserve correctly recalculate the priorities
- ($bibnum, $title, $bibitemnum) = create_helper_biblio('DUMMY');
- ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum);
- my $reserveid1 = AddReserve($branch_1, $borrowernumbers[0], $bibnum, '', 1);
- ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum);
- my $reserveid2 = AddReserve($branch_1, $borrowernumbers[1], $bibnum, '', 2);
- ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $bibnum);
- my $reserveid3 = AddReserve($branch_1, $borrowernumbers[2], $bibnum, '', 3);
- my $hhh = Koha::Holds->search({ biblionumber => $bibnum });
+ $biblio = $builder->gimme_a_biblio({ itemtype => 'DUMMY' });
+ ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber);
+ my $reserveid1 = AddReserve($branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1);
+ ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber);
+ my $reserveid2 = AddReserve($branch_1, $borrowernumbers[1], $biblio->biblionumber, '', 2);
+ ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1 } , $biblio->biblionumber);
+ my $reserveid3 = AddReserve($branch_1, $borrowernumbers[2], $biblio->biblionumber, '', 3);
+ my $hhh = Koha::Holds->search({ biblionumber => $biblio->biblionumber });
my $hold3 = Koha::Holds->find( $reserveid3 );
is( $hold3->priority, 3, "The 3rd hold should have a priority set to 3" );
ModReserve({ reserve_id => $reserveid1, rank => 'del' });
ok( !defined( ( CheckReserves($itemnumber) )[1] ), "Hold cannot be trapped for damaged item with AllowHoldsOnDamagedItems disabled" );
# Regression test for bug 9532
-($bibnum, $title, $bibitemnum) = create_helper_biblio('CANNOT');
-($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $bibnum);
+$biblio = $builder->gimme_a_biblio({ itemtype => 'CANNOT' });
+($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $biblio->biblionumber);
AddReserve(
$branch_1,
$borrowernumbers[0],
- $bibnum,
+ $biblio->biblionumber,
'',
1,
);
INSERT INTO branch_item_rules (branchcode, itemtype, holdallowed, returnbranch)
VALUES (?, ?, ?, ?)
}, {}, $branch_1, 'CAN', 1, 'homebranch');
-($bibnum, $title, $bibitemnum) = create_helper_biblio('CANNOT');
+$biblio = $builder->gimme_a_biblio({ itemtype => 'CANNOT' });
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem(
- { homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $bibnum);
+ { homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CANNOT' } , $biblio->biblionumber);
is(CanItemBeReserved($borrowernumbers[0], $itemnumber)->{status}, 'notReservable',
"CanItemBeReserved should return 'notReservable'");
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem(
- { homebranch => $branch_2, holdingbranch => $branch_1, itype => 'CAN' } , $bibnum);
+ { homebranch => $branch_2, holdingbranch => $branch_1, itype => 'CAN' } , $biblio->biblionumber);
is(CanItemBeReserved($borrowernumbers[0], $itemnumber)->{status},
'cannotReserveFromOtherBranches',
"CanItemBeReserved should return 'cannotReserveFromOtherBranches'");
($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem(
- { homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CAN' } , $bibnum);
+ { homebranch => $branch_1, holdingbranch => $branch_1, itype => 'CAN' } , $biblio->biblionumber);
is(CanItemBeReserved($borrowernumbers[0], $itemnumber)->{status}, 'OK',
"CanItemBeReserved should return 'OK'");
$dbh->do('DELETE FROM items');
$dbh->do('DELETE FROM biblio');
-( $bibnum, $title, $bibitemnum ) = create_helper_biblio('ONLY1');
+$biblio = $builder->gimme_a_biblio({ itemtype => 'ONLY1' });
( $item_bibnum, $item_bibitemnum, $itemnumber )
- = AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 }, $bibnum );
+ = AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 }, $biblio->biblionumber );
$dbh->do(
q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed, holds_per_record)
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber )->{status},
'OK', 'Patron can reserve item with hold limit of 1, no holds placed' );
-my $res_id = AddReserve( $branch_1, $borrowernumbers[0], $bibnum, '', 1, );
+my $res_id = AddReserve( $branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1, );
is( CanItemBeReserved( $borrowernumbers[0], $itemnumber )->{status},
'tooManyReserves', 'Patron cannot reserve item with hold limit of 1, 1 bib level hold placed' );
$dbh->do('DELETE FROM issuingrules');
$dbh->do('DELETE FROM circulation_rules');
- ( $bibnum, $title, $bibitemnum ) = create_helper_biblio('TEST');
+ $biblio = $builder->gimme_a_biblio({ itemtype => 'TEST' });
( $item_bibnum, $item_bibitemnum, $itemnumber ) =
AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 },
- $bibnum );
+ $biblio->biblionumber );
$dbh->do(
q{
INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed, holds_per_record)
{},
'*', '*', 'TEST', 99, 99
);
- AddReserve( $branch_1, $borrowernumbers[0], $bibnum, '', 1, );
- AddReserve( $branch_1, $borrowernumbers[0], $bibnum, '', 1, );
- AddReserve( $branch_1, $borrowernumbers[0], $bibnum, '', 1, );
+ AddReserve( $branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1, );
+ AddReserve( $branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1, );
+ AddReserve( $branch_1, $borrowernumbers[0], $biblio->biblionumber, '', 1, );
my $count =
Koha::Holds->search( { borrowernumber => $borrowernumbers[0] } )->count();
subtest 'Pickup location availability tests' => sub {
plan tests => 4;
- my ( $bibnum, $title, $bibitemnum ) = create_helper_biblio('ONLY1');
+ $biblio = $builder->gimme_a_biblio({ itemtype => 'ONLY1' });
my ( $item_bibnum, $item_bibitemnum, $itemnumber )
- = AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 }, $bibnum );
+ = AddItem( { homebranch => $branch_1, holdingbranch => $branch_1 }, $biblio->biblionumber );
#Add a default rule to allow some holds
$dbh->do(
q{INSERT INTO issuingrules (categorycode, branchcode, itemtype, reservesallowed, holds_per_record)
my $patron = $builder->build_object( { class => 'Koha::Patrons' } );
# Create 3 biblios with items
- my ($bibnum_1) = create_helper_biblio( $itemtype->itemtype );
+ my $biblio_1 = $builder->gimme_a_biblio({ itemtype => $itemtype->itemtype });
my ( undef, undef, $itemnumber_1 ) = AddItem(
{ homebranch => $library->branchcode,
holdingbranch => $library->branchcode
},
- $bibnum
+ $biblio_1->biblionumber
);
- my ($bibnum_2) = create_helper_biblio( $itemtype->itemtype );
+ my $biblio_2 = $builder->gimme_a_biblio({ itemtype => $itemtype->itemtype });
my ( undef, undef, $itemnumber_2 ) = AddItem(
{ homebranch => $library->branchcode,
holdingbranch => $library->branchcode
},
- $bibnum_2
+ $biblio_2->biblionumber
);
- my ($bibnum_3) = create_helper_biblio( $itemtype->itemtype );
+ my $biblio_3 = $builder->gimme_a_biblio({ itemtype => $itemtype->itemtype });
my ( undef, undef, $itemnumber_3 ) = AddItem(
{ homebranch => $library->branchcode,
holdingbranch => $library->branchcode
},
- $bibnum_3
+ $biblio_3->biblionumber
);
Koha::IssuingRules->search->delete;
'Patron can reserve item with hold limit of 1, no holds placed'
);
- AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_1, '', 1, );
+ AddReserve( $library->branchcode, $patron->borrowernumber, $biblio_1->biblionumber, '', 1, );
is_deeply(
CanItemBeReserved( $patron->borrowernumber, $itemnumber_1 ),
);
# Add a second reserve
- my $res_id = AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_2, '', 1, );
+ my $res_id = AddReserve( $library->branchcode, $patron->borrowernumber, $biblio_2->biblionumber, '', 1, );
is_deeply(
CanItemBeReserved( $patron->borrowernumber, $itemnumber_2 ),
{ status => 'tooManyReservesToday', limit => 2 },
{ status => 'OK' },
'Patron can reserve if holds_per_day is undef (i.e. undef is unlimited daily cap)'
);
- AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_1, '', 1, );
- AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_2, '', 1, );
+ AddReserve( $library->branchcode, $patron->borrowernumber, $biblio_1->biblionumber, '', 1, );
+ AddReserve( $library->branchcode, $patron->borrowernumber, $biblio_2->biblionumber, '', 1, );
is_deeply(
CanItemBeReserved( $patron->borrowernumber, $itemnumber_3 ),
{ status => 'OK' },
'Patron can reserve if holds_per_day is undef (i.e. undef is unlimited daily cap)'
);
- AddReserve( $library->branchcode, $patron->borrowernumber, $bibnum_3, '', 1, );
+ AddReserve( $library->branchcode, $patron->borrowernumber, $biblio_3->biblionumber, '', 1, );
is_deeply(
CanItemBeReserved( $patron->borrowernumber, $itemnumber_3 ),
{ status => 'tooManyReserves', limit => 3 },
$schema->storage->txn_rollback;
};
-
-# Helper method to set up a Biblio.
-sub create_helper_biblio {
- my $itemtype = shift;
- my $bib = MARC::Record->new();
- my $title = 'Silence in the library';
- $bib->append_fields(
- MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
- MARC::Field->new('245', ' ', ' ', a => $title),
- MARC::Field->new('942', ' ', ' ', c => $itemtype),
- );
- return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, '');
-}
my $borrowers_count = 5;
-# Create a helper biblio
-my ( $bibnum, $title, $bibitemnum ) = create_helper_biblio();
-# Create a helper item for the biblio.
+my $biblio = $builder->gimme_a_biblio();
my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
{ homebranch => $library4->{branchcode},
holdingbranch => $library3->{branchcode},
itype => $itemtype
},
- $bibnum
+ $biblio->biblionumber,
);
push @borrowernumbers, $borrowernumber;
}
-my $biblionumber = $bibnum;
-
# Create five item level holds
my $i = 1;
foreach my $borrowernumber (@borrowernumbers) {
AddReserve(
$branchcodes[$i],
$borrowernumber,
- $biblionumber,
+ $biblio->biblionumber,
my $bibitems = q{},
my $priority = $i,
my $resdate,
my $expdate,
my $notes = q{},
- $title,
+ 'a title',
my $checkitem,
my $found,
);
t::lib::Mocks::mock_preference( 'LocalHoldsPriorityItemControl', 'homebranch' );
($status, $reserve, $all_reserves) = CheckReserves($itemnumber);
ok( $reserve->{borrowernumber} eq $borrowernumbers[2], "Received expected results with HomeLibrary/homebranch" );
-
-# Helper method to set up a Biblio.
-sub create_helper_biblio {
- my $bib = MARC::Record->new();
- my $title = 'Silence in the library';
- $bib->append_fields(
- MARC::Field->new( '100', ' ', ' ', a => 'Moffat, Steven' ),
- MARC::Field->new( '245', ' ', ' ', a => $title ),
- );
- return ( $bibnum, $title, $bibitemnum ) = AddBiblio( $bib, '' );
-}
my $borrowers_count = 3;
-# Create a biblio instance
-my ( $bibnum, $title, $bibitemnum ) = create_helper_biblio();
-
-# Create an item
+my $biblio = $builder->gimme_a_biblio();
my $item_barcode = 'my_barcode';
my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
{ homebranch => $branchcode,
barcode => $item_barcode,
itype => $itemtype
},
- $bibnum
+ $biblio->biblionumber,
);
# Create some borrowers
push @borrowernumbers, $borrowernumber;
}
-my $biblionumber = $bibnum;
-
# Create five item level holds
foreach my $borrowernumber (@borrowernumbers) {
AddReserve(
$branchcode,
$borrowernumber,
- $biblionumber,
+ $biblio->biblionumber,
my $bibitems = q{},
my $priority,
my $resdate,
my $expdate,
my $notes = q{},
- $title,
+ 'a title',
my $checkitem,
my $found,
);
ok( $priorities->[1]->[0] == 2, 'Second hold has a priority of 2' );
$schema->storage->txn_rollback;
-
-# Helper method to set up a Biblio.
-sub create_helper_biblio {
- my $bib = MARC::Record->new();
- my $title = 'Silence in the library';
- $bib->append_fields(
- MARC::Field->new( '100', ' ', ' ', a => 'Moffat, Steven' ),
- MARC::Field->new( '245', ' ', ' ', a => $title ),
- );
- return ( $bibnum, $title, $bibitemnum ) = AddBiblio( $bib, '' );
-}
# Create a biblio instance for testing
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
- my ($bibnum, $bibitemnum) = get_biblio();
+ my $biblio = $builder->gimme_a_biblio();
# Add an item.
- my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $bibnum);
- cmp_ok($item_bibnum, '==', $bibnum, "New item is linked to correct biblionumber.");
- cmp_ok($item_bibitemnum, '==', $bibitemnum, "New item is linked to correct biblioitemnumber.");
+ my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $biblio->biblionumber);
+ cmp_ok($item_bibnum, '==', $biblio->biblionumber, "New item is linked to correct biblionumber.");
+ cmp_ok($item_bibitemnum, '==', $biblio->biblioitem->biblioitemnumber, "New item is linked to correct biblioitemnumber.");
# Get item.
my $getitem = GetItem($itemnumber);
# Do not modify anything, and do not explode!
my $dbh = C4::Context->dbh;
local $dbh->{RaiseError} = 1;
- ModItem({}, $bibnum, $itemnumber);
+ ModItem({}, $biblio->biblionumber, $itemnumber);
# Modify item; setting barcode.
- ModItem({ barcode => '987654321' }, $bibnum, $itemnumber);
+ ModItem({ barcode => '987654321' }, $biblio->biblionumber, $itemnumber);
my $moditem = GetItem($itemnumber);
cmp_ok($moditem->{'barcode'}, '==', '987654321', 'Modified item barcode successfully to: '.$moditem->{'barcode'} . '.');
# Delete item.
- DelItem({ biblionumber => $bibnum, itemnumber => $itemnumber });
+ DelItem({ biblionumber => $biblio->biblionumber, itemnumber => $itemnumber });
my $getdeleted = GetItem($itemnumber);
is($getdeleted->{'itemnumber'}, undef, "Item deleted as expected.");
- ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, permanent_location => 'my permanent location', itype => $itemtype->{itemtype} } , $bibnum);
+ ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, permanent_location => 'my permanent location', itype => $itemtype->{itemtype} } , $biblio->biblionumber);
$getitem = GetItem($itemnumber);
is( $getitem->{location}, $location, "The location should not have been modified" );
is( $getitem->{permanent_location}, 'my permanent location', "The permanent_location should not have modified" );
- ModItem({ location => $location }, $bibnum, $itemnumber);
+ ModItem({ location => $location }, $biblio->biblionumber, $itemnumber);
$getitem = GetItem($itemnumber);
is( $getitem->{location}, $location, "The location should have been set to correct location" );
is( $getitem->{permanent_location}, $location, "The permanent_location should have been set to location" );
- ModItem({ location => 'CART' }, $bibnum, $itemnumber);
+ ModItem({ location => 'CART' }, $biblio->biblionumber, $itemnumber);
$getitem = GetItem($itemnumber);
is( $getitem->{location}, 'CART', "The location should have been set to CART" );
is( $getitem->{permanent_location}, $location, "The permanent_location should not have been set to CART" );
# Create a new biblio
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
- my ($biblionumber, $biblioitemnumber) = get_biblio();
+ my $biblio = $builder->gimme_a_biblio();
# Add two items
my ( $item1_bibnum, $item1_bibitemnum, $item1_itemnumber ) = AddItem(
withdrawn => 1,
itype => $itemtype->{itemtype},
},
- $biblionumber
+ $biblio->biblionumber
);
my ( $item2_bibnum, $item2_bibitemnum, $item2_itemnumber ) = AddItem(
{
withdrawn => 0,
itype => $itemtype->{itemtype},
},
- $biblionumber
+ $biblio->biblionumber
);
my $opachiddenitems;
});
# Add a biblio
- my ($biblionumber, $biblioitemnumber) = get_biblio();
+ my $biblio = $builder->gimme_a_biblio();
# Add an item
my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
{
holdingbranch => $library2->{branchcode},
itype => $itemtype->{itemtype},
},
- $biblionumber
+ $biblio->biblionumber
);
my $library = Koha::Libraries->find( $library1->{branchcode} );
$library->opac_info("holdingbranch OPAC info");
$library->store;
- my @results = GetItemsInfo( $biblionumber );
+ my @results = GetItemsInfo( $biblio->biblionumber );
ok( @results, 'GetItemsInfo returns results');
is( $results[0]->{ home_branch_opac_info }, "homebranch OPAC info",
'GetItemsInfo returns the correct home branch OPAC info notice' );
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
my $cpl_items_before = SearchItemsByField( 'homebranch', $library1->{branchcode});
- my ($biblionumber) = get_biblio();
+ my $biblio = $builder->gimme_a_biblio();
my (undef, $initial_items_count) = SearchItems(undef, {rows => 1});
homebranch => $library1->{branchcode},
holdingbranch => $library1->{branchcode},
itype => $itemtype->{itemtype},
- }, $biblionumber);
+ }, $biblio->biblionumber);
my (undef, undef, $item2_itemnumber) = AddItem({
homebranch => $library2->{branchcode},
holdingbranch => $library2->{branchcode},
itype => $itemtype->{itemtype},
- }, $biblionumber);
+ }, $biblio->biblionumber);
my ($items, $total_results);
)
);
my (undef, undef, $item3_itemnumber) = AddItemFromMarc($item3_record,
- $biblionumber);
+ $biblio->biblionumber);
# Search item where item subfield z is "foobar"
$filter = {
$cache->clear_from_cache("default_value_for_mod_marc-");
$cache->clear_from_cache("MarcSubfieldStructure-$frameworkcode");
- ModItemFromMarc($item3_record, $biblionumber, $item3_itemnumber);
+ ModItemFromMarc($item3_record, $biblio->biblionumber, $item3_itemnumber);
# Make sure the link is used
my $item3 = GetItem($item3_itemnumber);
# Create a biblio and item for testing
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
- my ($bibnum, $bibitemnum) = get_biblio();
+ my $biblio = $builder->gimme_a_biblio();
my ( $item_bibnum, $item_bibitemnum, $itemnumber ) = AddItem(
{
homebranch => $library1->{branchcode},
holdingbranch => $library2->{branchcode},
itype => $itemtype->{itemtype},
},
- $bibnum
+ $biblio->biblionumber
);
# Get item.
source => 'Itemtype',
});
- my ( $biblionumber, $biblioitemnumber ) = get_biblio();
+ my $biblio = $builder->gimme_a_biblio();
my $item_infos = [
{ homebranch => $library1->{branchcode}, holdingbranch => $library1->{branchcode} },
{ homebranch => $library1->{branchcode}, holdingbranch => $library1->{branchcode} },
holdingbranch => $item_info->{holdingbanch},
itype => $itemtype->{itemtype},
},
- $biblionumber
+ $biblio->biblionumber
);
push @itemnumbers, $itemnumber;
}
my ($itemfield) =
C4::Biblio::GetMarcFromKohaField( 'items.itemnumber', '' );
- my $record = C4::Biblio::GetMarcBiblio({ biblionumber => $biblionumber });
+ my $record = C4::Biblio::GetMarcBiblio({ biblionumber => $biblio->biblionumber });
warning_is { C4::Biblio::EmbedItemsInMarcBiblio() }
{ carped => 'EmbedItemsInMarcBiblio: No MARC record passed' },
'Should carp is no record passed.';
C4::Biblio::EmbedItemsInMarcBiblio({
marc_record => $record,
- biblionumber => $biblionumber });
+ biblionumber => $biblio->biblionumber });
my @items = $record->field($itemfield);
is( scalar @items, $number_of_items, 'Should return all items' );
my $marc_with_items = C4::Biblio::GetMarcBiblio({
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
embed_items => 1 });
is_deeply( $record, $marc_with_items, 'A direct call to GetMarcBiblio with items matches');
C4::Biblio::EmbedItemsInMarcBiblio({
marc_record => $record,
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
item_numbers => [ $itemnumbers[1], $itemnumbers[3] ] });
@items = $record->field($itemfield);
is( scalar @items, 2, 'Should return all items present in the list' );
C4::Biblio::EmbedItemsInMarcBiblio({
marc_record => $record,
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
opac => 1 });
@items = $record->field($itemfield);
is( scalar @items, $number_of_items, 'Should return all items for opac' );
C4::Biblio::EmbedItemsInMarcBiblio({
marc_record => $record,
- biblionumber => $biblionumber });
+ biblionumber => $biblio->biblionumber });
@items = $record->field($itemfield);
is( scalar @items,
$number_of_items,
C4::Biblio::EmbedItemsInMarcBiblio({
marc_record => $record,
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
opac => 1 });
@items = $record->field($itemfield);
is(
t::lib::Mocks::mock_preference( 'OpacHiddenItems', $opachiddenitems );
C4::Biblio::EmbedItemsInMarcBiblio({
marc_record => $record,
- biblionumber => $biblionumber,
+ biblionumber => $biblio->biblionumber,
opac => 1 });
@items = $record->field($itemfield);
is(
my $itemtype = $builder->build({ source => 'Itemtype' })->{itemtype};
# Create a record with a barcode
- my ($biblionumber) = get_biblio( $framework->{frameworkcode} );
+ my $biblio = $builder->gimme_a_biblio({ frameworkcode => $framework->{frameworkcode} });
my $item_record = new MARC::Record;
my $a_barcode = 'a barcode';
my $barcode_field = MARC::Field->new(
y => $itemtype
);
$item_record->append_fields( $barcode_field );
- my (undef, undef, $item_itemnumber) = AddItemFromMarc($item_record, $biblionumber);
+ my (undef, undef, $item_itemnumber) = AddItemFromMarc($item_record, $biblio->biblionumber);
# Make sure everything has been set up
my $item = GetItem($item_itemnumber);
# Delete the barcode field and save the record
$item_record->delete_fields( $barcode_field );
$item_record->append_fields( $itemtype_field ); # itemtype is mandatory
- ModItemFromMarc($item_record, $biblionumber, $item_itemnumber);
+ ModItemFromMarc($item_record, $biblio->biblionumber, $item_itemnumber);
$item = GetItem($item_itemnumber);
is( $item->{barcode}, undef, 'The default value should have been set to the barcode, the field is mapped to a kohafield' );
# Re-add the barcode field and save the record
$item_record->append_fields( $barcode_field );
- ModItemFromMarc($item_record, $biblionumber, $item_itemnumber);
+ ModItemFromMarc($item_record, $biblio->biblionumber, $item_itemnumber);
$item = GetItem($item_itemnumber);
is( $item->{barcode}, $a_barcode, 'Everything has been set up correctly, the barcode is defined as expected' );
);
$item_record->append_fields( $another_barcode_field );
# The DB value should not have been updated
- ModItemFromMarc($item_record, $biblionumber, $item_itemnumber);
+ ModItemFromMarc($item_record, $biblio->biblionumber, $item_itemnumber);
$item = GetItem($item_itemnumber);
is ( $item->{barcode}, $a_barcode, 'items.barcode is not mapped anymore, so the DB column has not been updated' );
# Create a biblio instance for testing
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
- my ($bibnum, $bibitemnum) = get_biblio();
+ my $biblio = $builder->gimme_a_biblio();
# Add an item.
- my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $bibnum);
+ my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $biblio->biblionumber);
# False means no logging
$schema->resultset('ActionLog')->search()->delete();
- ModItem({ location => $location }, $bibnum, $itemnumber, { log_action => 0 });
+ ModItem({ location => $location }, $biblio->biblionumber, $itemnumber, { log_action => 0 });
is( $schema->resultset('ActionLog')->count(), 0, 'False value does not trigger logging' );
# True means logging
$schema->resultset('ActionLog')->search()->delete();
- ModItem({ location => $location }, $bibnum, $itemnumber, { log_action => 1 });
+ ModItem({ location => $location }, $biblio->biblionumber, $itemnumber, { log_action => 1 });
is( $schema->resultset('ActionLog')->count(), 1, 'True value does trigger logging' );
# Undefined defaults to true
$schema->resultset('ActionLog')->search()->delete();
- ModItem({ location => $location }, $bibnum, $itemnumber);
+ ModItem({ location => $location }, $biblio->biblionumber, $itemnumber);
is( $schema->resultset('ActionLog')->count(), 1, 'Undefined value defaults to true, triggers logging' );
$schema->storage->txn_rollback;
$schema->storage->txn_rollback;
};
-
-# Helper method to set up a Biblio.
-sub get_biblio {
- my ( $frameworkcode ) = @_;
- $frameworkcode //= '';
- my $bib = MARC::Record->new();
- $bib->append_fields(
- MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
- MARC::Field->new('245', ' ', ' ', a => 'Silence in the library'),
- );
- my ($bibnum, $bibitemnum) = AddBiblio($bib, $frameworkcode);
- return ($bibnum, $bibitemnum);
-}
source => 'Branch',
});
-my ( $biblionumber, $bibitemnum ) = get_biblio();
+my $biblio = $builder->gimme_a_biblio();
my ( $item_bibnum, $item_bibitemnum, $itemnumber );
( $item_bibnum, $item_bibitemnum, $itemnumber ) =
- AddItem( { homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode} }, $biblionumber );
+ AddItem( { homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode} }, $biblio->biblionumber );
-my $deleted = DelItem( { biblionumber => $biblionumber, itemnumber => $itemnumber } );
+my $deleted = DelItem( { biblionumber => $biblio->biblionumber, itemnumber => $itemnumber } );
is( $deleted, 1, "DelItem should return 1 if the item has been deleted" );
my $deleted_item = GetItem($itemnumber);
is( $deleted_item->{itemnumber}, undef, "DelItem with biblionumber parameter - the item should be deleted." );
( $item_bibnum, $item_bibitemnum, $itemnumber ) =
- AddItem( { homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode} }, $biblionumber );
-$deleted = DelItem( { biblionumber => $biblionumber, itemnumber => $itemnumber } );
+ AddItem( { homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode} }, $biblio->biblionumber );
+$deleted = DelItem( { biblionumber => $biblio->biblionumber, itemnumber => $itemnumber } );
is( $deleted, 1, "DelItem should return 1 if the item has been deleted" );
$deleted_item = GetItem($itemnumber);
is( $deleted_item->{itemnumber}, undef, "DelItem without biblionumber parameter - the item should be deleted." );
$deleted = DelItem( { itemnumber => $itemnumber + 1} );
is ( $deleted, 0, "DelItem should return 0 if no item has been deleted" );
-$deleted = DelItem( { itemnumber => $itemnumber + 1, biblionumber => $biblionumber } );
+$deleted = DelItem( { itemnumber => $itemnumber + 1, biblionumber => $biblio->biblionumber } );
is ( $deleted, 0, "DelItem should return 0 if no item has been deleted" );
-
-# Helper method to set up a Biblio.
-sub get_biblio {
- my $bib = MARC::Record->new();
- $bib->append_fields(
- MARC::Field->new( '100', ' ', ' ', a => 'Moffat, Steven' ),
- MARC::Field->new( '245', ' ', ' ', a => 'Silence in the library' ),
- );
- my ( $bibnum, $bibitemnum ) = AddBiblio( $bib, '' );
- return ( $bibnum, $bibitemnum );
-}
my $title_1 = 'Title 1, ';
my $title_2 = 'Title 2, bizzarre one so doesn\'t already exist';
- my $biblio_1 = create_helper_biblio( $itemtype->itemtype, $title_1 );
- my $biblio_2 = create_helper_biblio( $itemtype->itemtype, $title_2 );
+ my $biblio_1 = $builder->gimme_a_biblio({ itemtype => $itemtype->itemtype, title => $title_1 });
+ my $biblio_2 = $builder->gimme_a_biblio({ itemtype => $itemtype->itemtype, title => $title_2 });
my ( $items_1, $first_items_count ) = GetItemsForInventory();
is( scalar @{$items_1}, $first_items_count, 'Results and count match' );
return (\@results, $iTotalRecords);
}
-
-# Helper method to set up a Biblio.
-sub create_helper_biblio {
- my $itemtype = shift;
- my $title = shift;
- my $record = MARC::Record->new();
-
- $record->append_fields(
- MARC::Field->new( '245', ' ', ' ', a => $title ),
- MARC::Field->new( '942', ' ', ' ', c => $itemtype ),
- );
-
- my ($biblio_id) = AddBiblio( $record, '' );
-
- return Koha::Biblios->find($biblio_id);
-}
# Create a biblio instance for testing
t::lib::Mocks::mock_preference('marcflavour', 'MARC21');
-my ($bibnum, $bibitemnum) = get_biblio();
+my $biblio = $builder->gimme_a_biblio();
# Add an item.
-my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $bibnum);
+my ($item_bibnum, $item_bibitemnum, $itemnumber) = AddItem({ homebranch => $library->{branchcode}, holdingbranch => $library->{branchcode}, location => $location, itype => $itemtype->{itemtype} } , $biblio->biblionumber);
my $rs = $schema->resultset('Biblioitem')->search({});
my $iterator = Koha::BiblioUtils::Iterator->new($rs, items => 1 );
my $record = $iterator->next();
-my $expected_tags = [ 100, 245, 952, 999 ];
+my $expected_tags = [ 100, 245, 942, 952, 999 ];
my @result_tags = map { $_->tag() } $record->field('...');
my @sorted_tags = sort @result_tags;
is_deeply(\@sorted_tags,$expected_tags, "Got the same tags as expected");
$schema->storage->txn_rollback();
-
-# Helper method to set up a Biblio.
-sub get_biblio {
- my ( $frameworkcode ) = @_;
- $frameworkcode //= '';
- my $bib = MARC::Record->new();
- $bib->append_fields(
- MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
- MARC::Field->new('245', ' ', ' ', a => 'Silence in the library'),
- );
- my ($bibnum, $bibitemnum) = AddBiblio($bib, $frameworkcode);
- return ($bibnum, $bibitemnum);
-}
my $library1 = $builder->build_object( { class => 'Koha::Libraries' } );
my $library2 = $builder->build_object( { class => 'Koha::Libraries' } );
my $library3 = $builder->build_object( { class => 'Koha::Libraries' } );
- my ($bibnum, $title, $bibitemnum) = create_helper_biblio('ONLY1');
+ my $biblio = $builder->gimme_a_biblio({ itemtype => 'ONLY1' });
my ($item_bibnum, $item_bibitemnum, $itemnumber)
- = AddItem({ homebranch => $library1->branchcode, holdingbranch => $library1->branchcode }, $bibnum);
+ = AddItem({ homebranch => $library1->branchcode, holdingbranch => $library1->branchcode }, $biblio->biblionumber);
my $item = Koha::Items->find($itemnumber);
- my $biblio = Koha::Biblios->find($bibnum);
is(Koha::Item::Transfer::Limits->search({
fromBranch => $library1->branchcode,
};
$schema->storage->txn_rollback;
-
-# Helper method to set up a Biblio.
-sub create_helper_biblio {
- my $itemtype = shift;
- my ($bibnum, $title, $bibitemnum);
- my $bib = MARC::Record->new();
- $title = 'Silence in the library';
- $bib->append_fields(
- MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
- MARC::Field->new('245', ' ', ' ', a => $title),
- MARC::Field->new('942', ' ', ' ', c => $itemtype),
- );
- return ($bibnum, $title, $bibitemnum) = AddBiblio($bib, '');
-}
use C4::Biblio;
use C4::OAI::Sets;
+use t::lib::TestBuilder;
+
my $schema = Koha::Database->new->schema;
$schema->storage->txn_begin;
my $dbh = C4::Context->dbh;
$dbh->do('DELETE FROM oai_sets_mappings');
$dbh->do('DELETE FROM oai_sets_biblios');
-
+my $builder = t::lib::TestBuilder->new;
# ---------- Testing AddOAISet ------------------
ok (!defined(AddOAISet), 'AddOAISet without argument is undef');
ok (defined(AddOAISetsBiblios($arg={})), 'AddOAISetsBiblios with a HASH argument is def');
# Create a biblio instance for testing
-my $biblionumber1 = create_helper_biblio('Moffat, Steven');
+my $biblio_1 = $builder->gimme_a_biblio({ author => 'Moffat, Steven' });
+my $biblionumber1 = $biblio_1->biblionumber;
isa_ok(\$biblionumber1, 'SCALAR', '$biblionumber1 is a SCALAR');
-my $biblionumber2 = create_helper_biblio('Moffat, Steven');
+my $biblio_2 = $builder->gimme_a_biblio({ author => 'Moffat, Steven' });
+my $biblionumber2 = $biblio_2->biblionumber;
isa_ok(\$biblionumber2, 'SCALAR', '$biblionumber2 is a SCALAR');
my $oai_sets_biblios = {
#Create a biblio notice corresponding at one of mappings
-my $biblionumberVH = create_helper_biblio('Victor Hugo');
+my $biblio_VH = $builder->gimme_a_biblio({ author => 'Victor Hugo' });
+my $biblionumberVH = $biblio_VH->biblionumber;
#Update
my $record = GetMarcBiblio({ biblionumber => $biblionumberVH });
#Create a biblio notice corresponding at one of mappings
-my $biblionumberNotVH = create_helper_biblio('Sponge, Bob');
+my $biblio_NotVH = $builder->gimme_a_biblio({ author => 'Sponge, Bob' });
+my $biblionumberNotVH = $biblio_NotVH->biblionumber;
#Update
$record = GetMarcBiblio({ biblionumber => $biblionumberNotVH });
my @setsNotEq = CalcOAISetsBiblio($record);
is_deeply(@setsNotEq, $setNotVH_id, 'The $record only belongs to $setNotVH');
-
-
-# ---------- Subs --------------------------------
-
-
-# Helper method to set up a Biblio.
-sub create_helper_biblio {
- my $author = shift;
-
- return unless (defined($author));
-
- my $marcflavour = C4::Context->preference('marcflavour');
- my $bib = MARC::Record->new();
- my $title = 'Silence in the library';
-
- if ($marcflavour eq 'UNIMARC' ){
- $bib->append_fields(
- MARC::Field->new('200', ' ', ' ', f => $author),
- MARC::Field->new('200', ' ', ' ', a => $title),
- );
- }
- else{
- $bib->append_fields(
- MARC::Field->new('100', ' ', ' ', a => $author),
- MARC::Field->new('245', ' ', ' ', a => $title),
- );
- }
- my ($biblionumber)= AddBiblio($bib, '');
- return $biblionumber;
-}
-
$schema->storage->txn_rollback;
plan tests => 1;
- ( $biblionumber, $biblioitemnumber ) = get_biblio();
+ my $biblio = $builder->gimme_a_biblio();
+ my $biblionumber = $biblio->biblionumber;
my ( $icn_tag, $icn_sf ) = GetMarcFromKohaField( 'items.itemcallnumber', '' );
my ( $it_tag, $it_sf ) = GetMarcFromKohaField( 'items.itype', '' );
@serialsByStatus = C4::Serials::findSerialsByStatus( 1, $subscriptionid );
is( @serialsByStatus, 1, "ModSerialStatus delete corectly serial expected and not create another if exists" );
};
-
-sub get_biblio {
- my $bib = MARC::Record->new();
- $bib->append_fields(
- MARC::Field->new('100', ' ', ' ', a => 'Moffat, Steven'),
- MARC::Field->new('245', ' ', ' ', a => 'Silence in the library'),
- );
- my ($bibnum, $bibitemnum) = AddBiblio($bib, '');
- return ($bibnum, $bibitemnum);
-}
use Modern::Perl;
use Koha::Database;
+use C4::Biblio;
+use Koha::Biblios;
use Bytes::Random::Secure;
use Carp;
sub gimme_a_biblio {
my ( $self, $args ) = @_;
- my $itemtype = $args->{itemtype} || $self->build_object({ class => 'Koha::ItemTypes' })->itemtype;
- my $title = $args->{title} || 'Some boring read';
+ my $title = $args->{title} || 'Some boring read';
+ my $author = $args->{author} || 'Some boring author';
+ my $frameworkcode = $args->{frameworkcode} || '';
+ my $itemtype = $args->{itemtype}
+ || $self->build_object( { class => 'Koha::ItemTypes' } )->itemtype;
+
+ my $marcflavour = C4::Context->preference('marcflavour');
my $record = MARC::Record->new();
+ my ( $tag, $subfield ) = $marcflavour eq 'UNIMARC' ? ( 200, 'a' ) : ( 245, 'a' );
+ $record->append_fields(
+ MARC::Field->new( $tag, ' ', ' ', $subfield => $title ),
+ );
+
+ ( $tag, $subfield ) = $marcflavour eq 'UNIMARC' ? ( 200, 'f' ) : ( 100, 'a' );
+ $record->append_fields(
+ MARC::Field->new( $tag, ' ', ' ', $subfield => $author ),
+ );
+
+ ( $tag, $subfield ) = $marcflavour eq 'UNIMARC' ? ( 995, 'r' ) : ( 942, 'c' );
$record->append_fields(
- MARC::Field->new( '245', ' ', ' ', a => $title ),
- MARC::Field->new( '942', ' ', ' ', c => $itemtype )
+ MARC::Field->new( $tag, ' ', ' ', $subfield => $itemtype )
);
- my ($biblio_id) = AddBiblio( $record, '' );
+ my ($biblio_id) = C4::Biblio::AddBiblio( $record, $frameworkcode );
return Koha::Biblios->find($biblio_id);
}