"""Test graphql-gateway utils.""" import pytest from requests.exceptions import HTTPError from unittest import mock from src.utils import graphql @mock.patch('src.common.connectors.graphql_gateway.make_request') def test_execute_query(mock_request): """Test executing gql query.""" ids = list(range(0, 10)) expected_headers = { 'apollographql-client-name': 'lambda-sr-add-version', 'apollographql-client-version': '1', 'Orchard-Identity-Id': '8955b4aa-2ad0-4b0b-a2ea-6f070554d6d0', 'Orchard-Profile-Id': '179', 'Orchard-Profile-Type': 'OrchAdminProfile', 'Cache-Control': 'no-cache' } expected_query = graphql.TRACKS_QUERY expected_params = {'tuids': ids} graphql.execute_query(ids) assert mock_request.called assert mock_request.call_args_list == [ mock.call( expected_headers, expected_query, expected_params ) ] @mock.patch('src.utils.graphql.execute_query') def test_get_tracks(mock_execute_query): """Test batching execute query.""" mock_execute_query.side_effect = [ { 'tracks': [{'data': 'test'}] }, { 'tracks': [{'data2': 'test2'}] } ] tracks = list(range(0, 200)) result = graphql.get_tracks(tracks) expected_result = { 'tracks': [{'data': 'test'}, {'data2': 'test2'}] } expected_params = [ tracks[:100], tracks[100:] ] assert mock_execute_query.called assert mock_execute_query.call_args_list == [ mock.call(expected_params[0]), mock.call(expected_params[1]) ] assert result == expected_result @mock.patch('src.utils.graphql.execute_query') def test_get_tracks_exception(mock_execute_query): """Test exception tracks query.""" mock_execute_query.side_effect = HTTPError('error') tracks = list(range(0, 100)) with pytest.raises(HTTPError): graphql.get_tracks(tracks)