Bug 5336: (follow-up) use understandable codes rather than magic numbers for orderstatus
[koha.git] / t / db_dependent / Acquisition / close_reopen_basket.t
1 #!/usr/bin/env perl
2
3 use Modern::Perl;
4
5 use Test::More tests => 6;
6 use C4::Acquisition;
7 use C4::Biblio qw( AddBiblio DelBiblio );
8 use C4::Bookseller;
9 use C4::Budgets;
10 use C4::Context;
11
12 # Start transaction
13 my $dbh = C4::Context->dbh;
14 $dbh->{AutoCommit} = 0;
15 $dbh->{RaiseError} = 1;
16
17 $dbh->do(q{
18     DELETE FROM aqorders;
19 });
20
21 my $booksellerid = C4::Bookseller::AddBookseller(
22     {
23         name => "my vendor",
24         address1 => "bookseller's address",
25         phone => "0123456",
26         active => 1
27     }
28 );
29
30 my $basketno = C4::Acquisition::NewBasket(
31     $booksellerid
32 );
33
34 my $budgetid = C4::Budgets::AddBudget(
35     {
36         budget_code => "budget_code_test_close_reopen",
37         budget_name => "budget_name_test_close_reopen",
38     }
39 );
40
41 my $budget = C4::Budgets::GetBudget( $budgetid );
42
43 my ($biblionumber1, $biblioitemnumber1) = AddBiblio(MARC::Record->new, '');
44 my ($biblionumber2, $biblioitemnumber2) = AddBiblio(MARC::Record->new, '');
45
46 my ($ordernumber1, $ordernumber2);
47 ( undef, $ordernumber1 ) = C4::Acquisition::NewOrder(
48     {
49         basketno => $basketno,
50         quantity => 24,
51         biblionumber => $biblionumber1,
52         budget_id => $budget->{budget_id},
53     }
54 );
55
56 ( undef, $ordernumber2 ) = C4::Acquisition::NewOrder(
57     {
58         basketno => $basketno,
59         quantity => 42,
60         biblionumber => $biblionumber2,
61         budget_id => $budget->{budget_id},
62     }
63 );
64
65 my $nb_biblio = C4::Acquisition::GetBiblioCountByBasketno( $basketno );
66 is ( $nb_biblio, 2, "There are 2 biblio for this basket" );
67 my @orders = C4::Acquisition::GetOrders( $basketno );
68 is( scalar(@orders), 2, "2 orders are created" );
69 is ( scalar( map { $_->{orderstatus} eq 'new' ? 1 : () } @orders ), 2, "2 orders are new before closing the basket" );
70
71 C4::Acquisition::CloseBasket( $basketno );
72 @orders = C4::Acquisition::GetOrders( $basketno );
73 is ( scalar( map { $_->{orderstatus} eq 'ordered' ? 1 : () } @orders ), 2, "2 orders are ordered, the basket is closed" );
74
75 C4::Acquisition::ReopenBasket( $basketno );
76 @orders = C4::Acquisition::GetOrders( $basketno );
77 is ( scalar( map { $_->{orderstatus} eq 'ordered' ? 1 : () } @orders ), 0, "No order are ordered, the basket is reopen" );
78 is ( scalar( map { $_->{orderstatus} eq 'new' ? 1 : () } @orders ), 2, "2 orders are new, the basket is reopen" );
79
80 $dbh->rollback;