Send new requests to requests-queue
This commit is contained in:
parent
b51955771f
commit
8b1410aed5
@ -43,4 +43,5 @@ class ApiClient(object):
|
|||||||
if response.headers['Content-Type'] == 'application/json':
|
if response.headers['Content-Type'] == 'application/json':
|
||||||
json = loads(response.body)
|
json = loads(response.body)
|
||||||
setattr(response, 'json', json)
|
setattr(response, 'json', json)
|
||||||
|
setattr(response, 'ok', 200 <= response.code < 300)
|
||||||
return response
|
return response
|
||||||
|
@ -45,13 +45,18 @@ class RequestNew(BaseHandler):
|
|||||||
self.requests_client = requests_client
|
self.requests_client = requests_client
|
||||||
|
|
||||||
@tornado.web.authenticated
|
@tornado.web.authenticated
|
||||||
|
@tornado.gen.coroutine
|
||||||
def post(self, screen = 1):
|
def post(self, screen = 1):
|
||||||
self.check_xsrf_cookie()
|
self.check_xsrf_cookie()
|
||||||
screen = int(screen)
|
screen = int(screen)
|
||||||
form = self.screens[ screen - 1 ]['form'](self.request.arguments)
|
form = self.screens[ screen - 1 ]['form'](self.request.arguments)
|
||||||
if form.validate():
|
if form.validate():
|
||||||
where = self.application.default_router.reverse_url('request_form', str(screen + 1))
|
response = yield self.create_or_update_request(form.data)
|
||||||
self.redirect(where)
|
if response.ok:
|
||||||
|
where = self.application.default_router.reverse_url('request_form', str(screen + 1))
|
||||||
|
self.redirect(where)
|
||||||
|
else:
|
||||||
|
self.set_status(response.code)
|
||||||
else:
|
else:
|
||||||
self.show_form(screen, form)
|
self.show_form(screen, form)
|
||||||
|
|
||||||
@ -68,3 +73,12 @@ class RequestNew(BaseHandler):
|
|||||||
screens = self.screens,
|
screens = self.screens,
|
||||||
current = int(screen),
|
current = int(screen),
|
||||||
next_screen = int(screen) + 1 )
|
next_screen = int(screen) + 1 )
|
||||||
|
|
||||||
|
@tornado.gen.coroutine
|
||||||
|
def create_or_update_request(self, form_data):
|
||||||
|
request_data = {
|
||||||
|
'creator_id': self.current_user,
|
||||||
|
'request': form_data
|
||||||
|
}
|
||||||
|
response = yield self.requests_client.post('/requests', json=request_data)
|
||||||
|
return response
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
import re
|
import re
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
|
|
||||||
ERROR_CLASS = 'usa-input-error-message'
|
ERROR_CLASS = 'usa-input-error-message'
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.gen_test
|
@pytest.mark.gen_test
|
||||||
def test_submit_invalid_request_form(monkeypatch, http_client, base_url):
|
def test_submit_invalid_request_form(monkeypatch, http_client, base_url):
|
||||||
monkeypatch.setattr('atst.handlers.request_new.RequestNew.get_current_user', lambda s: True)
|
monkeypatch.setattr('atst.handlers.request_new.RequestNew.get_current_user', lambda s: True)
|
||||||
@ -18,11 +18,13 @@ def test_submit_invalid_request_form(monkeypatch, http_client, base_url):
|
|||||||
assert response.effective_url == base_url + '/requests/new'
|
assert response.effective_url == base_url + '/requests/new'
|
||||||
assert re.search(ERROR_CLASS, response.body.decode())
|
assert re.search(ERROR_CLASS, response.body.decode())
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.gen_test
|
@pytest.mark.gen_test
|
||||||
def test_submit_valid_request_form(monkeypatch, http_client, base_url):
|
def test_submit_valid_request_form(monkeypatch, http_client, base_url):
|
||||||
monkeypatch.setattr('atst.handlers.request_new.RequestNew.get_current_user', lambda s: True)
|
monkeypatch.setattr('atst.handlers.request_new.RequestNew.get_current_user', lambda s: True)
|
||||||
monkeypatch.setattr('atst.handlers.request_new.RequestNew.check_xsrf_cookie', lambda s: True)
|
monkeypatch.setattr('atst.handlers.request_new.RequestNew.check_xsrf_cookie', lambda s: True)
|
||||||
monkeypatch.setattr('atst.forms.request.RequestForm.validate', lambda s: True)
|
monkeypatch.setattr('atst.forms.request.RequestForm.validate', lambda s: True)
|
||||||
|
|
||||||
# this just needs to send a known invalid form value
|
# this just needs to send a known invalid form value
|
||||||
response = yield http_client.fetch(
|
response = yield http_client.fetch(
|
||||||
base_url + "/requests/new",
|
base_url + "/requests/new",
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
import tornado.gen
|
import tornado.gen
|
||||||
from tornado.httpclient import HTTPRequest, HTTPResponse
|
from tornado.httpclient import HTTPRequest, HTTPResponse
|
||||||
|
|
||||||
|
from atst.api_client import ApiClient
|
||||||
|
|
||||||
class MockApiClient(object):
|
|
||||||
|
class MockApiClient(ApiClient):
|
||||||
def __init__(self, service):
|
def __init__(self, service):
|
||||||
self.service = service
|
self.service = service
|
||||||
|
|
||||||
@ -27,6 +29,8 @@ class MockApiClient(object):
|
|||||||
return self._get_response('DELETE', path)
|
return self._get_response('DELETE', path)
|
||||||
|
|
||||||
def _get_response(self, verb, path):
|
def _get_response(self, verb, path):
|
||||||
response = HTTPResponse(request=HTTPRequest(path, verb), code=200)
|
response = HTTPResponse(
|
||||||
setattr(response, 'json', {})
|
request=HTTPRequest(path, verb),
|
||||||
return response
|
code=200,
|
||||||
|
headers={'Content-Type': 'application-json'})
|
||||||
|
return self.adapt_response(response)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user