Merge branch 'bug_7593' into 3.14-master
[koha.git] / t / db_dependent / Acquisition.t
1 #!/usr/bin/perl
2 #
3 # This Koha test module is a stub!
4 # Add more tests here!!!
5
6 use strict;
7 use warnings;
8 use Data::Dumper;
9 use POSIX qw(strftime);
10
11 use C4::Bookseller qw( GetBookSellerFromId );
12
13 use Test::More tests => 42;
14
15 BEGIN {
16     use_ok('C4::Acquisition');
17 }
18
19 my $booksellerid = 1;
20 my $booksellerinfo = GetBookSellerFromId( $booksellerid );
21 # diag( Data::Dumper->Dump( [ $booksellerinfo ], [ 'booksellerinfo' ] ) );
22 SKIP: {
23     skip 'No booksellers in database, cannot test baskets', 2 unless $booksellerinfo;
24     my ($basket, $basketno);
25     ok($basketno = NewBasket(1,1),                      "NewBasket(  1 , 1  ) returns $basketno");
26     ok($basket   = GetBasket($basketno),        "GetBasket($basketno) returns $basket");
27 }
28
29
30 my $supplierid = 1;
31 my $grouped    = 0;
32 my $orders = GetPendingOrders( $supplierid, $grouped );
33 isa_ok( $orders, 'ARRAY' );
34
35 # testing GetOrdersByBiblionumber
36 # result should be undef if no params
37 my @ordersbybiblionumber = GetOrdersByBiblionumber();
38 is(@ordersbybiblionumber,0,'GetOrdersByBiblionumber : no argument, return undef');
39 # TODO : create 2 orders using the same biblionumber, and check the result of GetOrdersByBiblionumber
40 # if a record is used in at least one order, result should be an array with at least one element
41 SKIP: {
42    skip 'No Orders, cannot test GetOrdersByBiblionumber', 3 unless( scalar @$orders );
43    my $testorder = @$orders[0];
44    my $testbiblio = $testorder->{'biblionumber'};
45    my @listorders = GetOrdersByBiblionumber($testbiblio);
46    isa_ok( ref @listorders, 'ARRAY','GetOrdersByBiblionumber : result is an array' );
47    ok( scalar (@listorders) >0,'GetOrdersByBiblionumber : result contains at least one element' );
48    my @matched_biblios = grep {$_->{biblionumber} == $testbiblio} @listorders;
49    ok ( @matched_biblios == @listorders, "all orders match");
50 }
51
52 my @lateorders = GetLateOrders(0);
53 SKIP: {
54    skip 'No Late Orders, cannot test AddClaim', 1 unless @lateorders;
55    my $order = $lateorders[0];
56    AddClaim( $order->{ordernumber} );
57    my $neworder = GetOrder( $order->{ordernumber} );
58    is( $neworder->{claimed_date}, strftime( "%Y-%m-%d", localtime(time) ), "AddClaim : Check claimed_date" );
59 }
60
61 SKIP: {
62     skip 'No relevant orders in database, cannot test baskets', 33 unless( scalar @$orders );
63     # diag( Data::Dumper->Dump( [ $orders ], [ 'orders' ] ) );
64     my @expectedfields = qw( basketno
65                              biblioitemnumber
66                              biblionumber
67                              invoiceid
68                              budgetdate
69                              cancelledby
70                              closedate
71                              creationdate
72                              currency
73                              datecancellationprinted
74                              datereceived
75                              ecost
76                              entrydate
77                              firstname
78                              freight
79                              gstrate
80                              listprice
81                              notes
82                              ordernumber
83                              purchaseordernumber
84                              quantity
85                              quantityreceived
86                              rrp
87                              sort1
88                              sort2
89                              subscriptionid
90                              supplierreference
91                              surname
92                              timestamp
93                              title
94                              totalamount
95                              unitprice );
96     my $firstorder = $orders->[0];
97     for my $field ( @expectedfields ) {
98         ok( exists( $firstorder->{ $field } ), "This order has a $field field" );
99     }
100 }