fix bug in request form review step, add more tests

This commit is contained in:
dandds 2018-08-13 09:44:32 -04:00
parent 0371c969e7
commit 1eb8e79f41
3 changed files with 35 additions and 22 deletions

View File

@ -78,7 +78,7 @@ class JEDIRequestFlow(object):
if self.request: if self.request:
if self.form_section == "review_submit": if self.form_section == "review_submit":
data = self.request.body data = self.request.body
if self.form_section == "information_about_you": elif self.form_section == "information_about_you":
form_data = self.request.body.get(self.form_section, {}) form_data = self.request.body.get(self.form_section, {})
data = { **self.map_user_data(self.request.creator), **form_data } data = { **self.map_user_data(self.request.creator), **form_data }
else: else:

View File

@ -102,3 +102,13 @@ def test_non_creator_info_is_not_autopopulated(monkeypatch, client, user_session
assert not user.first_name in body assert not user.first_name in body
assert not user.last_name in body assert not user.last_name in body
assert not user.email in body assert not user.email in body
def test_can_review_data(user_session, client):
creator = UserFactory.create()
user_session(creator)
request = RequestFactory.create(creator=creator)
response = client.get("/requests/new/4/{}".format(request.id))
body = response.data.decode()
# assert a sampling of the request data is on the review page
assert request.body["primary_poc"]["fname_poc"] in body
assert request.body["information_about_you"]["email_request"] in body

View File

@ -1,5 +1,5 @@
import pytest import pytest
from tests.mocks import MOCK_USER from .factories import UserFactory
from atst.routes.requests.jedi_request_flow import JEDIRequestFlow from atst.routes.requests.jedi_request_flow import JEDIRequestFlow
@pytest.fixture @pytest.fixture
@ -7,40 +7,43 @@ def screens(app):
return JEDIRequestFlow(3).screens return JEDIRequestFlow(3).screens
@pytest.mark.skip() def test_stepthrough_request_form(monkeypatch, user_session, screens, client):
def test_stepthrough_request_form(monkeypatch, screens, client): user = UserFactory.create()
user_session(user)
monkeypatch.setattr( monkeypatch.setattr(
"atst.handlers.request_new.RequestNew.get_current_user", lambda s: MOCK_USER "atst.routes.requests.jedi_request_flow.JEDIRequestFlow.validate", lambda s: True
)
monkeypatch.setattr(
"atst.handlers.request_new.RequestNew.check_xsrf_cookie", lambda s: True
)
monkeypatch.setattr(
"atst.handlers.request_new.JEDIRequestFlow.validate", lambda s: True
) )
def post_form(url, redirects=False):
return client.post(
url,
headers={"Content-Type": "application/x-www-form-urlencoded"},
data="meaning=42",
follow_redirects=redirects
)
def take_a_step(inc, req=None): def take_a_step(inc, req=None):
req_url = "/requests/new/{}".format(inc) req_url = "/requests/new/{}".format(inc)
if req: if req:
req_url += "/" + req req_url += "/" + req
response = client.post( # we do it twice, with and without redirect, in order to get the
req_url, # destination url
headers={"Content-Type": "application/x-www-form-urlencoded"}, prelim_resp = post_form(req_url)
data="meaning=42", response = post_form(req_url, True)
) return (prelim_resp.headers.get("Location"), response)
return response
# GET the initial form # GET the initial form
response = client.get("/requests/new") response = client.get("/requests/new/1")
assert screens[0]["title"] in response.data.decode() assert screens[0]["title"] in response.data.decode()
# POST to each of the form pages up until review and submit # POST to each of the form pages up until review and submit
req_id = None req_id = None
for i in range(1, len(screens)): for i in range(1, len(screens)):
resp = take_a_step(i, req=req_id) effective_url, resp = take_a_step(i, req=req_id)
__import__('ipdb').set_trace() req_id = effective_url.split("/")[-1]
req_id = resp.effective_url.split("/")[-1]
screen_title = screens[i]["title"].replace("&", "&") screen_title = screens[i]["title"].replace("&", "&")
assert "/requests/new/{}/{}".format(i + 1, req_id) in resp.effective_url assert "/requests/new/{}/{}".format(i + 1, req_id) in effective_url
assert screen_title in resp.data.decode() assert screen_title in resp.data.decode()