diff --git a/atst/routes/requests/jedi_request_flow.py b/atst/routes/requests/jedi_request_flow.py index 0b56743b..731a837f 100644 --- a/atst/routes/requests/jedi_request_flow.py +++ b/atst/routes/requests/jedi_request_flow.py @@ -128,11 +128,22 @@ class JEDIRequestFlow(object): def map_request_data(self, section, data): if section == "primary_poc": if data.get("am_poc", False): + try: + request_user_info = self.existing_request.body.get("information_about_you", {}) + except AttributeError: + request_user_info = {} + data = { **data, "dodid_poc": self.current_user.dod_id, - "fname_poc": self.current_user.first_name, - "lname_poc": self.current_user.last_name, - "email_poc": self.current_user.email, + "fname_poc": request_user_info.get( + "fname_request", self.current_user.first_name + ), + "lname_poc": request_user_info.get( + "lname_request", self.current_user.last_name + ), + "email_poc": request_user_info.get( + "email_request", self.current_user.email + ), } return {section: data} diff --git a/tests/assert_util.py b/tests/assert_util.py new file mode 100644 index 00000000..3df664b1 --- /dev/null +++ b/tests/assert_util.py @@ -0,0 +1,5 @@ +def dict_contains(superset, subset): + """ + Returns True if dict a is a superset of dict b. + """ + return all(item in superset.items() for item in subset.items()) diff --git a/tests/routes/test_request_new.py b/tests/routes/test_request_new.py index dd4f926c..e606089d 100644 --- a/tests/routes/test_request_new.py +++ b/tests/routes/test_request_new.py @@ -4,6 +4,7 @@ from atst.domain.roles import Roles from atst.domain.requests import Requests from urllib.parse import urlencode +from tests.assert_util import dict_contains ERROR_CLASS = "alert--error" @@ -161,6 +162,32 @@ def test_poc_details_can_be_autopopulated_on_new_request(client, user_session): assert request.body["primary_poc"]["dodid_poc"] == creator.dod_id +def test_poc_autofill_checks_information_about_you_form_first(client, user_session): + creator = UserFactory.create() + user_session(creator) + request = RequestFactory.create(creator=creator, body={ + "information_about_you": { + "fname_request": "Alice", + "lname_request": "Adams", + "email_request": "alice.adams@mail.mil" + } + }) + poc_input = { + "am_poc": "yes", + } + client.post( + "/requests/new/3/{}".format(request.id), + headers={"Content-Type": "application/x-www-form-urlencoded"}, + data=urlencode(poc_input), + ) + request = Requests.get(request.id) + assert dict_contains(request.body["primary_poc"], { + "fname_poc": "Alice", + "lname_poc": "Adams", + "email_poc": "alice.adams@mail.mil" + }) + + def test_can_review_data(user_session, client): creator = UserFactory.create() user_session(creator)