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

(-)a/t/db_dependent/Circulation.t (-2 / +112 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 117;
20
use Test::More tests => 118;
21
21
22
use DateTime;
22
use DateTime;
23
use POSIX qw( floor );
23
use POSIX qw( floor );
Lines 2227-2232 subtest 'CanBookBeIssued | item-level_itypes=biblio' => sub { Link Here
2227
    is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2227
    is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2228
};
2228
};
2229
2229
2230
subtest 'CanBookBeIssued | notforloan' => sub {
2231
    plan tests => 2;
2232
2233
    t::lib::Mocks::mock_preference('AllowNotForLoanOverride', 0);
2234
2235
    my $library = $builder->build( { source => 'Branch' } );
2236
    my $patron  = $builder->build_object( { class => 'Koha::Patrons', value => { categorycode => $patron_category->{categorycode} } } )->store;
2237
2238
    my $itemtype = $builder->build(
2239
        {
2240
            source => 'Itemtype',
2241
            value  => { notforloan => undef, }
2242
        }
2243
    );
2244
2245
    my $biblioitem = $builder->build( { source => 'Biblioitem' } );
2246
    my $item = $builder->build_object(
2247
        {
2248
            class => 'Koha::Items',
2249
            value  => {
2250
                homebranch    => $library->{branchcode},
2251
                holdingbranch => $library->{branchcode},
2252
                notforloan    => 0,
2253
                itemlost      => 0,
2254
                withdrawn     => 0,
2255
                itype         => $itemtype->{itemtype},
2256
                biblionumber  => $biblioitem->{biblionumber},
2257
                biblioitemnumber => $biblioitem->{biblioitemnumber},
2258
            }
2259
        }
2260
    )->store;
2261
2262
    my ( $issuingimpossible, $needsconfirmation );
2263
2264
2265
    subtest 'item-level_itypes = 1' => sub {
2266
        plan tests => 6;
2267
2268
        t::lib::Mocks::mock_preference('item-level_itypes', 1); # item
2269
        # Is for loan at item type and item level
2270
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2271
        is_deeply( $needsconfirmation, {}, 'Item can be issued to this patron' );
2272
        is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2273
2274
        # not for loan at item type level
2275
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(1)->store;
2276
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2277
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2278
        is_deeply(
2279
            $issuingimpossible,
2280
            { NOT_FOR_LOAN => 1, itemtype_notforloan => $itemtype->{itemtype} },
2281
            'Item can not be issued, not for loan at item type level'
2282
        );
2283
2284
        # not for loan at item level
2285
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(undef)->store;
2286
        $item->notforloan( 1 )->store;
2287
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2288
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2289
        is_deeply(
2290
            $issuingimpossible,
2291
            { NOT_FOR_LOAN => 1, item_notforloan => 1 },
2292
            'Item can not be issued, not for loan at item type level'
2293
        );
2294
    };
2295
2296
    subtest 'item-level_itypes = 0' => sub {
2297
        plan tests => 6;
2298
2299
        t::lib::Mocks::mock_preference('item-level_itypes', 0); # biblio
2300
2301
        # We set another itemtype for biblioitem
2302
        my $itemtype = $builder->build(
2303
            {
2304
                source => 'Itemtype',
2305
                value  => { notforloan => undef, }
2306
            }
2307
        );
2308
2309
        # for loan at item type and item level
2310
        $item->notforloan(undef)->store;
2311
        $item->biblioitem->itemtype($itemtype->{itemtype})->store;
2312
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2313
        is_deeply( $needsconfirmation, {}, 'Item can be issued to this patron' );
2314
        is_deeply( $issuingimpossible, {}, 'Item can be issued to this patron' );
2315
2316
        # not for loan at item type level
2317
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(1)->store;
2318
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2319
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2320
        is_deeply(
2321
            $issuingimpossible,
2322
            { NOT_FOR_LOAN => 1, itemtype_notforloan => $itemtype->{itemtype} },
2323
            'Item can not be issued, not for loan at item type level'
2324
        );
2325
2326
        # not for loan at item level
2327
        Koha::ItemTypes->find( $itemtype->{itemtype} )->notforloan(undef)->store;
2328
        $item->notforloan( 1 )->store;
2329
        ( $issuingimpossible, $needsconfirmation ) = CanBookBeIssued( $patron, $item->barcode, undef, undef, undef, undef );
2330
        is_deeply( $needsconfirmation, {}, 'No confirmation needed, AllowNotForLoanOverride=0' );
2331
        is_deeply(
2332
            $issuingimpossible,
2333
            { NOT_FOR_LOAN => 1, item_notforloan => 1 },
2334
            'Item can not be issued, not for loan at item type level'
2335
        );
2336
    };
2337
2338
    # TODO test with AllowNotForLoanOverride = 1
2339
};
2340
2230
$schema->storage->txn_rollback;
2341
$schema->storage->txn_rollback;
2231
$cache->clear_from_cache('single_holidays');
2342
$cache->clear_from_cache('single_holidays');
2232
2343
2233
- 

Return to bug 20889