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

(-)a/t/db_dependent/Koha/Items.t (-32 / +95 lines)
Lines 1998-2004 subtest 'search_ordered' => sub { Link Here
1998
1998
1999
subtest 'filter_by_for_hold' => sub {
1999
subtest 'filter_by_for_hold' => sub {
2000
2000
2001
    plan tests => 15;
2001
    plan tests => 10;
2002
2002
2003
    $schema->storage->txn_begin;
2003
    $schema->storage->txn_begin;
2004
2004
Lines 2035-2070 subtest 'filter_by_for_hold' => sub { Link Here
2035
        { biblionumber => $biblio->biblionumber, notforloan => 0, itype => $holdable_itemtype } );
2035
        { biblionumber => $biblio->biblionumber, notforloan => 0, itype => $holdable_itemtype } );
2036
    is( $biblio->items->filter_by_for_hold->count, 1, 'hold allowed despite default rule' );
2036
    is( $biblio->items->filter_by_for_hold->count, 1, 'hold allowed despite default rule' );
2037
2037
2038
    # Reset items and circ rules to remove default rule
2038
    subtest "No default rule" => sub {
2039
    $biblio->items->delete;
2039
        plan tests => 7;
2040
    Koha::CirculationRules->search(
2040
2041
        {
2041
        # Reset items and circ rules to remove default rule
2042
            rule_name  => 'holdallowed',
2042
        $biblio->items->delete;
2043
            rule_value => 'not_allowed',
2043
        Koha::CirculationRules->search(
2044
        }
2044
            {
2045
    )->delete;
2045
                rule_name  => 'holdallowed',
2046
2046
                rule_value => 'not_allowed',
2047
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } );
2047
            }
2048
    is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' );
2048
        )->delete;
2049
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } );
2049
2050
    is( $biblio->items->filter_by_for_hold->count, 1, '1 item for hold' );
2050
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } );
2051
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => -1 } );
2051
        is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' );
2052
    is( $biblio->items->filter_by_for_hold->count, 2, '2 items for hold' );
2052
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } );
2053
2053
        is( $biblio->items->filter_by_for_hold->count, 1, '1 item for hold' );
2054
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, itemlost => 0, library => $library->id } );
2054
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => -1 } );
2055
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, itemlost => 1, library => $library->id } );
2055
        is( $biblio->items->filter_by_for_hold->count, 2, '2 items for hold' );
2056
    is( $biblio->items->filter_by_for_hold->count, 3, '3 items for hold - itemlost' );
2056
2057
2057
        $builder->build_sample_item(
2058
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, withdrawn => 0, library => $library->id } );
2058
            { biblionumber => $biblio->biblionumber, itemlost => 0, library => $library->id } );
2059
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, withdrawn => 1, library => $library->id } );
2059
        $builder->build_sample_item(
2060
    is( $biblio->items->filter_by_for_hold->count, 4, '4 items for hold - withdrawn' );
2060
            { biblionumber => $biblio->biblionumber, itemlost => 1, library => $library->id } );
2061
2061
        is( $biblio->items->filter_by_for_hold->count, 3, '3 items for hold - itemlost' );
2062
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 0 } );
2062
2063
    $builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 1 } );
2063
        $builder->build_sample_item(
2064
    t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 0);
2064
            { biblionumber => $biblio->biblionumber, withdrawn => 0, library => $library->id } );
2065
    is( $biblio->items->filter_by_for_hold->count, 5, '5 items for hold - not damaged if not AllowHoldsOnDamagedItems' );
2065
        $builder->build_sample_item(
2066
    t::lib::Mocks::mock_preference('AllowHoldsOnDamagedItems', 1);
2066
            { biblionumber => $biblio->biblionumber, withdrawn => 1, library => $library->id } );
2067
    is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' );
2067
        is( $biblio->items->filter_by_for_hold->count, 4, '4 items for hold - withdrawn' );
2068
2069
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 0 } );
2070
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 1 } );
2071
        t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 );
2072
        is(
2073
            $biblio->items->filter_by_for_hold->count, 5,
2074
            '5 items for hold - not damaged if not AllowHoldsOnDamagedItems'
2075
        );
2076
        t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 );
2077
        is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' );
2078
    };
2079
2080
    subtest "Default rule from_any_library" => sub {
2081
2082
        plan tests => 7;
2083
2084
        $biblio->items->delete;
2085
        Koha::CirculationRules->set_rule(
2086
            {
2087
                branchcode => undef,
2088
                itemtype   => undef,
2089
                rule_name  => 'holdallowed',
2090
                rule_value => 'from_any_library',
2091
            }
2092
        );
2093
2094
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 1 } );
2095
        is( $biblio->items->filter_by_for_hold->count, 0, 'no item for hold' );
2096
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => 0 } );
2097
        is( $biblio->items->filter_by_for_hold->count, 1, '1 item for hold' );
2098
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, notforloan => -1 } );
2099
        is( $biblio->items->filter_by_for_hold->count, 2, '2 items for hold' );
2100
2101
        $builder->build_sample_item(
2102
            { biblionumber => $biblio->biblionumber, itemlost => 0, library => $library->id } );
2103
        $builder->build_sample_item(
2104
            { biblionumber => $biblio->biblionumber, itemlost => 1, library => $library->id } );
2105
        is( $biblio->items->filter_by_for_hold->count, 3, '3 items for hold - itemlost' );
2106
2107
        $builder->build_sample_item(
2108
            { biblionumber => $biblio->biblionumber, withdrawn => 0, library => $library->id } );
2109
        $builder->build_sample_item(
2110
            { biblionumber => $biblio->biblionumber, withdrawn => 1, library => $library->id } );
2111
        is( $biblio->items->filter_by_for_hold->count, 4, '4 items for hold - withdrawn' );
2112
2113
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 0 } );
2114
        $builder->build_sample_item( { biblionumber => $biblio->biblionumber, damaged => 1 } );
2115
        t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 0 );
2116
        is(
2117
            $biblio->items->filter_by_for_hold->count, 5,
2118
            '5 items for hold - not damaged if not AllowHoldsOnDamagedItems'
2119
        );
2120
        t::lib::Mocks::mock_preference( 'AllowHoldsOnDamagedItems', 1 );
2121
        is( $biblio->items->filter_by_for_hold->count, 6, '6 items for hold - damaged if AllowHoldsOnDamagedItems' );
2122
2123
        Koha::CirculationRules->search(
2124
            {
2125
                rule_name  => 'holdallowed',
2126
                branchcode => undef,
2127
                itemtype   => undef,
2128
                rule_value => 'from_any_library',
2129
            }
2130
        )->delete;
2131
    };
2068
2132
2069
    $builder->build_sample_item(
2133
    $builder->build_sample_item(
2070
        {
2134
        {
2071
- 

Return to bug 38148