"""Rental picker is customer-scoped and excludes completed/deleted cases.""" import asyncio from unittest.mock import patch import pytest from fastapi import HTTPException from app.modules.rentals.backend import router def test_picker_filters_customer_and_open_statuses_and_limits_results(): rows = [{'id':i,'titel':'Sag','status':'Ny'} for i in range(101)] with patch.object(router,'execute_query_single',return_value={'id':1}), patch.object(router,'execute_query',return_value=rows) as query: result = asyncio.run(router.quick_rent_cases(1,12,'PC')) sql, params = query.call_args.args assert params == (12,'%PC%','%PC%') assert 'customer_id=%s' in sql and 'deleted_at IS NULL' in sql for status in ['lukket','closed','afsluttet','done','løst','resolved']: assert status in sql assert len(result['cases']) == 100 and result['has_more'] is True def test_picker_missing_hardware_and_empty_results(): with patch.object(router,'execute_query_single',return_value=None), patch.object(router,'execute_query') as query: with pytest.raises(HTTPException) as error: asyncio.run(router.quick_rent_cases(99,12,'')) assert error.value.status_code == 404 query.assert_not_called() with patch.object(router,'execute_query_single',return_value={'id':1}), patch.object(router,'execute_query',return_value=[]): assert asyncio.run(router.quick_rent_cases(1,12,'')) == {'cases':[],'has_more':False}