Line 0
Link Here
|
0 |
- |
1 |
#!/usr/bin/perl |
|
|
2 |
|
3 |
use Modern::Perl; |
4 |
use C4::Biblio; |
5 |
use C4::Context; |
6 |
use C4::Items; |
7 |
use C4::Branch; |
8 |
use C4::Circulation; |
9 |
use Koha::DateUtils; |
10 |
use DateTime::Duration; |
11 |
|
12 |
use Test::More tests => 12; |
13 |
|
14 |
BEGIN { |
15 |
use_ok('C4::Circulation'); |
16 |
} |
17 |
can_ok( |
18 |
'C4::Circulation', |
19 |
qw( |
20 |
CreateBranchTransferLimit |
21 |
DeleteBranchTransferLimits |
22 |
DeleteTransfer |
23 |
GetTransfers |
24 |
GetTransfersFromTo |
25 |
) |
26 |
); |
27 |
|
28 |
#Start transaction |
29 |
my $dbh = C4::Context->dbh; |
30 |
$dbh->{RaiseError} = 1; |
31 |
$dbh->{AutoCommit} = 0; |
32 |
|
33 |
$dbh->do(q|DELETE FROM issues|); |
34 |
$dbh->do(q|DELETE FROM borrowers|); |
35 |
$dbh->do(q|DELETE FROM items|); |
36 |
$dbh->do(q|DELETE FROM branches|); |
37 |
$dbh->do(q|DELETE FROM branch_transfer_limits|); |
38 |
$dbh->do(q|DELETE FROM branchtransfers|); |
39 |
|
40 |
#Add sample datas |
41 |
#Add branches |
42 |
my $samplebranch1 = { |
43 |
add => 1, |
44 |
branchcode => 'SAB1', |
45 |
branchname => 'Sample Branch', |
46 |
branchaddress1 => 'sample adr1', |
47 |
branchaddress2 => 'sample adr2', |
48 |
branchaddress3 => 'sample adr3', |
49 |
branchzip => 'sample zip', |
50 |
branchcity => 'sample city', |
51 |
branchstate => 'sample state', |
52 |
branchcountry => 'sample country', |
53 |
branchphone => 'sample phone', |
54 |
branchfax => 'sample fax', |
55 |
branchemail => 'sample email', |
56 |
branchurl => 'sample url', |
57 |
branchip => 'sample ip', |
58 |
branchprinter => undef, |
59 |
opac_info => 'sample opac', |
60 |
}; |
61 |
my $samplebranch2 = { |
62 |
add => 1, |
63 |
branchcode => 'SAB2', |
64 |
branchname => 'Sample Branch2', |
65 |
branchaddress1 => 'sample adr1_2', |
66 |
branchaddress2 => 'sample adr2_2', |
67 |
branchaddress3 => 'sample adr3_2', |
68 |
branchzip => 'sample zip2', |
69 |
branchcity => 'sample city2', |
70 |
branchstate => 'sample state2', |
71 |
branchcountry => 'sample country2', |
72 |
branchphone => 'sample phone2', |
73 |
branchfax => 'sample fax2', |
74 |
branchemail => 'sample email2', |
75 |
branchurl => 'sample url2', |
76 |
branchip => 'sample ip2', |
77 |
branchprinter => undef, |
78 |
opac_info => 'sample opac2', |
79 |
}; |
80 |
ModBranch($samplebranch1); |
81 |
ModBranch($samplebranch2); |
82 |
|
83 |
#Add biblio and items |
84 |
my $record = MARC::Record->new(); |
85 |
$record->append_fields( |
86 |
MARC::Field->new( '952', '0', '0', a => $samplebranch1->{branchcode} ) ); |
87 |
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '', ); |
88 |
|
89 |
my @sampleitem1 = C4::Items::AddItem( |
90 |
{ |
91 |
barcode => 1, |
92 |
itemcallnumber => 'callnumber1', |
93 |
homebranch => $samplebranch1->{branchcode}, |
94 |
holdingbranch => $samplebranch1->{branchcode} |
95 |
}, |
96 |
$biblionumber |
97 |
); |
98 |
my $item_id1 = $sampleitem1[2]; |
99 |
my @sampleitem2 = C4::Items::AddItem( |
100 |
{ |
101 |
barcode => 2, |
102 |
itemcallnumber => 'callnumber2', |
103 |
homebranch => $samplebranch1->{branchcode}, |
104 |
holdingbranch => $samplebranch1->{branchcode} |
105 |
}, |
106 |
$biblionumber |
107 |
); |
108 |
my $item_id2 = $sampleitem2[2]; |
109 |
|
110 |
#Add transfers |
111 |
ModItemTransfer( |
112 |
$item_id1, |
113 |
$samplebranch1->{branchcode}, |
114 |
$samplebranch2->{branchcode} |
115 |
); |
116 |
ModItemTransfer( |
117 |
$item_id2, |
118 |
$samplebranch1->{branchcode}, |
119 |
$samplebranch2->{branchcode} |
120 |
); |
121 |
|
122 |
#Begin Tests |
123 |
#Test CreateBranchTransferLimit |
124 |
is( |
125 |
CreateBranchTransferLimit( |
126 |
$samplebranch2->{branchcode}, |
127 |
$samplebranch1->{branchcode}, 'CODE' |
128 |
), |
129 |
1, |
130 |
"A Branch TransferLimit has been added" |
131 |
); |
132 |
#FIXME :The following test should pass but doesn't because currently the routine CreateBranchTransferLimit returns nothing |
133 |
#is(CreateBranchTransferLimit(),undef,"Without parameters CreateBranchTransferLimit returns undef"); |
134 |
|
135 |
#Test GetTransfers |
136 |
my $dt_today = dt_from_string( undef, 'sql', undef ); |
137 |
my $today = $dt_today->strftime("%Y-%m-%d %H:%M:%S"); |
138 |
|
139 |
my @transfers = GetTransfers($item_id1); |
140 |
is_deeply( |
141 |
\@transfers, |
142 |
[ $today, $samplebranch1->{branchcode}, $samplebranch2->{branchcode} ], |
143 |
"Transfers of the item1" |
144 |
); #NOTE: Only the first transfer is returned |
145 |
@transfers = GetTransfers; |
146 |
is_deeply( \@transfers, [], |
147 |
"GetTransfers without params returns an empty array" ); |
148 |
@transfers = GetTransfers(-1); |
149 |
is_deeply( \@transfers, [], |
150 |
"GetTransfers with a wrong item id returns an empty array" ); |
151 |
|
152 |
#Test GetTransfersFromTo |
153 |
my @transferfrom1to2 = GetTransfersFromTo( $samplebranch1->{branchcode}, |
154 |
$samplebranch2->{branchcode} ); |
155 |
is_deeply( |
156 |
\@transferfrom1to2, |
157 |
[ |
158 |
{ |
159 |
itemnumber => $item_id1, |
160 |
datesent => $today, |
161 |
frombranch => $samplebranch1->{branchcode} |
162 |
}, |
163 |
{ |
164 |
itemnumber => $item_id2, |
165 |
datesent => $today, |
166 |
frombranch => $samplebranch1->{branchcode} |
167 |
} |
168 |
], |
169 |
"Item1 and Item2 has been transfered from branch1 to branch2" |
170 |
); |
171 |
my @transferto = GetTransfersFromTo( undef, $samplebranch2->{branchcode} ); |
172 |
is_deeply( \@transferto, [], |
173 |
"GetTransfersfromTo without frombranch returns an empty array" ); |
174 |
my @transferfrom = GetTransfersFromTo( $samplebranch1->{branchcode} ); |
175 |
is_deeply( \@transferfrom, [], |
176 |
"GetTransfersfromTo without tobranch returns an empty array" ); |
177 |
@transferfrom = GetTransfersFromTo(); |
178 |
is_deeply( \@transferfrom, [], |
179 |
"GetTransfersfromTo without params returns an empty array" ); |
180 |
|
181 |
#Test DeleteBranchTransferLimits |
182 |
is( |
183 |
C4::Circulation::DeleteBranchTransferLimits( $samplebranch1->{branchcode} ), |
184 |
1, |
185 |
"A Branch TransferLimit has been deleted" |
186 |
); |
187 |
#FIXME :The following test should pass but doesn't because currently the routine DeleteBranchTransferLimit returns nothin |
188 |
#is(C4::Circulation::DeleteBranchTransferLimits(),undef,"Without parameters DeleteBranchTransferLimit returns undef"); |
189 |
|
190 |
#Test DeleteTransfer |
191 |
is( C4::Circulation::DeleteTransfer($item_id1), |
192 |
1, "A the item1's transfer has been deleted" ); |
193 |
#FIXME :The following tests should pass but don't because currently the routine DeleteTransfer returns nothing |
194 |
#is(C4::Circulation::DeleteTransfer(),undef,"Without itemid DeleteTransfer returns undef"); |
195 |
#is(C4::Circulation::DeleteTransfer(-1),0,"with a wrong itemid DeleteTranfer returns 0"); |
196 |
|
197 |
#End transaction |
198 |
$dbh->rollback; |
199 |
|