Koha/t/db_dependent/Acquisition.t
Galen Charlton a97f21ad3b Bug 11777: add regression test
This patch adds a regression test for ensuring that the
authorisedby field is returned by SearchOrders().

To test:

[1] Upon applying the main patch, verify that
    prove -v t/db_dependent/Acquisition.t passes.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
2014-02-19 17:14:25 +00:00

227 lines
6.7 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 => 63;
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( exists( @$orders[0]->{basketgroupid} ), "SearchOrder: The basketgroupid key exists" );
ok( exists( @$orders[0]->{basketgroupname} ), "SearchOrder: The basketgroupname key exists" );
ok( exists( @$orders[0]->{authorisedby} ), "SearchOrders: The authorised key exists (bug 11777)" );
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;