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

(-)a/t/db_dependent/Reserves.t (-10 / +113 lines)
Lines 978-999 subtest 'ChargeReserveFee tests' => sub { Link Here
978
};
978
};
979
979
980
subtest 'reserves.item_level_hold' => sub {
980
subtest 'reserves.item_level_hold' => sub {
981
    plan tests => 2;
981
    plan tests => 4;
982
982
983
    my $item   = $builder->build_sample_item;
983
    my $item   = $builder->build_sample_item;
984
    my $patron = $builder->build_object(
984
    my $patron = $builder->build_object({ class => "Koha::Patrons" });
985
        {
985
    $patron->branchcode( $item->homebranch );
986
            class => 'Koha::Patrons',
987
            value => { branchcode => $item->homebranch }
988
        }
989
    );
990
986
991
    subtest 'item level hold' => sub {
987
    subtest 'item level hold' => sub {
992
        plan tests => 5;
988
        plan tests => 5;
993
        my $reserve_id = AddReserve(
989
        my $reserve_id = AddReserve(
994
            {
990
            {
995
                branchcode     => $item->homebranch,
991
                branchcode     => $item->homebranch,
996
                borrowernumber => $patron->borrowernumber,
992
                borrowernumber => $patron->id,
997
                biblionumber   => $item->biblionumber,
993
                biblionumber   => $item->biblionumber,
998
                priority       => 1,
994
                priority       => 1,
999
                itemnumber     => $item->itemnumber,
995
                itemnumber     => $item->itemnumber,
Lines 1004-1010 subtest 'reserves.item_level_hold' => sub { Link Here
1004
        is( $hold->item_level_hold, 1, 'item_level_hold should be set when AddReserve is called with a specific item' );
1000
        is( $hold->item_level_hold, 1, 'item_level_hold should be set when AddReserve is called with a specific item' );
1005
1001
1006
        # Mark it waiting
1002
        # Mark it waiting
1007
        ModReserveAffect( $item->itemnumber, $patron->borrowernumber, 1 );
1003
        ModReserveAffect( $item->itemnumber, $patron->id, 1 );
1008
1004
1009
        my $mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
1005
        my $mock = Test::MockModule->new('Koha::BackgroundJob::BatchUpdateBiblioHoldsQueue');
1010
        $mock->mock( 'enqueue', sub {
1006
        $mock->mock( 'enqueue', sub {
Lines 1081-1086 subtest 'reserves.item_level_hold' => sub { Link Here
1081
        $hold->delete;
1077
        $hold->delete;
1082
    };
1078
    };
1083
1079
1080
    subtest 'test opacitemholds rules' => sub {
1081
        plan tests => 6;
1082
1083
        Koha::CirculationRules->set_rules(
1084
            {
1085
                branchcode   => undef,
1086
                categorycode => undef,
1087
                itemtype     => undef,
1088
                rules        => {
1089
                    reservesallowed => 25,
1090
                    opacitemholds => 'F',
1091
                }
1092
            }
1093
        );
1094
1095
        my $canreserve = C4::Reserves::CanBookBeReserved( $patron->id, $item->biblionumber );
1096
1097
        is( $canreserve->{status},
1098
            'recordHoldNotAllowed',
1099
            'record-level holds should not be possible with opacitemholds set to "Force"' );
1100
1101
        $canreserve = C4::Reserves::CanItemBeReserved( $patron, $item );
1102
1103
        is( $canreserve->{status}, 'OK',
1104
            'item-level holds should be possible with opacitemholds set to "Force"' );
1105
1106
        Koha::CirculationRules->set_rules(
1107
            {
1108
                branchcode   => undef,
1109
                categorycode => undef,
1110
                itemtype     => undef,
1111
                rules        => {
1112
                    reservesallowed => 25,
1113
                    opacitemholds => 'N',
1114
                }
1115
            }
1116
            );
1117
1118
        $canreserve = C4::Reserves::CanBookBeReserved( $patron->id, $item->biblionumber );
1119
1120
        is( $canreserve->{status}, 'OK',
1121
            'record-level holds should be possible with opacitemholds set to "No"' );
1122
1123
        $canreserve = C4::Reserves::CanItemBeReserved( $patron, $item );
1124
1125
        is( $canreserve->{status}, 'recordHoldsOnly',
1126
            'item-level holds should not be possible with opacitemholds set to "No"' );
1127
1128
        Koha::CirculationRules->set_rules(
1129
            {
1130
                branchcode   => undef,
1131
                categorycode => undef,
1132
                itemtype     => undef,
1133
                rules        => {
1134
                    reservesallowed => 25,
1135
                    opacitemholds => 'Y',
1136
                }
1137
            }
1138
            );
1139
1140
        $canreserve = C4::Reserves::CanBookBeReserved( $patron->id, $item->biblionumber );
1141
1142
        is( $canreserve->{status}, 'OK',
1143
            'record-level holds should be possible with opacitemholds set to "Yes"' );
1144
1145
        $canreserve = C4::Reserves::CanItemBeReserved( $patron, $item );
1146
1147
        is( $canreserve->{status}, 'OK',
1148
            'item-level holds should be possible with opacitemholds set to "Yes"' );
1149
    };
1150
1151
    subtest 'test opacitemholds rules in staff context' => sub {
1152
        plan tests => 2;
1153
1154
        C4::Context->interface('intranet');
1155
        Koha::CirculationRules->set_rules(
1156
            {
1157
                branchcode   => undef,
1158
                categorycode => undef,
1159
                itemtype     => undef,
1160
                rules        => {
1161
                    reservesallowed => 25,
1162
                    opacitemholds => 'N',
1163
                }
1164
            }
1165
        );
1166
1167
        my $canreserve = C4::Reserves::CanBookBeReserved( $patron->id, $item->biblionumber );
1168
1169
        is( $canreserve->{status}, 'OK',
1170
            'record-level holds should be possible with opacitemholds set to "No"' );
1171
1172
        $canreserve = C4::Reserves::CanItemBeReserved( $patron, $item );
1173
1174
        is( $canreserve->{status}, 'OK',
1175
            'item-level holds should still be possible in staff context, even with opacitemholds set to "No"' );
1176
    };
1177
1178
    Koha::CirculationRules->set_rules(
1179
        {
1180
             branchcode   => undef,
1181
             categorycode => undef,
1182
             itemtype     => undef,
1183
             rules        => {
1184
                 opacitemholds => undef,
1185
             }
1186
        }
1187
    );
1084
};
1188
};
1085
1189
1086
subtest 'MoveReserve additional test' => sub {
1190
subtest 'MoveReserve additional test' => sub {
1087
- 

Return to bug 25408