"""Tests for the graphql utility.""" from unittest.mock import patch from unittest.mock import call from product_review.util.graphql import make_request from gql import gql as gql_query @patch('product_review.util.graphql.Client', autospec=True) @patch('product_review.util.graphql.RequestsHTTPTransport', autospec=True) # noqa:E501 def test_make_request(mock_gql_transport, mock_gql_client): """Test low level graphql_router requests.""" mock_query = """ query doSomething { func { data { id } } } """ mock_variables = {'abc': '123'} make_request( mock_query, mock_variables, headers={'xyz': '456'} ) test_url = 'https://test-graphql-router.theorchard.io/graphql' assert mock_gql_transport.call_args_list == [ call( headers={ 'xyz': '456', 'apollographql-client-name': 'ows-product-review', 'apollographql-client-version': '1' }, retries=3, url=test_url, use_json=True, verify=True ) ] assert mock_gql_client.call_args_list == [ call( fetch_schema_from_transport=False, transport=mock_gql_transport(url=test_url) ) ] assert mock_gql_client.return_value.execute.call_args_list == [ call( gql_query(mock_query), variable_values=mock_variables ) ]