bmc_hub/tests/test_internet_change_case_service.py

48 lines
2.1 KiB
Python
Raw Permalink Normal View History

import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.parent))
from app.modules.internet_connections.backend import change_case_service as service
def test_relevant_change_filter_excludes_manual_classification_and_customer():
changes = service.filter_relevant_changes({
'monthly_cost': {'from': 100, 'to': 125},
'customer_id': {'from': None, 'to': 7},
'allocation_model': {'from': 'dedicated', 'to': 'shared'},
'notes': {'from': 'før', 'to': 'efter'},
})
assert changes == {'monthly_cost': {'from': 100, 'to': 125}}
def test_same_import_merges_into_existing_case(monkeypatch):
writes = []
monkeypatch.setattr(service, 'execute_query_single', lambda query, params=None: (
{'id': 4, 'sag_id': 91, 'changes': {'monthly_cost': {'from': 100, 'to': 125}}}
if 'FROM internet_connection_change_cases' in query else None
))
monkeypatch.setattr(service, 'execute_query', lambda query, params=None, fetch=True: writes.append((query, params)))
result = service.ensure_external_change_case(
connection_id=5, source_type='test_import', source_key='same-file',
source_label='Testfil', connection_name='Fiber', reference='NKA-1', provider='Leverandør',
owner_customer_id=7, changes={'speed_mbps': {'from': 100, 'to': 200}},
)
assert result['case_id'] == 91
assert result['created'] is False
assert set(result['changes']) == {'monthly_cost', 'speed_mbps'}
assert any('UPDATE sag_sager' in query for query, _ in writes)
def test_case_failure_is_reported_without_raising(monkeypatch):
monkeypatch.setattr(service, 'execute_query_single', lambda *args, **kwargs: (_ for _ in ()).throw(RuntimeError('database down')))
monkeypatch.setattr(service, 'execute_query', lambda *args, **kwargs: None)
result = service.ensure_external_change_case(
connection_id=5, source_type='test', source_key='run-1', source_label='Test',
changes={'status': {'from': 'active', 'to': 'inactive'}},
)
assert result['case_id'] is None
assert result['error'] == 'database down'