bmc_hub/tests/test_quick_rent_case_picker.py

29 lines
1.4 KiB
Python
Raw Normal View History

"""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}