Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
def validation_errors(client, query):
    query = gql(query)
    try:
        client.validate(query)
        return False
    except Exception:
        return True
Beispiel #5
0
def test_hero_name_query(client):
    query = gql('''
        query HeroNameQuery {
          hero {
            name
          }
        }
    ''')
    expected = {'hero': {'name': 'R2-D2'}}
    result = client.execute(query)
    assert result == expected
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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
Beispiel #12
0
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
Beispiel #13
0
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
Beispiel #14
0
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
Beispiel #15
0
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
Beispiel #16
0
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
Beispiel #17
0
from pygql import gql

gql(''' wrong query ''') # GQL100
Beispiel #18
0
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"
Beispiel #20
0
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
Beispiel #21
0
from pygql import gql

gql(''' wrong query ''')  # noqa