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

(-)a/t/db_dependent/Circulation.t (-3 / +107 lines)
Lines 17-23 Link Here
17
17
18
use Modern::Perl;
18
use Modern::Perl;
19
19
20
use Test::More tests => 103;
20
use Test::More tests => 104;
21
21
22
use DateTime;
22
use DateTime;
23
23
Lines 208-214 C4::Context->dbh->do("DELETE FROM borrowers WHERE cardnumber = '99999999999'"); Link Here
208
C4::Context->dbh->do("DELETE FROM accountlines");
208
C4::Context->dbh->do("DELETE FROM accountlines");
209
{
209
{
210
# CanBookBeRenewed tests
210
# CanBookBeRenewed tests
211
211
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', '' ); #Ensure pref doesn't affect current tests
212
    # Generate test biblio
212
    # Generate test biblio
213
    my $biblio = MARC::Record->new();
213
    my $biblio = MARC::Record->new();
214
    my $title = 'Silence in the library';
214
    my $title = 'Silence in the library';
Lines 1873-1878 subtest 'CanBookBeIssued | is_overdue' => sub { Link Here
1873
    my ($issuingimpossible, $needsconfirmation) = CanBookBeIssued($patron,$item->{barcode},$ten_days_go, undef, undef, undef);
1873
    my ($issuingimpossible, $needsconfirmation) = CanBookBeIssued($patron,$item->{barcode},$ten_days_go, undef, undef, undef);
1874
    is( $needsconfirmation->{RENEW_ISSUE}, 1, "This is a renewal");
1874
    is( $needsconfirmation->{RENEW_ISSUE}, 1, "This is a renewal");
1875
    is( $needsconfirmation->{TOO_MANY}, undef, "Not too many, is a renewal");
1875
    is( $needsconfirmation->{TOO_MANY}, undef, "Not too many, is a renewal");
1876
};
1877
1878
subtest 'ItemsDeniedRenewal preference' => sub {
1879
    plan tests => 14;
1880
1881
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', '' );
1882
1883
    $dbh->do('DELETE FROM issues');
1884
    $dbh->do('DELETE FROM items');
1885
    $dbh->do('DELETE FROM issuingrules');
1886
    $dbh->do(
1887
        q{
1888
        INSERT INTO issuingrules ( categorycode, branchcode, itemtype, reservesallowed, maxissueqty, issuelength, lengthunit, renewalsallowed, renewalperiod,
1889
                    norenewalbefore, auto_renew, fine, chargeperiod ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
1890
        },
1891
        {},
1892
        '*', '*', '*', 25,
1893
        20,  14,  'days',
1894
        10,   7,
1895
        undef,  0,
1896
        .10, 1
1897
    );
1898
1899
    my $deny_book = $builder->build_object({ class => 'Koha::Items', value => {
1900
        withdrawn => 1,
1901
        itype => 'HIDE',
1902
        location => 'PROC'
1903
        }
1904
    });
1905
    my $allow_book = $builder->build_object({ class => 'Koha::Items', value => {
1906
        withdrawn => 0,
1907
        itype => 'NOHIDE',
1908
        location => 'NOPROC'
1909
        }
1910
    });
1911
1912
    my $idr_borrower = $builder->build_object({ class => 'Koha::Patrons'});
1913
1914
    my $deny_issue = $builder->build_object({ class => 'Koha::Checkouts', value => {
1915
        returndate => undef,
1916
        renewals => 0,
1917
        auto_renew => 0,
1918
        borrowernumber => $idr_borrower->borrowernumber,
1919
        itemnumber => $deny_book->itemnumber,
1920
        onsite_checkout => 0,
1921
        }
1922
    });
1923
    my $allow_issue = $builder->build_object({ class => 'Koha::Checkouts', value => {
1924
        returndate => undef,
1925
        renewals => 0,
1926
        auto_renew => 0,
1927
        borrowernumber => $idr_borrower->borrowernumber,
1928
        itemnumber => $allow_book->itemnumber,
1929
        onsite_checkout => 0,
1930
        }
1931
    });
1932
1933
    my $idr_rules;
1934
1935
    my ( $idr_mayrenew, $idr_error ) =
1936
    CanBookBeRenewed( $idr_borrower->borrowernumber, $deny_issue->itemnumber );
1937
    is( $idr_mayrenew, 1, 'Renewal allowed when no rules' );
1938
    is( $idr_error, undef, 'Renewal allowed when no rules' );
1939
1940
    $idr_rules="
1941
        withdrawn: [1]";
1942
1943
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
1944
    ( $idr_mayrenew, $idr_error ) =
1945
    CanBookBeRenewed( $idr_borrower->borrowernumber, $deny_issue->itemnumber );
1946
    is( $idr_mayrenew, 0, 'Renewal blocked when 1 rules (withdrawn)' );
1947
    is( $idr_error, 'item_denied_renewal', 'Renewal blocked when 1 rule (withdrawn)' );
1948
    ( $idr_mayrenew, $idr_error ) =
1949
    CanBookBeRenewed( $idr_borrower->borrowernumber, $allow_issue->itemnumber );
1950
    is( $idr_mayrenew, 1, 'Renewal allowed when 1 rules not matched (withdrawn)' );
1951
    is( $idr_error, undef, 'Renewal allowed when 1 rules not matched (withdrawn)' );
1952
1953
    $idr_rules="
1954
        withdrawn: [1]
1955
        itype: [HIDE,INVISILE]";
1956
1957
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
1958
    ( $idr_mayrenew, $idr_error ) =
1959
    CanBookBeRenewed( $idr_borrower->borrowernumber, $deny_issue->itemnumber );
1960
    is( $idr_mayrenew, 0, 'Renewal blocked when 2 rules matched (withdrawn, itype)' );
1961
    is( $idr_error, 'item_denied_renewal', 'Renewal blocked when 2 rules matched (withdrawn,itype)' );
1962
    ( $idr_mayrenew, $idr_error ) =
1963
    CanBookBeRenewed( $idr_borrower->borrowernumber, $allow_issue->itemnumber );
1964
    is( $idr_mayrenew, 1, 'Renewal allowed when 2 rules not matched (withdrawn, itype)' );
1965
    is( $idr_error, undef, 'Renewal allowed when 2 rules not matched (withdrawn, itype)' );
1966
1967
    $idr_rules="
1968
        withdrawn: [1]
1969
        itype: [HIDE,INVISIBLE]
1970
        location: [PROC]";
1971
1972
    t::lib::Mocks::mock_preference( 'ItemsDeniedRenewal', $idr_rules );
1973
    ( $idr_mayrenew, $idr_error ) =
1974
    CanBookBeRenewed( $idr_borrower->borrowernumber, $deny_issue->itemnumber );
1975
    is( $idr_mayrenew, 0, 'Renewal blocked when 3 rules matched (withdrawn, itype, location)' );
1976
    is( $idr_error, 'item_denied_renewal', 'Renewal blocked when 3 rules matched (withdrawn,itype, location)' );
1977
    ( $idr_mayrenew, $idr_error ) =
1978
    CanBookBeRenewed( $idr_borrower->borrowernumber, $allow_issue->itemnumber );
1979
    is( $idr_mayrenew, 1, 'Renewal allowed when 3 rules not matched (withdrawn, itype, location)' );
1980
    is( $idr_error, undef, 'Renewal allowed when 3 rules not matched (withdrawn, itype, location)' );
1876
1981
1877
};
1982
};
1878
1983
1879
- 

Return to bug 15494