View | Details | Raw Unified | Return to bug 10683
Collapse All | Expand All

(-)a/t/db_dependent/Circulation_Branch.t (+242 lines)
Line 0 Link Here
1
#!/usr/bin/perl
2
3
use Modern::Perl;
4
use C4::Biblio;
5
use C4::Members;
6
use C4::Branch;
7
use C4::Circulation;
8
use C4::Items;
9
use C4::Context;
10
11
use Test::More tests => 10;
12
13
BEGIN {
14
    use_ok('C4::Circulation');
15
}
16
17
can_ok( 'C4::Circulation', qw(
18
                            GetBranchBorrowerCircRule
19
                            GetBranchItemRule
20
                            )
21
);
22
23
#Start transaction
24
my $dbh = C4::Context->dbh;
25
$dbh->{RaiseError} = 1;
26
$dbh->{AutoCommit} = 0;
27
28
$dbh->do(q|DELETE FROM issues|);
29
$dbh->do(q|DELETE FROM borrowers|);
30
$dbh->do(q|DELETE FROM items|);
31
$dbh->do(q|DELETE FROM branches|);
32
$dbh->do(q|DELETE FROM categories|);
33
$dbh->do(q|DELETE FROM accountlines|);
34
$dbh->do(q|DELETE FROM itemtypes|);
35
$dbh->do(q|DELETE FROM branch_item_rules|);
36
$dbh->do(q|DELETE FROM branch_borrower_circ_rules|);
37
$dbh->do(q|DELETE FROM default_branch_circ_rules|);
38
$dbh->do(q|DELETE FROM default_circ_rules|);
39
$dbh->do(q|DELETE FROM default_branch_item_rules|);
40
41
#Add branch and category
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
my $samplecat = {
84
    categorycode          => 'CAT1',
85
    description           => 'Description1',
86
    enrolmentperiod       => 'Null',
87
    enrolmentperioddate   => 'Null',
88
    dateofbirthrequired   => 'Null',
89
    finetype              => 'Null',
90
    bulk                  => 'Null',
91
    enrolmentfee          => 'Null',
92
    overduenoticerequired => 'Null',
93
    issuelimit            => 'Null',
94
    reservefee            => 'Null',
95
    hidelostitems         => 0,
96
    category_type         => 'Null'
97
};
98
my $query =
99
"INSERT INTO categories (categorycode,
100
                        description,
101
                        enrolmentperiod,
102
                        enrolmentperioddate,
103
                        dateofbirthrequired ,
104
                        finetype,
105
                        bulk,
106
                        enrolmentfee,
107
                        overduenoticerequired,
108
                        issuelimit,
109
                        reservefee,
110
                        hidelostitems,
111
                        category_type
112
                        )
113
VALUES( ?,?,?,?,?,?,?,?,?,?,?,?,?)";
114
$dbh->do(
115
    $query, {},
116
    $samplecat->{categorycode},          $samplecat->{description},
117
    $samplecat->{enrolmentperiod},       $samplecat->{enrolmentperioddate},
118
    $samplecat->{dateofbirthrequired},   $samplecat->{finetype},
119
    $samplecat->{bulk},                  $samplecat->{enrolmentfee},
120
    $samplecat->{overduenoticerequired}, $samplecat->{issuelimit},
121
    $samplecat->{reservefee},            $samplecat->{hidelostitems},
122
    $samplecat->{category_type}
123
);
124
125
#Add itemtypes
126
my $sampleitemtype1 = {
127
    itemtype     => 'BOOK',
128
    description  => 'BookDescription',
129
    rentalcharge => '10.0',
130
    notforloan   => 1,
131
    imageurl     => 'Null',
132
    summary      => 'BookSummary'
133
};
134
my $sampleitemtype2 = {
135
    itemtype     => 'DVD',
136
    description  => 'DvdDescription',
137
    rentalcharge => '5.0',
138
    notforloan   => 0,
139
    imageurl     => 'Null',
140
    summary      => 'DvdSummary'
141
};
142
$query =
143
"INSERT INTO itemtypes (itemtype,
144
                    description,
145
                    rentalcharge,
146
                    notforloan,
147
                    imageurl,
148
                    summary
149
                    )
150
 VALUES( ?,?,?,?,?,?)";
151
my $sth = $dbh->prepare($query);
152
$sth->execute(
153
    $sampleitemtype1->{itemtype},     $sampleitemtype1->{description},
154
    $sampleitemtype1->{rentalcharge}, $sampleitemtype1->{notforloan},
155
    $sampleitemtype1->{imageurl},     $sampleitemtype1->{summary}
156
);
157
$sth->execute(
158
    $sampleitemtype2->{itemtype},     $sampleitemtype2->{description},
159
    $sampleitemtype2->{rentalcharge}, $sampleitemtype2->{notforloan},
160
    $sampleitemtype2->{imageurl},     $sampleitemtype2->{summary}
161
);
162
163
$query =
164
"INSERT INTO branch_borrower_circ_rules (branchcode,categorycode,maxissueqty) VALUES( ?,?,?)";
165
$dbh->do(
166
    $query, {},
167
    $samplebranch1->{branchcode},
168
    $samplecat->{categorycode}, 5
169
);
170
$query =
171
"INSERT INTO default_branch_circ_rules (branchcode,maxissueqty,holdallowed,returnbranch) VALUES( ?,?,?,?)";
172
$dbh->do( $query, {}, $samplebranch2->{branchcode},
173
    3, 1, $samplebranch2->{branchcode} );
174
$query =
175
"INSERT INTO default_circ_rules (singleton,maxissueqty,holdallowed,returnbranch) VALUES( ?,?,?,?)";
176
$dbh->do( $query, {}, 'singleton', 4, 3, $samplebranch1->{branchcode} );
177
178
$query =
179
"INSERT INTO branch_item_rules (branchcode,itemtype,holdallowed,returnbranch) VALUES( ?,?,?,?)";
180
$sth = $dbh->prepare($query);
181
$sth->execute(
182
    $samplebranch1->{branchcode},
183
    $sampleitemtype1->{itemtype},
184
    5, $samplebranch1->{branchcode}
185
);
186
$sth->execute(
187
    $samplebranch2->{branchcode},
188
    $sampleitemtype2->{itemtype},
189
    5, $samplebranch1->{branchcode}
190
);
191
192
#Test GetBranchBorrowerCircRule
193
is_deeply(
194
    GetBranchBorrowerCircRule(),
195
    { maxissueqty => 4 },
196
"Without parameter, GetBranchBorrower returns the maxissueqty of default_circ_rules"
197
);
198
is_deeply(
199
    GetBranchBorrowerCircRule( $samplebranch2->{branchcode} ),
200
    { maxissueqty => 3 },
201
"Without only the branchcode specified, GetBranchBorrower returns the maxissueqty corresponding"
202
);
203
is_deeply(
204
    GetBranchBorrowerCircRule(
205
        $samplebranch1->{branchcode},
206
        $samplecat->{categorycode}
207
    ),
208
    { maxissueqty => 5 },
209
    "GetBranchBorrower returns the maxissueqty of the branch1 and the category1"
210
);
211
is_deeply(
212
    GetBranchBorrowerCircRule( -1, -1 ),
213
    { maxissueqty => 4 },
214
"GetBranchBorrower  with wrong parameters returns tthe maxissueqty of default_circ_rules"
215
);
216
217
#Test GetBranchItemRule
218
is_deeply(
219
    GetBranchItemRule(
220
        $samplebranch1->{branchcode},
221
        $sampleitemtype1->{itemtype}
222
    ),
223
    { returnbranch => $samplebranch1->{branchcode}, holdallowed => 5 },
224
    "GetBranchitem returns holdallowed and return branch"
225
);
226
is_deeply(
227
    GetBranchItemRule(),
228
    { returnbranch => $samplebranch1->{branchcode}, holdallowed => 3 },
229
"Without parameters GetBranchItemRule returns the values in default_circ_rules"
230
);
231
is_deeply(
232
    GetBranchItemRule( $samplebranch1->{branchcode} ),
233
    { returnbranch => $samplebranch1->{branchcode}, holdallowed => 3 },
234
"With only a branchcode GetBranchItemRule returns values in default_branch_circ_rules"
235
);
236
is_deeply(
237
    GetBranchItemRule( -1, -1 ),
238
    { returnbranch => $samplebranch1->{branchcode}, holdallowed => 3 },
239
    "With only one parametern GetBranchItemRule returns default values"
240
);
241
242
$dbh->rollback;
(-)a/t/db_dependent/Circulation_issue.t (-1 / +264 lines)
Line 0 Link Here
0
- 
1
#!/usr/bin/perl
2
3
use Modern::Perl;
4
use Koha::DateUtils;
5
use DateTime::Duration;
6
use C4::Biblio;
7
use C4::Members;
8
use C4::Branch;
9
use C4::Circulation;
10
use C4::Items;
11
use C4::Context;
12
13
use Test::More tests => 16;
14
15
BEGIN {
16
    use_ok('C4::Circulation');
17
}
18
can_ok(
19
    'C4::Circulation',
20
    qw(AddIssue
21
      AddIssuingCharge
22
      AddRenewal
23
      AddReturn
24
      GetBiblioIssues
25
      GetIssuingCharges
26
      GetIssuingRule
27
      GetItemIssue
28
      GetItemIssues
29
      GetOpenIssue
30
      GetRenewCount
31
      GetUpcomingDueIssues
32
      )
33
);
34
35
#Start transaction
36
my $dbh = C4::Context->dbh;
37
$dbh->{RaiseError} = 1;
38
$dbh->{AutoCommit} = 0;
39
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|);
46
47
#Add sample datas
48
my @USERENV = ( 1, 'test', 'MASTERTEST', 'Test', 'Test', 't', 'Test', 0, );
49
50
C4::Context->_new_userenv('DUMMY_SESSION_ID');
51
C4::Context->set_userenv(@USERENV);
52
53
my $userenv = C4::Context->userenv
54
  or BAIL_OUT("No userenv");
55
56
#Add Dates
57
58
my $dt_today    = dt_from_string;
59
my $today       = output_pref( $dt_today, 'iso', '24hr', 1 );
60
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 );
65
66
#Add branch and category
67
my $samplebranch1 = {
68
    add            => 1,
69
    branchcode     => 'SAB1',
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',
85
};
86
my $samplebranch2 = {
87
    add            => 1,
88
    branchcode     => 'SAB2',
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',
104
};
105
ModBranch($samplebranch1);
106
ModBranch($samplebranch2);
107
108
my $samplecat = {
109
    categorycode          => 'CAT1',
110
    description           => 'Description1',
111
    enrolmentperiod       => 'Null',
112
    enrolmentperioddate   => 'Null',
113
    dateofbirthrequired   => 'Null',
114
    finetype              => 'Null',
115
    bulk                  => 'Null',
116
    enrolmentfee          => 'Null',
117
    overduenoticerequired => 'Null',
118
    issuelimit            => 'Null',
119
    reservefee            => 'Null',
120
    hidelostitems         => 0,
121
    category_type         => 'Null'
122
};
123
my $query =
124
"INSERT INTO categories (categorycode,description,enrolmentperiod,enrolmentperioddate,dateofbirthrequired ,finetype,bulk,enrolmentfee,overduenoticerequired,issuelimit ,reservefee ,hidelostitems ,category_type) VALUES( ?,?,?,?,?,?,?,?,?,?,?,?,?)";
125
$dbh->do(
126
    $query, {},
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}
134
);
135
136
#Add biblio and item
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, '', );
141
142
my @sampleitem1 = C4::Items::AddItem(
143
    {
144
        barcode        => 1,
145
        itemcallnumber => 'callnumber1',
146
        homebranch     => $samplebranch1->{branchcode},
147
        holdingbranch  => $samplebranch1->{branchcode},
148
        issue          => 1,
149
        reserve        => 1
150
    },
151
    $biblionumber
152
);
153
my $item_id1    = $sampleitem1[2];
154
my @sampleitem2 = C4::Items::AddItem(
155
    {
156
        barcode        => 2,
157
        itemcallnumber => 'callnumber2',
158
        homebranch     => $samplebranch2->{branchcode},
159
        holdingbranch  => $samplebranch2->{branchcode},
160
        notforloan     => 1,
161
        issue          => 1
162
    },
163
    $biblionumber
164
);
165
my $item_id2 = $sampleitem2[2];
166
167
#Add borrower
168
my $borrower_id1 = C4::Members::AddMember(
169
    firstname    => 'firstname1',
170
    surname      => 'surname1 ',
171
    categorycode => $samplecat->{categorycode},
172
    branchcode   => $samplebranch1->{branchcode},
173
);
174
my $borrower_id2 = C4::Members::AddMember(
175
    firstname    => 'firstname2',
176
    surname      => 'surname2 ',
177
    categorycode => $samplecat->{categorycode},
178
    branchcode   => $samplebranch2->{branchcode},
179
);
180
181
#Begin Tests
182
183
#Test AddIssue
184
$query = " SELECT count(*) FROM issues";
185
my $sth = $dbh->prepare($query);
186
$sth->execute;
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, '' );
190
like(
191
    $datedue1,
192
    qr/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/,
193
    "AddRenewal returns a date"
194
);
195
my $issue_id1 = $dbh->last_insert_id( undef, undef, 'issues', undef );
196
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 );
200
201
$sth->execute;
202
$countissue = $sth -> fetchrow_array;
203
#FIXME: Currently AddIssue doesn't add correctly issues
204
#is ($countissue,2,"2 issues have been added");
205
206
#Test AddIssuingCharge
207
$query = " SELECT count(*) FROM accountlines";
208
$sth = $dbh->prepare($query);
209
$sth->execute;
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 );
215
$sth->execute;
216
$countaccount = $sth -> fetchrow_array;
217
is ($countaccount,1,"1 accountline has been added");
218
219
#Test AddRenewal
220
my $datedue3 =
221
  AddRenewal( $borrower_id1, $item_id1, $samplebranch1->{branchcode},
222
    $datedue1, $daysago10 );
223
like(
224
    $datedue3,
225
    qr/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/,
226
    "AddRenewal returns a date"
227
);
228
229
#Test GetBiblioIssues
230
is( GetBiblioIssues(), undef, "GetBiblio Issues without parameters" );
231
232
#Test GetItemIssue
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");
236
237
#Test GetItemIssues
238
#FIXME: this routine currently doesn't work be
239
#is_deeply (GetItemIssues,{},"Without parameter, GetItemIssue returns all the issues");
240
241
#Test GetOpenIssue
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);
246
247
#Test GetRenewCount
248
my @renewcount = C4::Circulation::GetRenewCount();
249
is_deeply(
250
    \@renewcount,
251
    [ 0, 1, 1 ],
252
"Without paramater, GetRenewCount returns renewcount0,renewsallowed = 0,renewsleft = 0"
253
);
254
@renewcount = C4::Circulation::GetRenewCount(-1);
255
is_deeply(
256
    \@renewcount,
257
    [ 0, 1, 1 ],
258
"Without wrong, GetRenewCount returns renewcount0,renewsallowed = 0,renewsleft = 0"
259
);
260
@renewcount = C4::Circulation::GetRenewCount($item_id1);
261
is_deeply( \@renewcount, [ 0, 1, 1 ], "Getrenewcount of item1 returns" );
262
263
#End transaction
264
$dbh->rollback;

Return to bug 10683