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

(-)a/t/db_dependent/Holds/DisallowHoldIfItemsAvailable.t (-1 / +11 lines)
Lines 6-11 use C4::Context; Link Here
6
use C4::Circulation qw( AddIssue AddReturn );
6
use C4::Circulation qw( AddIssue AddReturn );
7
use C4::Items;
7
use C4::Items;
8
use Koha::Items;
8
use Koha::Items;
9
use Koha::Cache::Memory::Lite;
9
use Koha::CirculationRules;
10
use Koha::CirculationRules;
10
11
11
use Test::More tests => 13;
12
use Test::More tests => 13;
Lines 20-25 BEGIN { Link Here
20
my $schema = Koha::Database->schema;
21
my $schema = Koha::Database->schema;
21
$schema->storage->txn_begin;
22
$schema->storage->txn_begin;
22
my $dbh = C4::Context->dbh;
23
my $dbh = C4::Context->dbh;
24
my $cache = Koha::Cache::Memory::Lite->get_instance();
23
25
24
my $builder = t::lib::TestBuilder->new;
26
my $builder = t::lib::TestBuilder->new;
25
27
Lines 113-118 $is = IsAvailableForItemLevelRequest( $item1, $patron1 ); Link Here
113
is( $is, 0, "Item cannot be held, 1 item available" );
115
is( $is, 0, "Item cannot be held, 1 item available" );
114
116
115
AddIssue( $patron2->unblessed, $item2->barcode );
117
AddIssue( $patron2->unblessed, $item2->barcode );
118
$cache->flush();
116
119
117
$is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );
120
$is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );
118
is( $is, 0, "Items availability: none of items are available" );
121
is( $is, 0, "Items availability: none of items are available" );
Lines 159-164 AddReturn( $item1->barcode ); Link Here
159
                set_holdallowed_rule( $hold_allowed_from_any_libraries, $library_B );
162
                set_holdallowed_rule( $hold_allowed_from_any_libraries, $library_B );
160
163
161
                #Adding a rule for the item's home library affects the availability for a borrower from another library because ReservesControlBranch is set to ItemHomeLibrary
164
                #Adding a rule for the item's home library affects the availability for a borrower from another library because ReservesControlBranch is set to ItemHomeLibrary
165
                $cache->flush();
162
166
163
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
167
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
164
                is( $is, 1,
168
                is( $is, 1,
Lines 170-175 AddReturn( $item1->barcode ); Link Here
170
                      . "One item is available at different library, holdable = one available => the hold is not allowed at item level" );
174
                      . "One item is available at different library, holdable = one available => the hold is not allowed at item level" );
171
175
172
                t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'PatronLibrary' );
176
                t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'PatronLibrary' );
177
                $cache->flush();
173
178
174
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
179
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
175
                is( $is, 0,
180
                is( $is, 0,
Lines 182-187 AddReturn( $item1->barcode ); Link Here
182
187
183
                #Adding a rule for the patron's home library affects the availability for an item from another library because ReservesControlBranch is set to PatronLibrary
188
                #Adding a rule for the patron's home library affects the availability for an item from another library because ReservesControlBranch is set to PatronLibrary
184
                set_holdallowed_rule( $hold_allowed_from_any_libraries, $library_A );
189
                set_holdallowed_rule( $hold_allowed_from_any_libraries, $library_A );
190
                $cache->flush();
185
191
186
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
192
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
187
                is( $is, 1,
193
                is( $is, 1,
Lines 197-202 AddReturn( $item1->barcode ); Link Here
197
                set_holdallowed_rule($hold_allowed_from_any_libraries);
203
                set_holdallowed_rule($hold_allowed_from_any_libraries);
198
204
199
                t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'ItemHomeLibrary' );
205
                t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'ItemHomeLibrary' );
206
                $cache->flush();
200
207
201
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
208
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
202
                is( $is, 1, "Items availability: hold allowed from any library + ReservesControlBranch=ItemHomeLibrary + one item is available at different library" );
209
                is( $is, 1, "Items availability: hold allowed from any library + ReservesControlBranch=ItemHomeLibrary + one item is available at different library" );
Lines 207-212 AddReturn( $item1->barcode ); Link Here
207
                      . "One item is available at the diff library, holdable = 1 available => the hold is not allowed at item level" );
214
                      . "One item is available at the diff library, holdable = 1 available => the hold is not allowed at item level" );
208
215
209
                t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'PatronLibrary' );
216
                t::lib::Mocks::mock_preference( 'ReservesControlBranch', 'PatronLibrary' );
217
                $cache->flush();
210
218
211
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
219
                $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblionumber, patron => $patron1 } );    # patron1 in library A, library A 0 items, library B 1 item
212
                is( $is, 1, "Items availability: hold allowed from any library + ReservesControlBranch=PatronLibrary + one item is available at different library" );
220
                is( $is, 1, "Items availability: hold allowed from any library + ReservesControlBranch=PatronLibrary + one item is available at different library" );
Lines 380-385 subtest 'Check holds availability with different item types' => sub { Link Here
380
    is( $is, 0, "Item5 cannot be requested to hold: 2 items, Item4 available, Item5 restricted" );
388
    is( $is, 0, "Item5 cannot be requested to hold: 2 items, Item4 available, Item5 restricted" );
381
389
382
    AddIssue( $patron2->unblessed, $item4->barcode );
390
    AddIssue( $patron2->unblessed, $item4->barcode );
391
    $cache->flush();
383
392
384
    $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblio2->biblionumber, patron => $patron1 } );
393
    $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblio2->biblionumber, patron => $patron1 } );
385
    is( $is, 0, "Items availability: 2 items, one allowed by smart rule and checked out, another one not allowed to be held by smart rule" );
394
    is( $is, 0, "Items availability: 2 items, one allowed by smart rule and checked out, another one not allowed to be held by smart rule" );
Lines 419-424 subtest 'Check item checkout availability with ordered item' => sub { Link Here
419
            }
428
            }
420
        }
429
        }
421
    );
430
    );
431
    $cache->flush();
422
432
423
    $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblio2->biblionumber, patron => $patron1 } );
433
    $is = ItemsAnyAvailableAndNotRestricted( { biblionumber => $biblio2->biblionumber, patron => $patron1 } );
424
    is( $is, 0, "Ordered item cannot be checked out" );
434
    is( $is, 0, "Ordered item cannot be checked out" );
Lines 452-457 subtest 'Check item availability for hold with ordered item' => sub { Link Here
452
        }
462
        }
453
    );
463
    );
454
464
465
    $cache->flush();
455
    $is = IsAvailableForItemLevelRequest( $item1, $patron1 );
466
    $is = IsAvailableForItemLevelRequest( $item1, $patron1 );
456
    is( $is, 1, "Ordered items are available for hold" );
467
    is( $is, 1, "Ordered items are available for hold" );
457
};
468
};
458
- 

Return to bug 34178