|
Lines 17-23
Link Here
|
| 17 |
|
17 |
|
| 18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
| 19 |
|
19 |
|
| 20 |
use Test::More tests => 20; |
20 |
use Test::More tests => 23; |
| 21 |
use t::lib::Dates; |
21 |
use t::lib::Dates; |
| 22 |
use t::lib::TestBuilder; |
22 |
use t::lib::TestBuilder; |
| 23 |
use t::lib::Mocks; |
23 |
use t::lib::Mocks; |
|
Lines 45-50
my $biblio1 = $item1->biblio;
Link Here
|
| 45 |
my $branch1 = $item1->holdingbranch; |
45 |
my $branch1 = $item1->holdingbranch; |
| 46 |
my $itemtype1 = $item1->effective_itemtype; |
46 |
my $itemtype1 = $item1->effective_itemtype; |
| 47 |
my $item2 = $builder->build_sample_item({ biblionumber => $biblio1->biblionumber }); |
47 |
my $item2 = $builder->build_sample_item({ biblionumber => $biblio1->biblionumber }); |
|
|
48 |
my $item3 = $builder->build_sample_item({ biblionumber => $biblio1->biblionumber }); |
| 48 |
my $biblio2 = $item1->biblio; |
49 |
my $biblio2 = $item1->biblio; |
| 49 |
my $branch2 = $item1->holdingbranch; |
50 |
my $branch2 = $item1->holdingbranch; |
| 50 |
my $itemtype2 = $item1->effective_itemtype; |
51 |
my $itemtype2 = $item1->effective_itemtype; |
|
Lines 53-72
my $category1 = $builder->build({ source => 'Category' })->{ categorycode };
Link Here
|
| 53 |
my $patron1 = $builder->build_object({ class => 'Koha::Patrons', value => { categorycode => $category1, branchcode => $branch1 } }); |
54 |
my $patron1 = $builder->build_object({ class => 'Koha::Patrons', value => { categorycode => $category1, branchcode => $branch1 } }); |
| 54 |
my $patron2 = $builder->build_object({ class => 'Koha::Patrons', value => { categorycode => $category1, branchcode => $branch2 } }); |
55 |
my $patron2 = $builder->build_object({ class => 'Koha::Patrons', value => { categorycode => $category1, branchcode => $branch2 } }); |
| 55 |
my $patron3 = $builder->build_object({ class => 'Koha::Patrons', value => { categorycode => $category1, branchcode => $branch1 } }); |
56 |
my $patron3 = $builder->build_object({ class => 'Koha::Patrons', value => { categorycode => $category1, branchcode => $branch1 } }); |
|
|
57 |
my $patron4 = $builder->build_object({ class => 'Koha::Patrons', value => { categorycode => $category1, branchcode => $branch2 } }); |
| 56 |
t::lib::Mocks::mock_userenv({ patron => $patron1 }); |
58 |
t::lib::Mocks::mock_userenv({ patron => $patron1 }); |
| 57 |
|
59 |
|
| 58 |
Koha::CirculationRules->set_rules({ |
60 |
Koha::CirculationRules->set_rules( |
| 59 |
branchcode => undef, |
61 |
{ |
| 60 |
categorycode => undef, |
62 |
branchcode => undef, |
| 61 |
itemtype => undef, |
63 |
categorycode => undef, |
| 62 |
rules => { |
64 |
itemtype => undef, |
| 63 |
'recall_due_date_interval' => undef, |
65 |
rules => { |
| 64 |
'recalls_allowed' => 10, |
66 |
'issuelength' => 7, |
|
|
67 |
'recall_due_date_interval' => undef, |
| 68 |
'recalls_allowed' => 10, |
| 69 |
} |
| 65 |
} |
70 |
} |
| 66 |
}); |
71 |
); |
| 67 |
|
72 |
|
| 68 |
C4::Circulation::AddIssue( $patron3, $item1->barcode ); |
73 |
C4::Circulation::AddIssue( $patron3, $item1->barcode ); |
| 69 |
C4::Circulation::AddIssue( $patron3, $item2->barcode ); |
74 |
C4::Circulation::AddIssue( $patron3, $item2->barcode ); |
|
|
75 |
C4::Circulation::AddIssue( $patron4, $item3->barcode ); |
| 70 |
|
76 |
|
| 71 |
C4::Members::Messaging::SetMessagingPreference( |
77 |
C4::Members::Messaging::SetMessagingPreference( |
| 72 |
{ |
78 |
{ |
|
Lines 106-111
ok( !defined $recall, "Can't add a recall without specifying a biblio" );
Link Here
|
| 106 |
}); |
112 |
}); |
| 107 |
ok( !defined $recall, "Can't add a recall without specifying a biblio" ); |
113 |
ok( !defined $recall, "Can't add a recall without specifying a biblio" ); |
| 108 |
|
114 |
|
|
|
115 |
my $initial_checkout_due_date = Koha::Checkouts->find( $item2->checkout->issue_id )->date_due; |
| 109 |
( $recall, $due_interval, $due_date ) = Koha::Recalls->add_recall({ |
116 |
( $recall, $due_interval, $due_date ) = Koha::Recalls->add_recall({ |
| 110 |
patron => $patron2, |
117 |
patron => $patron2, |
| 111 |
biblio => $biblio1, |
118 |
biblio => $biblio1, |
|
Lines 114-121
ok( !defined $recall, "Can't add a recall without specifying a biblio" );
Link Here
|
| 114 |
expirationdate => undef, |
121 |
expirationdate => undef, |
| 115 |
interface => 'COMMANDLINE', |
122 |
interface => 'COMMANDLINE', |
| 116 |
}); |
123 |
}); |
|
|
124 |
my $checkout_due_date_after_recall = Koha::Checkouts->find( $item2->checkout->issue_id )->date_due; |
| 117 |
is( $recall->pickup_library_id, $branch2, "No pickup branch specified so patron branch used" ); |
125 |
is( $recall->pickup_library_id, $branch2, "No pickup branch specified so patron branch used" ); |
| 118 |
is( $due_interval, 5, "Recall due date interval defaults to 5 if not specified" ); |
126 |
is( $due_interval, 5, "Recall due date interval defaults to 5 if not specified" ); |
|
|
127 |
ok( |
| 128 |
$checkout_due_date_after_recall lt $initial_checkout_due_date, |
| 129 |
"Checkout due date has been moved backwards" |
| 130 |
); |
| 119 |
|
131 |
|
| 120 |
Koha::CirculationRules->set_rule({ |
132 |
Koha::CirculationRules->set_rule({ |
| 121 |
branchcode => undef, |
133 |
branchcode => undef, |
|
Lines 154-159
is(
Link Here
|
| 154 |
); |
166 |
); |
| 155 |
is( t::lib::Dates::compare( $due_date, $expected_due_date ), 0, "Due date correctly returned" ); |
167 |
is( t::lib::Dates::compare( $due_date, $expected_due_date ), 0, "Due date correctly returned" ); |
| 156 |
|
168 |
|
|
|
169 |
Koha::CirculationRules->set_rule( |
| 170 |
{ |
| 171 |
branchcode => undef, |
| 172 |
categorycode => undef, |
| 173 |
itemtype => undef, |
| 174 |
rule_name => 'recall_due_date_interval', |
| 175 |
rule_value => 10, |
| 176 |
} |
| 177 |
); |
| 178 |
$initial_checkout_due_date = Koha::Checkouts->find( $item3->checkout->issue_id )->date_due; |
| 179 |
my $recall2; |
| 180 |
( $recall2, $due_interval, $due_date ) = Koha::Recalls->add_recall( |
| 181 |
{ |
| 182 |
patron => $patron2, |
| 183 |
biblio => $biblio1, |
| 184 |
branchcode => $branch1, |
| 185 |
item => $item3, |
| 186 |
expirationdate => undef, |
| 187 |
interface => 'COMMANDLINE', |
| 188 |
} |
| 189 |
); |
| 190 |
$checkout_due_date_after_recall = Koha::Checkouts->find( $item3->checkout->issue_id )->date_due; |
| 191 |
is( $due_interval, 10, "Recall due date interval increased above checkout due" ); |
| 192 |
ok( |
| 193 |
$checkout_due_date_after_recall eq $initial_checkout_due_date, |
| 194 |
"Checkout due date has not been moved forward" |
| 195 |
); |
| 196 |
|
| 157 |
my $messages_count = Koha::Notice::Messages->search({ borrowernumber => $patron3->borrowernumber, letter_code => 'RETURN_RECALLED_ITEM' })->count; |
197 |
my $messages_count = Koha::Notice::Messages->search({ borrowernumber => $patron3->borrowernumber, letter_code => 'RETURN_RECALLED_ITEM' })->count; |
| 158 |
is( $messages_count, 6, "RETURN_RECALLED_ITEM notice successfully sent to checkout borrower" ); |
198 |
is( $messages_count, 6, "RETURN_RECALLED_ITEM notice successfully sent to checkout borrower" ); |
| 159 |
|
199 |
|
| 160 |
- |
|
|