29 lines
1.4 KiB
Python
29 lines
1.4 KiB
Python
"""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}
|