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

(-)a/t/db_dependent/Circulation/issue.t (-4 / +79 lines)
Lines 17-25 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 48;
20
use Test::More tests => 59;
21
use DateTime::Duration;
21
use DateTime::Duration;
22
23
use t::lib::Mocks;
22
use t::lib::Mocks;
24
use t::lib::TestBuilder;
23
use t::lib::TestBuilder;
25
24
Lines 75-83 $dbh->do(q|DELETE FROM statistics|); Link Here
75
# Generate sample datas
74
# Generate sample datas
76
my $itemtype = $builder->build(
75
my $itemtype = $builder->build(
77
    {   source => 'Itemtype',
76
    {   source => 'Itemtype',
78
        value  => { notforloan => undef, rentalcharge => 0 }
77
        value  => { notforloan => undef, rentalcharge => 0, updatenotforloan => 1 }
78
    }
79
)->{itemtype};
80
my $itemtype2 = $builder->build(
81
    {   source => 'Itemtype',
82
        value  => { notforloan => undef, updatenotforloan => 0 }
79
    }
83
    }
80
)->{itemtype};
84
)->{itemtype};
85
81
my $branchcode_1 = $builder->build({ source => 'Branch' })->{branchcode};
86
my $branchcode_1 = $builder->build({ source => 'Branch' })->{branchcode};
82
my $branchcode_2 = $builder->build({ source => 'Branch' })->{branchcode};
87
my $branchcode_2 = $builder->build({ source => 'Branch' })->{branchcode};
83
my $branchcode_3 = $builder->build({ source => 'Branch' })->{branchcode};
88
my $branchcode_3 = $builder->build({ source => 'Branch' })->{branchcode};
Lines 124-133 my $daysago10 = output_pref( Link Here
124
129
125
# Add biblio and item
130
# Add biblio and item
126
my $record = MARC::Record->new();
131
my $record = MARC::Record->new();
132
my $record2 = MARC::Record->new();
127
$record->append_fields(
133
$record->append_fields(
134
    MARC::Field->new( '942', '0', '0', c => $itemtype ),
135
    MARC::Field->new( '952', '0', '0', a => $branchcode_1 ) );
136
137
$record2->append_fields(
138
    MARC::Field->new( '942', '0', '0', c => $itemtype2 ),
128
    MARC::Field->new( '952', '0', '0', a => $branchcode_1 ) );
139
    MARC::Field->new( '952', '0', '0', a => $branchcode_1 ) );
129
140
130
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '' );
141
my ( $biblionumber, $biblioitemnumber ) = C4::Biblio::AddBiblio( $record, '' );
142
my ( $biblionumber2, $biblioitemnumber2 ) = C4::Biblio::AddBiblio( $record2, '' );
131
143
132
my $barcode_1 = 'barcode_1';
144
my $barcode_1 = 'barcode_1';
133
my $barcode_2 = 'barcode_2';
145
my $barcode_2 = 'barcode_2';
Lines 391-397 my $itemnumber = Koha::Item->new( Link Here
391
        homebranch     => $branchcode_1,
403
        homebranch     => $branchcode_1,
392
        holdingbranch  => $branchcode_1,
404
        holdingbranch  => $branchcode_1,
393
        notforloan     => 1,
405
        notforloan     => 1,
394
        itype          => $itemtype
406
        itype          => $itemtype,
407
        biblioitemnumber => $biblioitemnumber
395
    },
408
    },
396
)->store->itemnumber;
409
)->store->itemnumber;
397
410
Lines 409-414 AddReturn( 'barcode_3', $branchcode_1 ); Link Here
409
$item = Koha::Items->find( $itemnumber );
422
$item = Koha::Items->find( $itemnumber );
410
ok( $item->notforloan eq 9, q{UpdateNotForLoanStatusOnCheckin does not update notforloan value from 9 with setting "1: 9"} );
423
ok( $item->notforloan eq 9, q{UpdateNotForLoanStatusOnCheckin does not update notforloan value from 9 with setting "1: 9"} );
411
424
425
# Bug 25560: Exclude itemtypes from UpdateNotForLoanStatusOnCheckin syspref
426
427
# item-level_itypes syspref is set to 'Specific item'
428
t::lib::Mocks::mock_preference( 'item-level_itypes', '1' );
429
430
# Set biblioitems.itemtype to an itemtype with updatenotforloan = 0
431
Koha::Items->find( $itemnumber )->biblioitemnumber($biblioitemnumber2)->store;
432
ok( Koha::ItemTypes->find(Koha::Biblioitems->find({ biblioitemnumber => $biblioitemnumber2 })->itemtype)->updatenotforloan eq 0, q{Biblio-level itemtype has a updatenotforloan set to 0} );
433
434
# Keep items.itype on an itemtype with updatenotforloan = 1
435
ok( Koha::ItemTypes->find(Koha::Items->find($itemnumber)->itype)->updatenotforloan eq 1, q{item level itemtype has a updatenotforloan set to 1});
436
437
# items.notforloan status should change as the effective itemtype (item-level itype)
438
# does allow notforloan status to be updated on checkin
439
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', '9: 1');
440
AddReturn( 'barcode_3', $branchcode_1 );
441
$item = Koha::Items->find( $itemnumber );
442
ok( $item->notforloan eq 1, q{UpdateNotForLoanStatusOnCheckin does update the notforloan value when ithe effective itemtype (specific item) has an enabled updatenotforloan flag} );
443
444
# Set biblioitems.itemtype to an itemtype with updatenotforloan = 1
445
Koha::Items->find( $itemnumber )->biblioitemnumber($biblioitemnumber)->store;
446
ok( Koha::ItemTypes->find(Koha::Biblioitems->find({ biblioitemnumber => $biblioitemnumber })->itemtype)->updatenotforloan eq 1, q{Biblio-level itemtype has a updatenotforloan set to 1 });
447
448
# Set items.itype to an itemtype with updatenotforloanstatus = 0
449
Koha::Items->find( $itemnumber )->itype($itemtype2)->store;
450
ok( Koha::ItemTypes->find(Koha::Items->find($itemnumber)->itype)->updatenotforloan eq 0, q{item level itemtype has an updatenotforloan set to 0 });
451
452
# items.notforloan status shouldn't change as the effective itemtype (item-level itype)
453
# does not allow notforloan status to be updated on checkin
454
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', '1: 9');
455
AddReturn( 'barcode_3', $branchcode_1 );
456
$item = Koha::Items->find( $itemnumber );
457
ok( $item->notforloan eq 1, q{UpdateNotForLoanStatusOnCheckin does not update notforloan value when th effective item type (specific item) has a disabled updatenotforloan flag} );
458
459
# item-level_itypes syspref is set to 'bibliographic record'
460
t::lib::Mocks::mock_preference( 'item-level_itypes', '0' );
461
462
# Check items.itype is still an itemtype with updatenotforloan = 0
463
ok( Koha::ItemTypes->find(Koha::Items->find($itemnumber)->itype)->updatenotforloan eq 0, q{item level itype has a updatenotforloanstatuscheckin set to 0});
464
465
# items.notforloan status should change as the effective itemtype (biblio-level itemtype)
466
# does allow notforloan status to be updated on checkin
467
AddReturn( 'barcode_3', $branchcode_1 );
468
$item = Koha::Items->find( $itemnumber );
469
ok( $item->notforloan eq 9, q{UpdateNotForLoanStatusOnCheckin updates notforloan value when the effective item type (bibliographic record) has an enabled updatenotforloan flag} );
470
471
# Set biblioitems.itemtype to an itemtype with updatenotforloan = 0
472
Koha::Items->find( $itemnumber )->biblioitemnumber($biblioitemnumber2)->store;
473
ok( Koha::ItemTypes->find(Koha::Biblioitems->find({ biblioitemnumber => $biblioitemnumber2 })->itemtype)->updatenotforloan eq 0, q{Biblio-level itemtype has a updatenotforloan set to 0 });
474
475
# Set items.itype to an itemtype with updatenotforloan = 1
476
Koha::Items->find( $itemnumber )->itype($itemtype)->store;
477
ok( Koha::ItemTypes->find(Koha::Items->find($itemnumber)->itype)->updatenotforloan eq 1, q{item level itype has an updatenotforloan set to 1});
478
479
# items.notforloan status shouldn't change as the effective itemtype (biblio-level itemtype)
480
# doesn't allow notforloan status to be updated at checkin
481
t::lib::Mocks::mock_preference( 'UpdateNotForLoanStatusOnCheckin', '9: 1');
482
AddReturn( 'barcode_3', $branchcode_1 );
483
$item = Koha::Items->find( $itemnumber );
484
ok( $item->notforloan eq 9, q{UpdateNotForLoanStatusOnCheckin does not update notforloanvalue when the effective itemtype (bibliographic record) has a disabled updatenotforloan flag} );
485
412
my $itemnumber2 = Koha::Item->new(
486
my $itemnumber2 = Koha::Item->new(
413
    {
487
    {
414
        biblionumber   => $biblionumber,
488
        biblionumber   => $biblionumber,
Lines 488-493 is( $item3->location, 'CART', q{UpdateItemLocationOnCheckin updates location val Link Here
488
562
489
563
490
# Bug 14640 - Cancel the hold on checking out if asked
564
# Bug 14640 - Cancel the hold on checking out if asked
565
Koha::Items->find({ barcode => $barcode_1 })->notforloan('0')->store;
491
my $reserve_id = AddReserve(
566
my $reserve_id = AddReserve(
492
    {
567
    {
493
        branchcode     => $branchcode_1,
568
        branchcode     => $branchcode_1,
(-)a/t/db_dependent/Koha/Object.t (-2 / +3 lines)
Lines 697-703 subtest "Test update method" => sub { Link Here
697
697
698
subtest 'store() tests' => sub {
698
subtest 'store() tests' => sub {
699
699
700
    plan tests => 16;
700
    plan tests => 17;
701
701
702
    # Using Koha::Library::Groups to test Koha::Object>-store
702
    # Using Koha::Library::Groups to test Koha::Object>-store
703
    # Simple object with foreign keys and unique key
703
    # Simple object with foreign keys and unique key
Lines 799-804 subtest 'store() tests' => sub { Link Here
799
                rentalcharge    => "",
799
                rentalcharge    => "",
800
                notforloan      => "",
800
                notforloan      => "",
801
                hideinopac      => "",
801
                hideinopac      => "",
802
                updatenotforloan => "",
802
            }
803
            }
803
        )->store;
804
        )->store;
804
    };
805
    };
Lines 806-811 subtest 'store() tests' => sub { Link Here
806
    is( $itemtype->rentalcharge, undef, 'decimal DEFAULT NULL should default to null');
807
    is( $itemtype->rentalcharge, undef, 'decimal DEFAULT NULL should default to null');
807
    is( $itemtype->notforloan, undef, 'int DEFAULT NULL should default to null');
808
    is( $itemtype->notforloan, undef, 'int DEFAULT NULL should default to null');
808
    is( $itemtype->hideinopac, 0, 'int NOT NULL DEFAULT 0 should default to 0');
809
    is( $itemtype->hideinopac, 0, 'int NOT NULL DEFAULT 0 should default to 0');
810
    is( $itemtype->updatenotforloan, 1, 'int NOT NULL DEFAULT 1 should default to 1');
809
811
810
    subtest 'Bad value tests' => sub {
812
    subtest 'Bad value tests' => sub {
811
813
812
- 

Return to bug 25560