add method shorthands

This commit is contained in:
Raphael Deem 2017-01-19 23:47:07 -08:00
parent 5a7b70c054
commit 96424b6b0a
2 changed files with 86 additions and 0 deletions

View File

@ -66,6 +66,25 @@ class Sanic:
return response
# Shorthand method decorators
def get(self, uri, host=None):
return self.route(uri, methods=["GET"], host=host)
def post(self, uri, host=None):
return self.route(uri, methods=["POST"], host=host)
def put(self, uri, host=None):
return self.route(uri, methods=["PUT"], host=host)
def head(self, uri, host=None):
return self.route(uri, methods=["HEAD"], host=host)
def options(self, uri, host=None):
return self.route(uri, methods=["OPTIONS"], host=host)
def patch(self, uri, host=None):
return self.route(uri, methods=["PATCH"], host=host)
def add_route(self, handler, uri, methods=None, host=None):
"""
A helper method to register class instance or

View File

@ -10,6 +10,73 @@ from sanic.utils import sanic_endpoint_test
# UTF-8
# ------------------------------------------------------------ #
def test_shorthand_routes():
app = Sanic('test_shorhand_routes')
@app.get('')
def handler(request):
return text('OK')
@app.post('/post')
def handler(request):
return text('OK')
@app.put('/put')
def handler(request):
return text('OK')
@app.patch('/patch')
def handler(request):
return text('OK')
@app.head('/head')
def handler(request):
return text('OK')
@app.options('/options')
def handler(request):
return text('OK')
request, response = sanic_endpoint_test(app, uri='/')
assert response.text == 'OK'
request, response = sanic_endpoint_test(app, uri='/', method='post')
assert response.status == 405
request, response = sanic_endpoint_test(app, uri='/post', method='post')
assert response.text == 'OK'
request, response = sanic_endpoint_test(app, uri='/post', method='get')
assert response.status == 405
request, response = sanic_endpoint_test(app, uri='/put', method='put')
assert response.text == 'OK'
request, response = sanic_endpoint_test(app, uri='/put', method='get')
assert response.status == 405
request, response = sanic_endpoint_test(app, uri='/patch',
method='patch')
assert response.text == 'OK'
request, response = sanic_endpoint_test(app, uri='/patch', method='get')
assert response.status == 405
request, response = sanic_endpoint_test(app, uri='/head', method='head')
assert response.status== 200
request, response = sanic_endpoint_test(app, uri='/head', method='get')
assert response.status == 405
request, response = sanic_endpoint_test(app, uri='/options',
method='options')
assert response.text == 'OK'
request, response = sanic_endpoint_test(app, uri='/options',
method='get')
assert response.status == 405
def test_static_routes():
app = Sanic('test_dynamic_route')