"""graphql-router unit tests.""" import pytest from gql.transport.exceptions import TransportQueryError from graphql import DocumentNode from src.connectors.graphql_router import execute_query def test_execute_query_success(mocker): """Test that a query is executed.""" mocker.patch('src.connectors.graphql_router.DEFAULT_HEADERS', {'foo': 'bar'}) mock_transport_class = mocker.patch('src.connectors.graphql_router.RequestsHTTPTransport') mock_client_class = mocker.patch('src.connectors.graphql_router.Client') mock_transport_instance = mock_transport_class.return_value mock_client_instance = mock_client_class.return_value expected_data = {'data': {'someField': 'someValue'}} mock_client_instance.execute.return_value = expected_data test_query = 'query TestQuery { someField }' test_params = {'variable': 'value'} test_headers = {'X-Custom-Header': 'custom_value'} result = execute_query(test_query, params=test_params, headers=test_headers) mock_transport_class.assert_called_once_with( url='http://fake-api.com/graphql', use_json=True, headers={'foo': 'bar', 'X-Custom-Header': 'custom_value'}, verify=True, retries=3, ) mock_client_class.assert_called_once_with(transport=mock_transport_instance, fetch_schema_from_transport=False) mock_client_instance.execute.assert_called_once() call_args, call_kwargs = mock_client_instance.execute.call_args assert isinstance(call_args[0], DocumentNode) assert call_kwargs['variable_values'] == test_params assert result == expected_data def test_execute_query_failure_raises_exception(mocker): """Test query execution failure.""" mocker.patch('src.connectors.graphql_router.RequestsHTTPTransport') mock_client_class = mocker.patch('src.connectors.graphql_router.Client') mock_client_instance = mock_client_class.return_value mock_client_instance.execute.side_effect = TransportQueryError('API Unavailable') with pytest.raises(TransportQueryError) as excinfo: execute_query('query Test { field }') assert 'API Unavailable' in str(excinfo.value)