1+ import os
2+
13import pytest
24import requests
35import vcr
46
57from gql import Client , gql
68from gql .transport .requests import RequestsHTTPTransport
79
8- # https://github.com/graphql-python/swapi-graphene
10+ # We serve https://github.com/graphql-python/swapi-graphene locally:
911URL = "http://127.0.0.1:8000/graphql"
1012
1113
14+ def use_cassette (name ):
15+
16+ return vcr .use_cassette (
17+ os .path .join (
18+ os .path .dirname (__file__ ), "fixtures" , "vcr_cassettes" , name + ".yaml"
19+ ),
20+ record_mod = "new_episodes" ,
21+ )
22+
23+
1224@pytest .fixture
1325def client ():
14- with vcr . use_cassette ("tests/fixtures/vcr_cassettes/ client.yaml " ):
15- request = requests .get (
26+ with use_cassette ("client" ):
27+ response = requests .get (
1628 URL , headers = {"Host" : "swapi.graphene-python.org" , "Accept" : "text/html" }
1729 )
18- request .raise_for_status ()
19- csrf = request .cookies ["csrftoken" ]
30+ response .raise_for_status ()
31+ csrf = response .cookies ["csrftoken" ]
2032
2133 return Client (
2234 transport = RequestsHTTPTransport (
@@ -29,21 +41,21 @@ def client():
2941def test_hero_name_query (client ):
3042 query = gql (
3143 """
32- {
33- myFavoriteFilm: film(id:"RmlsbToz") {
34- id
35- title
36- episodeId
37- characters(first:5) {
38- edges {
39- node {
40- name
44+ {
45+ myFavoriteFilm: film(id:"RmlsbToz") {
46+ id
47+ title
48+ episodeId
49+ characters(first:5) {
50+ edges {
51+ node {
52+ name
53+ }
54+ }
4155 }
4256 }
4357 }
44- }
45- }
46- """
58+ """
4759 )
4860 expected = {
4961 "myFavoriteFilm" : {
@@ -61,6 +73,29 @@ def test_hero_name_query(client):
6173 },
6274 }
6375 }
64- with vcr . use_cassette ("tests/fixtures/vcr_cassettes/ execute.yaml " ):
76+ with use_cassette ("execute" ):
6577 result = client .execute (query )
6678 assert result == expected
79+
80+
81+ def test_planet_names_query (client ):
82+ query = gql (
83+ """
84+ query Planet1 {
85+ planet(id: "UGxhbmV0OjEw") {
86+ id
87+ name
88+ }
89+ }
90+ query Planet2 {
91+ planet(id: "UGxhbmV0OjEx") {
92+ id
93+ name
94+ }
95+ }
96+ """
97+ )
98+ expected = {"planet" : {"id" : "UGxhbmV0OjEx" , "name" : "Geonosis" }}
99+ with use_cassette ("execute2" ):
100+ result = client .execute (query , operation_name = "Planet2" )
101+ assert result == expected
0 commit comments