"""Test ows-abacus-event requests.""" from unittest import mock import httpx from owsclient import OwsClient from owsclient.test import OwsClientMock import pytest from src.connectors.ows_event import get_events_by_target_type from src.exceptions import OwsEventException from src.models import Event def test_get_events_by_target_type_success(ows_client_mock: OwsClientMock) -> None: """Test successfully getting events.""" events = [ { 'abacus_event_id': 1, 'event_name': 'payments_calculate', 'statement_period_id': 300, 'target_id': 1, }, { 'abacus_event_id': 2, 'event_name': 'payments_generate', 'statement_period_id': 300, 'target_id': 1, }, ] target_type = 'test_target' target_id = 11 ows_client_mock.get( 'ows-abacus-event', f'/abacus-event/{target_type}/{target_id}' ).mock(return_value=httpx.Response(status_code=200, json=events)) res = get_events_by_target_type(target_type, target_id) assert len(res) == len(events) assert res[0] == Event.model_validate(events[0]) assert res[1] == Event.model_validate(events[1]) # checking default assert res[0].target_type == 'payment_group_payment' def test_get_events_by_target_type_failure(ows_client_mock: OwsClientMock) -> None: """Test failure getting events.""" target_type = 'test_target' target_id = 11 ows_client_mock.get( 'ows-abacus-event', f'/abacus-event/{target_type}/{target_id}' ).mock(return_value=httpx.Response(status_code=400, json='error')) with pytest.raises( OwsEventException, match=f'ERROR in GET /abacus-event/{target_type}/{target_id}' ): get_events_by_target_type(target_type, target_id)