fix bug in request form review step, add more tests
This commit is contained in:
parent
0371c969e7
commit
1eb8e79f41
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user