From de75560fb9c795cb8b742a4da9079a6c41bc5be4 Mon Sep 17 00:00:00 2001 From: Kaisa Kuivalahti Date: Wed, 18 Sep 2024 13:19:30 +0300 Subject: [PATCH] EKIR-213 Add test for new exception --- tests/api/controller/test_loan.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/api/controller/test_loan.py b/tests/api/controller/test_loan.py index 4c2891569..67cb55f0e 100644 --- a/tests/api/controller/test_loan.py +++ b/tests/api/controller/test_loan.py @@ -21,6 +21,7 @@ from api.circulation_exceptions import ( AlreadyOnHold, NoAvailableCopies, + NoAvailableCopiesWhenReserved, NoLicenses, NotFoundOnRemote, PatronHoldLimitReached, @@ -1091,6 +1092,26 @@ def test_hold_fails_when_patron_is_at_hold_limit(self, loan_fixture: LoanFixture assert isinstance(response, ProblemDetail) assert HOLD_LIMIT_REACHED.uri == response.uri + def test_loan_fails_when_patron_is_at_hold_limit_and_hold_position_zero( + self, loan_fixture: LoanFixture + ): + edition, pool = loan_fixture.db.edition(with_license_pool=True) + pool.open_access = False + with loan_fixture.request_context_with_library( + "/", headers=dict(Authorization=loan_fixture.valid_auth) + ): + patron = loan_fixture.manager.loans.authenticated_patron_from_request() + loan_fixture.manager.d_circulation.queue_checkout(pool, NoAvailableCopies()) + loan_fixture.manager.d_circulation.queue_hold( + pool, NoAvailableCopiesWhenReserved() + ) + response = loan_fixture.manager.loans.borrow( + pool.identifier.type, pool.identifier.identifier + ) + assert isinstance(response, ProblemDetail) + assert NO_COPIES_WHEN_RESERVED.uri == response.uri + assert 403 == response.status_code + def test_borrow_fails_with_outstanding_fines( self, loan_fixture: LoanFixture, library_fixture: LibraryFixture ):