Merge remote-tracking branch 'kc/new/bug_5995' into kcmaster
[koha.git] / t / db_dependent / lib / KohaTest / Acquisition.pm
1 package KohaTest::Acquisition;
2 use base qw( KohaTest );
3
4 use strict;
5 use warnings;
6
7 use Test::More;
8
9 use C4::Acquisition;
10 use C4::Budgets;
11 use C4::Context;
12 use C4::Members;
13 use Time::localtime;
14
15 sub testing_class { 'C4::Acquisition' };
16
17
18 sub methods : Test( 1 ) {
19     my $self = shift;
20     my @methods = qw(  GetBasket 
21                        NewBasket 
22                        CloseBasket 
23                        GetPendingOrders 
24                        GetOrders 
25                        GetOrderNumber 
26                        GetOrder 
27                        NewOrder 
28                        ModOrder 
29                        ModReceiveOrder 
30                        SearchOrder 
31                        DelOrder 
32                        GetParcel 
33                        GetParcels 
34                        GetLateOrders 
35                        GetHistory 
36                        GetRecentAcqui 
37                 );
38     
39     can_ok( $self->testing_class, @methods );    
40 }
41
42 =head3 create_new_basket
43
44   creates a baseket by creating an order with no baseket number.
45
46   named parameters:
47     authorizedby
48     invoice
49     date
50
51   returns: baseket number, order number
52
53   runs 4 tests
54
55 =cut
56
57 sub create_new_basket {
58     my $self = shift;
59     my %param = @_;
60     $param{'authorizedby'} = $self->{'memberid'} unless exists $param{'authorizedby'};
61     $param{'invoice'}      = 123                 unless exists $param{'invoice'};
62     
63     my $today = sprintf( '%04d-%02d-%02d',
64                          localtime->year() + 1900,
65                          localtime->mon() + 1,
66                          localtime->mday() );
67     
68     # I actually think that this parameter is unused.
69     $param{'date'}         = $today              unless exists $param{'date'};
70
71     $self->add_biblios( add_items => 1 );
72     ok( scalar @{$self->{'biblios'}} > 0, 'we have added at least one biblio' );
73
74     my $rand = int(rand(10000));
75     my $basketno = NewBasket( $self->{'booksellerid'}, $param{'authorizedby'},  "Basket $rand");
76 #             $basketnote, $basketbooksellernote, $basketcontractnumber );
77 #   The following keys are used: "biblionumber", "title", "basketno", "quantity", "notes", "biblioitemnumber", "rrp", "ecost", "gst", "unitprice", "subscription", "sort1", "sort2", "booksellerinvoicenumber", "listprice", "budgetdate", "purchaseordernumber", "branchcode", "booksellerinvoicenumber", "bookfundid".
78     my $budget_id = AddBudget( { budget_name => "Budget $rand" } );
79     my ( undef, $ordernumber ) = NewOrder( {
80             basketno => $basketno,
81             budget_id => $budget_id,
82             biblionumber => $self->{'biblios'}[0],
83             quantity => 1,
84             bookfundid => $self->{'bookfundid'},
85             rrp => 1,
86             ecost => 1,
87             booksellerinvoicenumber => $param{'invoice'},
88         } );
89     ok( $basketno, "my basket number is $basketno" );
90     ok( $ordernumber,   "my order number is $ordernumber" );
91     
92     my $order = GetOrder( $ordernumber );
93     is( $order->{'ordernumber'}, $ordernumber, 'got the right order' )
94       or diag( Data::Dumper->Dump( [ $order ], [ 'order' ] ) );
95     
96     is( $order->{'budgetdate'}, $today, "the budget date is $today" );
97
98     # XXX should I stuff these in $self?
99     return ( $basketno, $ordernumber );
100     
101 }
102
103
104 sub enable_independant_branches {
105     my $self = shift;
106     
107     my $member = GetMember( 'borrowernumber' =>$self->{'memberid'} );
108     
109     C4::Context::set_userenv( 0, # usernum
110                               $self->{'memberid'}, # userid
111                               undef, # usercnum
112                               undef, # userfirstname
113                               undef, # usersurname
114                               $member->{'branchcode'}, # userbranch
115                               undef, # branchname
116                               0, # userflags
117                               undef, # emailaddress
118                               undef, # branchprinter
119                          );
120
121     # set a preference. There's surely a method for this, but I can't find it.
122     my $retval = C4::Context->dbh->do( q(update systempreferences set value = '1' where variable = 'IndependantBranches') );
123     ok( $retval, 'set the preference' );
124     
125     ok( C4::Context->userenv, 'usernev' );
126     isnt( C4::Context->userenv->{flags}, 1, 'flag != 1' )
127       or diag( Data::Dumper->Dump( [ C4::Context->userenv ], [ 'userenv' ] ) );
128
129     is( C4::Context->userenv->{branch}, $member->{'branchcode'}, 'we have set the right branch in C4::Context: ' . $member->{'branchcode'} );
130     
131 }
132
133 sub disable_independant_branches {
134     my $self = shift;
135
136     my $retval = C4::Context->dbh->do( q(update systempreferences set value = '0' where variable = 'IndependantBranches') );
137     ok( $retval, 'set the preference back' );
138
139     
140 }
141 1;