def test_duplicate_fields(client): query = gql(''' query DuplicateFields { luke: human(id: "1000") { name homePlanet } leia: human(id: "1003") { name homePlanet } } ''') expected = { 'luke': { 'name': 'Luke Skywalker', 'homePlanet': 'Tatooine', }, 'leia': { 'name': 'Leia Organa', 'homePlanet': 'Alderaan', } } result = client.execute(query) assert result == expected
def test_hero_name_and_friends_query(client): query = gql(''' query HeroNameAndFriendsQuery { hero { id name friends { name } } } ''') expected = { 'hero': { 'id': '2001', 'name': 'R2-D2', 'friends': [ { 'name': 'Luke Skywalker' }, { 'name': 'Han Solo' }, { 'name': 'Leia Organa' }, ] } } result = client.execute(query) assert result == expected
def test_use_fragment(client): query = gql(''' query UseFragment { luke: human(id: "1000") { ...HumanFragment } leia: human(id: "1003") { ...HumanFragment } } fragment HumanFragment on Human { name homePlanet } ''') expected = { 'luke': { 'name': 'Luke Skywalker', 'homePlanet': 'Tatooine', }, 'leia': { 'name': 'Leia Organa', 'homePlanet': 'Alderaan', } } result = client.execute(query) assert result == expected
def validation_errors(client, query): query = gql(query) try: client.validate(query) return False except Exception: return True
def test_hero_name_query(client): query = gql(''' query HeroNameQuery { hero { name } } ''') expected = {'hero': {'name': 'R2-D2'}} result = client.execute(query) assert result == expected
def test_parse_error(client): result = None with pytest.raises(Exception) as excinfo: query = gql(''' qeury ''') result = client.execute(query) error = excinfo.value formatted_error = format_error(error) assert formatted_error['locations'] == [{'column': 13, 'line': 2}] assert 'Syntax Error GraphQL request (2:13) Unexpected Name "qeury"' in formatted_error[ 'message'] assert not result
def test_invalid_id_query(client): query = gql(''' query humanQuery($id: String!) { human(id: $id) { name } } ''') params = { 'id': 'not a valid id', } expected = {'human': None} result = client.execute(query, variable_values=params) assert result == expected
def test_hero_name_query(client): query = gql(''' { myFavoriteFilm: film(id:"RmlsbToz") { id title episodeId characters(first:5) { edges { node { name } } } } } ''') expected = { "myFavoriteFilm": { "id": "RmlsbToz", "title": "Return of the Jedi", "episodeId": 6, "characters": { "edges": [{ "node": { "name": "Luke Skywalker" } }, { "node": { "name": "C-3PO" } }, { "node": { "name": "R2-D2" } }, { "node": { "name": "Darth Vader" } }, { "node": { "name": "Leia Organa" } }] } } } result = client.execute(query) assert result == expected
def test_fetch_luke_aliased(client): query = gql(''' query FetchLukeAliased { luke: human(id: "1000") { name } } ''') expected = { 'luke': { 'name': 'Luke Skywalker', } } result = client.execute(query) assert result == expected
def test_fetch_luke_query(client): query = gql(''' query FetchLukeQuery { human(id: "1000") { name } } ''') expected = { 'human': { 'name': 'Luke Skywalker', } } result = client.execute(query) assert result == expected
def test_check_type_of_luke(client): query = gql(''' query CheckTypeOfLuke { hero(episode: EMPIRE) { __typename name } } ''') expected = { 'hero': { '__typename': 'Human', 'name': 'Luke Skywalker', } } result = client.execute(query) assert result == expected
def test_check_type_of_r2(client): query = gql(''' query CheckTypeOfR2 { hero { __typename name } } ''') expected = { 'hero': { '__typename': 'Droid', 'name': 'R2-D2', } } result = client.execute(query) assert result == expected
def test_fetch_some_id_query2(client): query = gql(''' query FetchSomeIDQuery($someId: String!) { human(id: $someId) { name } } ''') params = { 'someId': '1002', } expected = { 'human': { 'name': 'Han Solo', } } result = client.execute(query, variable_values=params) assert result == expected
def test_fetch_luke_and_leia_aliased(client): query = gql(''' query FetchLukeAndLeiaAliased { luke: human(id: "1000") { name } leia: human(id: "1003") { name } } ''') expected = { 'luke': { 'name': 'Luke Skywalker', }, 'leia': { 'name': 'Leia Organa', } } result = client.execute(query) assert result == expected
def test_retries(execute_mock): expected_retries = 3 execute_mock.side_effect = Exception("fail") client = Client(retries=expected_retries, transport=RequestsHTTPTransport( url='https://fierce-crag-44069.herokuapp.com/graphql')) query = gql(''' { myFavoriteFilm: film(id:"RmlsbToz") { id title episodeId } } ''') with pytest.raises(Exception): client.execute(query) assert execute_mock.call_count == expected_retries
def test_nested_query(client): query = gql(''' query NestedQuery { hero { name friends { name appearsIn friends { name } } } } ''') expected = { 'hero': { 'name': 'R2-D2', 'friends': [ { 'name': 'Luke Skywalker', 'appearsIn': ['NEWHOPE', 'EMPIRE', 'JEDI'], 'friends': [ { 'name': 'Han Solo', }, { 'name': 'Leia Organa', }, { 'name': 'C-3PO', }, { 'name': 'R2-D2', }, ] }, { 'name': 'Han Solo', 'appearsIn': ['NEWHOPE', 'EMPIRE', 'JEDI'], 'friends': [ { 'name': 'Luke Skywalker', }, { 'name': 'Leia Organa', }, { 'name': 'R2-D2', }, ] }, { 'name': 'Leia Organa', 'appearsIn': ['NEWHOPE', 'EMPIRE', 'JEDI'], 'friends': [ { 'name': 'Luke Skywalker', }, { 'name': 'Han Solo', }, { 'name': 'C-3PO', }, { 'name': 'R2-D2', }, ] }, ] } } result = client.execute(query) assert result == expected
from pygql import gql gql(''' wrong query ''') # GQL100
from pygql import gql gql(''' { id } ''') # GQL101: Cannot query field "id" on type "Query".
api_key = 'API_KEY' secret_key = 'SECRET_KEY' client = client(api_key, secret_key, use_batching=True) results = [] # marketOrderBook query = gql(''' query getOrderBook($marketCode: ID!) { orderBook: marketOrderBook(marketCode: $marketCode, limit: 50) { buy { limitPrice amount __typename } sell { limitPrice amount __typename } spread __typename } } ''') params = { "marketCode": "CHACLP" } operation_name = "getOrderBook"
from pygql import gql gql(''' query NestedQueryWithFragment { hero { ...NameAndAppearances friends { ...NameAndAppearances friends { ...NameAndAppearances } } } } fragment NameAndAppearances on Character { name appearsIn } ''') gql(''' query HeroSpaceshipQuery { hero { favoriteSpaceship } } ''') # PYGQL101: Cannot query field "favoriteSpaceship" on type "Character". gql(''' query HeroNoFieldsQuery { hero
from pygql import gql gql(''' wrong query ''') # noqa