Modifying Members : Add Mod and GetMember
[koha-equinox.git] / t / 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::Context;
11 use C4::Members;
12 use Time::localtime;
13
14 sub testing_class { 'C4::Acquisition' };
15
16
17 sub methods : Test( 1 ) {
18     my $self = shift;
19     my @methods = qw(  GetBasket 
20                        NewBasket 
21                        CloseBasket 
22                        GetPendingOrders 
23                        GetOrders 
24                        GetOrderNumber 
25                        GetOrder 
26                        NewOrder 
27                        ModOrder 
28                        ModOrderBiblioNumber 
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 ( $basketno, $ordnum ) = NewOrder( undef, # $basketno,
75                                           $self->{'biblios'}[0], # $bibnum,
76                                           undef, # $title,
77                                           1, # $quantity,
78                                           undef, # $listprice,
79                                           $self->{'booksellerid'}, # $booksellerid,
80                                           $param{'authorizedby'}, # $authorisedby,
81                                           undef, # $notes,
82                                           $self->{'bookfundid'},     # $bookfund,
83                                           undef, # $bibitemnum,
84                                           1, # $rrp,
85                                           1, # $ecost,
86                                           undef, # $gst,
87                                           undef, # $budget,
88                                           undef, # $cost,
89                                           undef, # $sub,
90                                           $param{'invoice'}, # $invoice,
91                                           undef, # $sort1,
92                                           undef, # $sort2,
93                                           undef, # $purchaseorder
94                                      );
95     ok( $basketno, "my basket number is $basketno" );
96     ok( $ordnum,   "my order number is $ordnum" );
97     
98     my $order = GetOrder( $ordnum );
99     is( $order->{'ordernumber'}, $ordnum, 'got the right order' )
100       or diag( Data::Dumper->Dump( [ $order ], [ 'order' ] ) );
101     
102     is( $order->{'budgetdate'}, $today, "the budget date is $today" );
103
104     # XXX should I stuff these in $self?
105     return ( $basketno, $ordnum );
106     
107 }
108
109
110 sub enable_independant_branches {
111     my $self = shift;
112     
113     my $member = GetMember( 'borrowernumber' =>$self->{'memberid'} );
114     
115     C4::Context::set_userenv( 0, # usernum
116                               $self->{'memberid'}, # userid
117                               undef, # usercnum
118                               undef, # userfirstname
119                               undef, # usersurname
120                               $member->{'branchcode'}, # userbranch
121                               undef, # branchname
122                               0, # userflags
123                               undef, # emailaddress
124                               undef, # branchprinter
125                          );
126
127     # set a preference. There's surely a method for this, but I can't find it.
128     my $retval = C4::Context->dbh->do( q(update systempreferences set value = '1' where variable = 'IndependantBranches') );
129     ok( $retval, 'set the preference' );
130     
131     ok( C4::Context->userenv, 'usernev' );
132     isnt( C4::Context->userenv->{flags}, 1, 'flag != 1' )
133       or diag( Data::Dumper->Dump( [ C4::Context->userenv ], [ 'userenv' ] ) );
134
135     is( C4::Context->userenv->{branch}, $member->{'branchcode'}, 'we have set the right branch in C4::Context: ' . $member->{'branchcode'} );
136     
137 }
138
139 sub disable_independant_branches {
140     my $self = shift;
141
142     my $retval = C4::Context->dbh->do( q(update systempreferences set value = '0' where variable = 'IndependantBranches') );
143     ok( $retval, 'set the preference back' );
144
145     
146 }
147 1;