Koha/t/db_dependent/Acquisition.t
Galen Charlton 9c5e40e492 Bug 10403: (follow-up) fix test to use vendor created earlier during test
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2013-11-01 02:31:22 +00:00

223 lines
6.5 KiB
Perl
Executable file

#!/usr/bin/perl
#
# This Koha test module is a stub!
# Add more tests here!!!
use Modern::Perl;
use POSIX qw(strftime);
use C4::Bookseller qw( GetBookSellerFromId );
use Test::More tests => 60;
BEGIN {
use_ok('C4::Acquisition');
use_ok('C4::Bookseller');
use_ok('C4::Biblio');
use_ok('C4::Budgets');
use_ok('C4::Bookseller');
}
my $dbh = C4::Context->dbh;
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
my $booksellerid = C4::Bookseller::AddBookseller(
{
name => "my vendor",
address1 => "bookseller's address",
phone => "0123456",
active => 1,
deliverytime => 5,
}
);
my $booksellerinfo = C4::Bookseller::GetBookSellerFromId( $booksellerid );
is($booksellerinfo->{deliverytime}, 5, 'set deliverytime when creating vendor (Bug 10556)');
my ($basket, $basketno);
ok($basketno = NewBasket($booksellerid, 1), "NewBasket( $booksellerid , 1 ) returns $basketno");
ok($basket = GetBasket($basketno), "GetBasket($basketno) returns $basket");
my $budgetid = C4::Budgets::AddBudget(
{
budget_code => "budget_code_test_getordersbybib",
budget_name => "budget_name_test_getordersbybib",
}
);
my $budget = C4::Budgets::GetBudget( $budgetid );
my ($ordernumber1, $ordernumber2, $ordernumber3);
my ($biblionumber1, $biblioitemnumber1) = AddBiblio(MARC::Record->new, '');
my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, '');
( undef, $ordernumber1 ) = C4::Acquisition::NewOrder(
{
basketno => $basketno,
quantity => 24,
biblionumber => $biblionumber1,
budget_id => $budget->{budget_id},
}
);
( undef, $ordernumber2 ) = C4::Acquisition::NewOrder(
{
basketno => $basketno,
quantity => 42,
biblionumber => $biblionumber2,
budget_id => $budget->{budget_id},
}
);
( undef, $ordernumber3 ) = C4::Acquisition::NewOrder(
{
basketno => $basketno,
quantity => 4,
biblionumber => $biblionumber2,
budget_id => $budget->{budget_id},
ecost => 42,
rrp => 42,
}
);
my $orders = SearchOrders({
booksellerid => $booksellerid,
pending => 1
});
isa_ok( $orders, 'ARRAY' );
is(scalar(@$orders), 3, 'retrieved 3 pending orders');
ok( GetBudgetByOrderNumber($ordernumber1)->{'budget_id'} eq $budgetid, "GetBudgetByOrderNumber returns expected budget" );
C4::Acquisition::CloseBasket( $basketno );
my @lateorders = GetLateOrders(0);
my $order = $lateorders[0];
AddClaim( $order->{ordernumber} );
my $neworder = GetOrder( $order->{ordernumber} );
is( $neworder->{claimed_date}, strftime( "%Y-%m-%d", localtime(time) ), "AddClaim : Check claimed_date" );
my @expectedfields = qw( basketno
biblionumber
invoiceid
budgetdate
cancelledby
closedate
creationdate
currency
datecancellationprinted
datereceived
ecost
entrydate
firstname
freight
gstrate
listprice
notes
ordernumber
purchaseordernumber
quantity
quantityreceived
rrp
sort1
sort2
subscriptionid
supplierreference
surname
timestamp
title
totalamount
unitprice );
my $firstorder = $orders->[0];
for my $field ( @expectedfields ) {
ok( exists( $firstorder->{ $field } ), "This order has a $field field" );
}
# fake receiving the order
ModOrder({
ordernumber => $firstorder->{ordernumber},
biblionumber => $firstorder->{biblionumber},
quantityreceived => $firstorder->{quantity},
});
my $pendingorders = SearchOrders({
booksellerid => $booksellerid,
pending => 1
});
is(scalar(@$pendingorders), 2, 'retrieved 2 pending orders after receiving on one (bug 10723)');
my $allorders = SearchOrders({
booksellerid => $booksellerid,
});
is(scalar(@$allorders), 3, 'retrieved all 3 orders even after after receiving on one (bug 10723)');
my $invoiceid = AddInvoice(
invoicenumber => 'invoice',
booksellerid => $booksellerid,
unknown => "unknown"
);
my ($datereceived, $new_ordernumber) = ModReceiveOrder(
$biblionumber2,
$ordernumber2,
2,
undef,
12,
12,
$invoiceid,
42,
);
my $order2 = GetOrder( $ordernumber2 );
is($order2->{'quantityreceived'}, 0, 'Splitting up order did not receive any on original order');
is($order2->{'quantity'}, 40, '40 items on original order');
is($order2->{'budget_id'}, $budgetid, 'Budget on original order is unchanged');
$neworder = GetOrder( $new_ordernumber );
is($neworder->{'quantity'}, 2, '2 items on new order');
is($neworder->{'quantityreceived'}, 2, 'Splitting up order received items on new order');
is($neworder->{'budget_id'}, $budgetid, 'Budget on new order is unchanged');
my $budgetid2 = C4::Budgets::AddBudget(
{
budget_code => "budget_code_test_modrecv",
budget_name => "budget_name_test_modrecv",
}
);
($datereceived, $new_ordernumber) = ModReceiveOrder(
$biblionumber2,
$ordernumber3,
2,
undef,
12,
12,
$invoiceid,
42,
$budgetid2
);
my $order3 = GetOrder( $ordernumber3 );
is($order3->{'quantityreceived'}, 0, 'Splitting up order did not receive any on original order');
is($order3->{'quantity'}, 2, '2 items on original order');
is($order3->{'budget_id'}, $budgetid, 'Budget on original order is unchanged');
$neworder = GetOrder( $new_ordernumber );
is($neworder->{'quantity'}, 2, '2 items on new order');
is($neworder->{'quantityreceived'}, 2, 'Splitting up order received items on new order');
is($neworder->{'budget_id'}, $budgetid2, 'Budget on new order is changed');
($datereceived, $new_ordernumber) = ModReceiveOrder(
$biblionumber2,
$ordernumber3,
2,
undef,
12,
12,
$invoiceid,
42,
$budgetid2
);
$order3 = GetOrder( $ordernumber3 );
is($order3->{'quantityreceived'}, 2, 'Order not split up');
is($order3->{'quantity'}, 2, '2 items on order');
is($order3->{'budget_id'}, $budgetid2, 'Budget has changed');
$dbh->rollback;