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