5 use DateTime::Duration;
13 use Test::More tests => 16;
16 use_ok('C4::Circulation');
36 my $dbh = C4::Context->dbh;
37 $dbh->{RaiseError} = 1;
38 $dbh->{AutoCommit} = 0;
40 $dbh->do(q|DELETE FROM issues|);
41 $dbh->do(q|DELETE FROM borrowers|);
42 $dbh->do(q|DELETE FROM items|);
43 $dbh->do(q|DELETE FROM branches|);
44 $dbh->do(q|DELETE FROM categories|);
45 $dbh->do(q|DELETE FROM accountlines|);
48 my @USERENV = ( 1, 'test', 'MASTERTEST', 'Test', 'Test', 't', 'Test', 0, );
50 C4::Context->_new_userenv('DUMMY_SESSION_ID');
51 C4::Context->set_userenv(@USERENV);
53 my $userenv = C4::Context->userenv
54 or BAIL_OUT("No userenv");
58 my $dt_today = dt_from_string;
59 my $today = output_pref( $dt_today, 'iso', '24hr', 1 );
61 my $dt_today2 = dt_from_string;
62 my $dur10 = DateTime::Duration->new( days => -10 );
63 $dt_today2->add_duration($dur10);
64 my $daysago10 = output_pref( $dt_today2, 'iso', '24hr', 1 );
66 #Add branch and category
70 branchname => 'Sample Branch',
71 branchaddress1 => 'sample adr1',
72 branchaddress2 => 'sample adr2',
73 branchaddress3 => 'sample adr3',
74 branchzip => 'sample zip',
75 branchcity => 'sample city',
76 branchstate => 'sample state',
77 branchcountry => 'sample country',
78 branchphone => 'sample phone',
79 branchfax => 'sample fax',
80 branchemail => 'sample email',
81 branchurl => 'sample url',
82 branchip => 'sample ip',
83 branchprinter => undef,
84 opac_info => 'sample opac',
89 branchname => 'Sample Branch2',
90 branchaddress1 => 'sample adr1_2',
91 branchaddress2 => 'sample adr2_2',
92 branchaddress3 => 'sample adr3_2',
93 branchzip => 'sample zip2',
94 branchcity => 'sample city2',
95 branchstate => 'sample state2',
96 branchcountry => 'sample country2',
97 branchphone => 'sample phone2',
98 branchfax => 'sample fax2',
99 branchemail => 'sample email2',
100 branchurl => 'sample url2',
101 branchip => 'sample ip2',
102 branchprinter => undef,
103 opac_info => 'sample opac2',
105 ModBranch($samplebranch1);
106 ModBranch($samplebranch2);
109 categorycode => 'CAT1',
110 description => 'Description1',
111 enrolmentperiod => 'Null',
112 enrolmentperioddate => 'Null',
113 dateofbirthrequired => 'Null',
116 enrolmentfee => 'Null',
117 overduenoticerequired => 'Null',
118 issuelimit => 'Null',
119 reservefee => 'Null',
121 category_type => 'Null'
124 "INSERT INTO categories (categorycode,description,enrolmentperiod,enrolmentperioddate,dateofbirthrequired ,finetype,bulk,enrolmentfee,overduenoticerequired,issuelimit ,reservefee ,hidelostitems ,category_type) VALUES( ?,?,?,?,?,?,?,?,?,?,?,?,?)";
127 $samplecat->{categorycode}, $samplecat->{description},
128 $samplecat->{enrolmentperiod}, $samplecat->{enrolmentperioddate},
129 $samplecat->{dateofbirthrequired}, $samplecat->{finetype},
130 $samplecat->{bulk}, $samplecat->{enrolmentfee},
131 $samplecat->{overduenoticerequired}, $samplecat->{issuelimit},
132 $samplecat->{reservefee}, $samplecat->{hidelostitems},
133 $samplecat->{category_type}
137 my $record = MARC::Record->new();
138 $record->append_fields(
139 MARC::Field->new( '952', '0', '0', a => $samplebranch1->{branchcode} ) );
140 my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '', );
142 my @sampleitem1 = C4::Items::AddItem(
145 itemcallnumber => 'callnumber1',
146 homebranch => $samplebranch1->{branchcode},
147 holdingbranch => $samplebranch1->{branchcode},
153 my $item_id1 = $sampleitem1[2];
154 my @sampleitem2 = C4::Items::AddItem(
157 itemcallnumber => 'callnumber2',
158 homebranch => $samplebranch2->{branchcode},
159 holdingbranch => $samplebranch2->{branchcode},
165 my $item_id2 = $sampleitem2[2];
168 my $borrower_id1 = C4::Members::AddMember(
169 firstname => 'firstname1',
170 surname => 'surname1 ',
171 categorycode => $samplecat->{categorycode},
172 branchcode => $samplebranch1->{branchcode},
174 my $borrower_id2 = C4::Members::AddMember(
175 firstname => 'firstname2',
176 surname => 'surname2 ',
177 categorycode => $samplecat->{categorycode},
178 branchcode => $samplebranch2->{branchcode},
184 $query = " SELECT count(*) FROM issues";
185 my $sth = $dbh->prepare($query);
187 my $countissue = $sth -> fetchrow_array;
188 is ($countissue ,0, "there is no issue");
189 my $datedue1 = C4::Circulation::AddIssue( $borrower_id1, "code", $daysago10,0, $today, '' );
192 qr/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/,
193 "AddRenewal returns a date"
195 my $issue_id1 = $dbh->last_insert_id( undef, undef, 'issues', undef );
197 my $datedue2 = C4::Circulation::AddIssue( $borrower_id1, 'Barcode2' );
198 is( $datedue2, undef, "AddIssue returns undef if no datedue is specified" );
199 my $issue_id2 = $dbh->last_insert_id( undef, undef, 'issues', undef );
202 $countissue = $sth -> fetchrow_array;
203 #FIXME: Currently AddIssue doesn't add correctly issues
204 #is ($countissue,2,"2 issues have been added");
206 #Test AddIssuingCharge
207 $query = " SELECT count(*) FROM accountlines";
208 $sth = $dbh->prepare($query);
210 my $countaccount = $sth -> fetchrow_array;
211 is ($countaccount,0,"0 accountline exists");
212 is( C4::Circulation::AddIssuingCharge( $item_id1, $borrower_id1, 10 ),
213 1, "An issuing charge has been added" );
214 my $account_id = $dbh->last_insert_id( undef, undef, 'accountlines', undef );
216 $countaccount = $sth -> fetchrow_array;
217 is ($countaccount,1,"1 accountline has been added");
221 AddRenewal( $borrower_id1, $item_id1, $samplebranch1->{branchcode},
222 $datedue1, $daysago10 );
225 qr/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/,
226 "AddRenewal returns a date"
229 #Test GetBiblioIssues
230 is( GetBiblioIssues(), undef, "GetBiblio Issues without parameters" );
233 #FIXME : As the issues are not correctly added in the database, these tests don't work correctly
234 is(GetItemIssue,undef,"Without parameter GetItemIssue returns undef");
235 #is(GetItemIssue($item_id1),{},"Item1's issues");
238 #FIXME: this routine currently doesn't work be
239 #is_deeply (GetItemIssues,{},"Without parameter, GetItemIssue returns all the issues");
242 is( GetOpenIssue(), undef, "Without parameter GetOpenIssue returns undef" );
243 is( GetOpenIssue(-1), undef,
244 "With wrong parameter GetOpenIssue returns undef" );
245 my $openissue = GetOpenIssue($item_id1);
248 my @renewcount = C4::Circulation::GetRenewCount();
252 "Without paramater, GetRenewCount returns renewcount0,renewsallowed = 0,renewsleft = 0"
254 @renewcount = C4::Circulation::GetRenewCount(-1);
258 "Without wrong, GetRenewCount returns renewcount0,renewsallowed = 0,renewsleft = 0"
260 @renewcount = C4::Circulation::GetRenewCount($item_id1);
261 is_deeply( \@renewcount, [ 0, 1, 1 ], "Getrenewcount of item1 returns" );