Skip to content

Commit f490835

Browse files
committed
Utilizing sanic 0.4 testing capabilities
1 parent 7124741 commit f490835

5 files changed

Lines changed: 105 additions & 142 deletions

File tree

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from setuptools import setup, find_packages
22

3-
required_packages = ['graphql-core>=1.0', 'sanic>=0.3.1', 'pytest-runner']
3+
required_packages = ['graphql-core>=1.0', 'sanic>=0.4.0', 'pytest-runner']
44

55
setup(
66
name='Sanic-GraphQL',

tests/app.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
11
from functools import partial
22

3+
try:
4+
from urllib import urlencode
5+
except ImportError:
6+
from urllib.parse import urlencode
7+
38
from sanic import Sanic
9+
from sanic.testing import TestClient
410
from sanic_graphql import GraphQLView
511
from graphql.execution.executors.asyncio import AsyncioExecutor
612

@@ -15,20 +21,26 @@ def create_app(path='/graphql', **kwargs):
1521
async_executor = kwargs.pop('async_executor', False)
1622

1723
if async_executor:
24+
@app.listener('before_server_start')
1825
def init_async_executor(app, loop):
1926
executor = AsyncioExecutor(loop)
2027
app.add_route(GraphQLView.as_view(schema=schema, executor=executor, **kwargs), path)
2128

29+
@app.listener('before_server_stop')
2230
def remove_graphql_endpoint(app, loop):
2331
app.remove_route(path)
24-
25-
app.server_kwargs = dict(
26-
before_start=init_async_executor,
27-
after_stop=remove_graphql_endpoint
28-
)
2932
else:
3033
app.add_route(GraphQLView.as_view(schema=schema, **kwargs), path)
31-
app.server_kwargs = dict()
3234

35+
app.client = TestClient(app)
3336
return app
3437

38+
39+
def url_string(uri='/graphql', **url_params):
40+
string = '/graphql'
41+
42+
if url_params:
43+
string += '?' + urlencode(url_params)
44+
45+
return string
46+

tests/test_graphiqlview.py

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
from jinja2 import Environment
44

5-
from .app import create_app
6-
from .util import app, client, url_string
5+
from .app import create_app, url_string
76

87

98
@pytest.fixture
@@ -21,17 +20,17 @@ def pretty_response():
2120
(create_app(async_executor=False, graphiql=True)),
2221
(create_app(async_executor=True, graphiql=True)),
2322
])
24-
def test_graphiql_is_enabled(app, client):
25-
response = client.get(app, uri=url_string(), headers={'Accept': 'text/html'})
23+
def test_graphiql_is_enabled(app):
24+
_, response = app.client.get( uri=url_string(), headers={'Accept': 'text/html'})
2625
assert response.status == 200
2726

2827

2928
@pytest.mark.parametrize('app', [
3029
(create_app(async_executor=False, graphiql=True)),
3130
(create_app(async_executor=True, graphiql=True)),
3231
])
33-
def test_graphiql_simple_renderer(app, client, pretty_response):
34-
response = client.get(app, uri=url_string(query='{test}'), headers={'Accept': 'text/html'})
32+
def test_graphiql_simple_renderer(app, pretty_response):
33+
_, response = app.client.get(uri=url_string(query='{test}'), headers={'Accept': 'text/html'})
3534
assert response.status == 200
3635
assert pretty_response in response.body.decode('utf-8')
3736

@@ -40,8 +39,8 @@ def test_graphiql_simple_renderer(app, client, pretty_response):
4039
(create_app(async_executor=False, graphiql=True, jinja_env=Environment())),
4140
(create_app(async_executor=True, graphiql=True, jinja_env=Environment())),
4241
])
43-
def test_graphiql_jinja_renderer(app, client, pretty_response):
44-
response = client.get(app, uri=url_string(query='{test}'), headers={'Accept': 'text/html'})
42+
def test_graphiql_jinja_renderer(app, pretty_response):
43+
_, response = app.client.get(uri=url_string(query='{test}'), headers={'Accept': 'text/html'})
4544
assert response.status == 200
4645
assert pretty_response in response.body.decode('utf-8')
4746

@@ -50,8 +49,8 @@ def test_graphiql_jinja_renderer(app, client, pretty_response):
5049
(create_app(async_executor=False, graphiql=True, jinja_env=Environment(enable_async=True))),
5150
(create_app(async_executor=True, graphiql=True, jinja_env=Environment(enable_async=True))),
5251
])
53-
def test_graphiql_jinja_async_renderer(app, client, pretty_response):
54-
response = client.get(app, uri=url_string(query='{test}'), headers={'Accept': 'text/html'})
52+
def test_graphiql_jinja_async_renderer(app, pretty_response):
53+
_, response = app.client.get(uri=url_string(query='{test}'), headers={'Accept': 'text/html'})
5554
assert response.status == 200
5655
assert pretty_response in response.body.decode('utf-8')
5756

@@ -60,6 +59,6 @@ def test_graphiql_jinja_async_renderer(app, client, pretty_response):
6059
(create_app(async_executor=False, graphiql=True, jinja_env=Environment())),
6160
(create_app(async_executor=True, graphiql=True, jinja_env=Environment())),
6261
])
63-
def test_graphiql_html_is_not_accepted(app, client):
64-
response = client.get(app, uri=url_string(), headers={'Accept': 'application/json'})
62+
def test_graphiql_html_is_not_accepted(app):
63+
_, response = app.client.get(uri=url_string(), headers={'Accept': 'application/json'})
6564
assert response.status == 400

0 commit comments

Comments
 (0)