"""Tests for the GraphQL connector.""" from unittest.mock import MagicMock from unittest.mock import patch import pytest from src.connectors.graphql import GqlClient class TestGraphQLClient: """Test class for GraphQLClient.""" @pytest.fixture(autouse=True, scope='class') def config(self): """Set mock config.""" with patch('src.connectors.graphql.config') as mock_config: mock_config.IDENTITY_ID = 'test_identity' mock_config.CLIENT_NAME = 'test_client_name' mock_config.PROFILE_ID = 'test_profile_id' mock_config.PROFILE_TYPE = 'test_profile_type' mock_config.GRASS_URI = 'test_grass_uri' yield mock_config @patch('src.connectors.graphql.RequestsHTTPTransport') @patch('src.connectors.graphql.Client') @patch('src.connectors.graphql.gql') def test_init(self, mock_gql, mock_gql_client, mock_requests_http_transport, config): """Test initialization of GraphQLClient.""" mock_requests_http_transport.return_value = 'test_transport' mock_gql_client.return_value = 'test_client' mock_gql.return_value = 'test_query' client = GqlClient('test_token', 'test_query_body') assert client.transport == 'test_transport' assert client.client == 'test_client' assert client.query == 'test_query' mock_requests_http_transport.assert_called_once_with( url=config.GRASS_URI, use_json=True, headers={'Authorization': 'Bearer test_token', 'orchard-Identity-Id': config.IDENTITY_ID, 'apollographql-client-name': config.CLIENT_NAME, 'orchard-profile-id': config.PROFILE_ID, 'orchard-profile-type': config.PROFILE_TYPE, } ) mock_gql_client.assert_called_once_with( transport='test_transport', fetch_schema_from_transport=False ) mock_gql.assert_called_once_with('test_query_body') @patch.object(GqlClient, '__init__', lambda self, grass_token, query: None) def test_execute_query(self, config): """Test execute_query function.""" client = GqlClient('test_token', 'test_query_body') client.client = MagicMock() client.query = 'test_query' client.client.execute.return_value = {'data': 'test_data'} result = client.execute_query({'var1': 'value1'}) assert result == {'data': 'test_data'} client.client.execute.assert_called_once_with( 'test_query', variable_values={'var1': 'value1'})