From d59de15deb4d7f2d4dd831643e2b02beb7cf2211 Mon Sep 17 00:00:00 2001 From: djnunez-aot <103138766+djnunez-aot@users.noreply.github.com> Date: Fri, 8 Sep 2023 12:46:21 -0400 Subject: [PATCH] Save engagement notification message (#2126) * only display engagement metadata notification if it is not the inital creation * update code smells * remove unused variable * remove undo variable removal * add boolean to update engagement function * update typing for engagement metadata request * remove engagement metadata notification modals --- met-api/tests/unit/api/test_submission.py | 62 ++++++++++++------- .../tests/unit/services/test_submission.py | 24 ++++--- .../engagement/form/ActionContext.tsx | 2 - .../EngagementFormTabs/EngagementForm.tsx | 7 --- 4 files changed, 57 insertions(+), 38 deletions(-) diff --git a/met-api/tests/unit/api/test_submission.py b/met-api/tests/unit/api/test_submission.py index ad3c93f8b..e73d3adfb 100644 --- a/met-api/tests/unit/api/test_submission.py +++ b/met-api/tests/unit/api/test_submission.py @@ -61,7 +61,8 @@ def test_get_submission_by_id(client, jwt, session, submission_info): # pylint: submission = factory_submission_model( survey.id, eng.id, participant.id, submission_info) headers = factory_auth_header(jwt=jwt, claims=claims) - rv = client.get(f'/api/submissions/{submission.id}', headers=headers, content_type=ContentType.JSON.value) + rv = client.get(f'/api/submissions/{submission.id}', + headers=headers, content_type=ContentType.JSON.value) assert rv.status_code == 200 assert rv.json.get('submission_json', None) is None @@ -77,7 +78,8 @@ def test_get_submission_page(client, jwt, session, submission_info): # pylint:d survey.id, eng.id, participant.id, submission_info) factory_comment_model(survey.id, submission.id) headers = factory_auth_header(jwt=jwt, claims=claims) - rv = client.get(f'/api/submissions/survey/{survey.id}', headers=headers, content_type=ContentType.JSON.value) + rv = client.get(f'/api/submissions/survey/{survey.id}', + headers=headers, content_type=ContentType.JSON.value) assert rv.status_code == 200 assert rv.json.get('items', [])[0].get('submission_json', None) is None @@ -92,16 +94,20 @@ def test_get_comment_filtering(client, jwt, session): # pylint:disable=unused-a factory_comment_model(survey.id, submission.id) claims = TestJwtClaims.public_user_role headers = factory_auth_header(jwt=jwt, claims=claims) - rv = client.get(f'/api/submissions/survey/{survey.id}', headers=headers, content_type=ContentType.JSON.value) + rv = client.get(f'/api/submissions/survey/{survey.id}', + headers=headers, content_type=ContentType.JSON.value) assert rv.status_code == 200 - assert len(rv.json.get('items')) == 0, 'Public user cant see unapproved comments' + assert len(rv.json.get('items') + ) == 0, 'Public user cant see unapproved comments' claims = TestJwtClaims.staff_admin_role headers = factory_auth_header(jwt=jwt, claims=claims) - rv = client.get(f'/api/submissions/survey/{survey.id}', headers=headers, content_type=ContentType.JSON.value) + rv = client.get(f'/api/submissions/survey/{survey.id}', + headers=headers, content_type=ContentType.JSON.value) assert rv.status_code == 200 assert rv.json.get('items', [])[0].get('submission_json', None) is None - assert len(rv.json.get('items')) == 1, 'Admin user can see unapproved comments' + assert len(rv.json.get('items') + ) == 1, 'Admin user can see unapproved comments' # add new approved comment claims = TestJwtClaims.public_user_role @@ -109,42 +115,52 @@ def test_get_comment_filtering(client, jwt, session): # pylint:disable=unused-a survey.id, eng.id, participant.id, TestSubmissionInfo.approved_submission) factory_comment_model(survey.id, submission_approved.id) headers = factory_auth_header(jwt=jwt, claims=claims) - rv = client.get(f'/api/submissions/survey/{survey.id}', headers=headers, content_type=ContentType.JSON.value) + rv = client.get(f'/api/submissions/survey/{survey.id}', + headers=headers, content_type=ContentType.JSON.value) assert rv.status_code == 200 - assert len(rv.json.get('items')) == 1, 'Public user can see approved comments' + assert len(rv.json.get('items') + ) == 1, 'Public user can see approved comments' claims = TestJwtClaims.staff_admin_role headers = factory_auth_header(jwt=jwt, claims=claims) - rv = client.get(f'/api/submissions/survey/{survey.id}', headers=headers, content_type=ContentType.JSON.value) + rv = client.get(f'/api/submissions/survey/{survey.id}', + headers=headers, content_type=ContentType.JSON.value) assert rv.status_code == 200 - assert len(rv.json.get('items')) == 2, 'Admin user can see unapproved and unapproved comments' + assert len(rv.json.get('items') + ) == 2, 'Admin user can see unapproved and unapproved comments' # create membership for the reviewer user and see user = factory_staff_user_model() - factory_membership_model(user_id=user.id, engagement_id=eng.id, member_type=MembershipType.REVIEWER.name) + factory_membership_model( + user_id=user.id, engagement_id=eng.id, member_type=MembershipType.REVIEWER.name) claims = copy.deepcopy(TestJwtClaims.reviewer_role.value) claims['sub'] = str(user.external_id) headers = factory_auth_header(jwt=jwt, claims=claims) - rv = client.get(f'/api/submissions/survey/{survey.id}', headers=headers, content_type=ContentType.JSON.value) + rv = client.get(f'/api/submissions/survey/{survey.id}', + headers=headers, content_type=ContentType.JSON.value) assert rv.status_code == 200 - assert len(rv.json.get('items')) == 1, 'Reviewer with reviewer team membership can see only approved comments' + assert len(rv.json.get( + 'items')) == 1, 'Reviewer with reviewer team membership can see only approved comments' # create membership for the team member and see user = factory_staff_user_model() - factory_membership_model(user_id=user.id, engagement_id=eng.id, member_type=MembershipType.TEAM_MEMBER.name) + factory_membership_model( + user_id=user.id, engagement_id=eng.id, member_type=MembershipType.TEAM_MEMBER.name) claims = copy.deepcopy(TestJwtClaims.team_member_role.value) claims['sub'] = str(user.external_id) headers = factory_auth_header(jwt=jwt, claims=claims) - rv = client.get(f'/api/submissions/survey/{survey.id}', headers=headers, content_type=ContentType.JSON.value) + rv = client.get(f'/api/submissions/survey/{survey.id}', + headers=headers, content_type=ContentType.JSON.value) assert rv.status_code == 200 - assert len(rv.json.get('items')) == 2, 'Team Member with team membership can see unapproved and unapproved comments' + assert len(rv.json.get( + 'items')) == 2, 'Team Member with team membership can see unapproved and unapproved comments' def test_invalid_submission(client, jwt, session): # pylint:disable=unused-argument """Assert that an engagement can be POSTed.""" claims = TestJwtClaims.public_user_role - survey, eng = factory_survey_and_eng_model() + survey, _ = factory_survey_and_eng_model() email_verification = factory_email_verification(survey.id) to_dict = { 'blah': str(survey.id), @@ -203,7 +219,11 @@ def test_advanced_search_submission(client, jwt, session, submission_info): # p assert len(rv.json.get('items', [])) == 1 fetched_submission = rv.json.get('items')[0] - assert fetched_submission.get('comment_status_id') == submission_approved.comment_status_id - assert fetched_submission.get('reviewed_by') == submission_approved.reviewed_by - assert fetched_submission.get('created_date') == submission_approved.created_date.strftime(DATE_FORMAT) - assert fetched_submission.get('review_date') == submission_approved.review_date.strftime(DATE_FORMAT) + assert fetched_submission.get( + 'comment_status_id') == submission_approved.comment_status_id + assert fetched_submission.get( + 'reviewed_by') == submission_approved.reviewed_by + assert fetched_submission.get( + 'created_date') == submission_approved.created_date.strftime(DATE_FORMAT) + assert fetched_submission.get( + 'review_date') == submission_approved.review_date.strftime(DATE_FORMAT) diff --git a/met-api/tests/unit/services/test_submission.py b/met-api/tests/unit/services/test_submission.py index b0ab2783a..cb9dcbc3d 100644 --- a/met-api/tests/unit/services/test_submission.py +++ b/met-api/tests/unit/services/test_submission.py @@ -41,8 +41,10 @@ def test_create_submission(session): # pylint:disable=unused-argument 'participant_id': participant.id, 'verification_token': email_verification.verification_token, } - submission = SubmissionService().create(email_verification.verification_token, submission_request) - actual_email_verification = EmailVerificationService().get(email_verification.verification_token) + submission = SubmissionService().create( + email_verification.verification_token, submission_request) + actual_email_verification = EmailVerificationService().get( + email_verification.verification_token) assert submission is not None assert actual_email_verification['is_active'] is False @@ -66,7 +68,8 @@ def test_create_submission_rollback(session): # pylint:disable=unused-argument SubmissionService().create(email_verification.verification_token, submission_request) except ValueError: mock.assert_called() - actual_email_verification = EmailVerificationService().get(email_verification.verification_token) + actual_email_verification = EmailVerificationService().get( + email_verification.verification_token) assert actual_email_verification['is_active'] is True @@ -76,12 +79,14 @@ def test_review_comment(client, jwt, session, monkeypatch): # pylint:disable=un admin_user = factory_staff_user_model(3) participant = factory_participant_model() survey, eng = factory_survey_and_eng_model() - submission = factory_submission_model(survey.id, eng.id, participant.id) + submission = factory_submission_model( + survey.id, eng.id, participant.id) factory_comment_model(survey.id, submission.id) reasons = { 'status_id': 2, } - submission_record = SubmissionService().review_comment(submission.id, reasons, admin_user.external_id) + submission_record = SubmissionService().review_comment( + submission.id, reasons, admin_user.external_id) assert submission_record.get('comment_status_id') == 2 @@ -97,7 +102,8 @@ def test_auto_approval_of_submissions_without_comment(session): # pylint:disabl 'participant_id': participant.id, 'verification_token': email_verification.verification_token, } - submission = SubmissionService().create(email_verification.verification_token, submission_request) + submission = SubmissionService().create( + email_verification.verification_token, submission_request) assert submission is not None assert submission.comment_status_id == Status.Approved.value @@ -116,7 +122,8 @@ def test_submissions_with_comment_are_not_auto_approved(session): # pylint:disa 'participant_id': participant.id, 'verification_token': email_verification.verification_token, } - submission = SubmissionService().create(email_verification.verification_token, submission_request) + submission = SubmissionService().create( + email_verification.verification_token, submission_request) assert submission is not None assert submission.comment_status_id == Status.Pending.value @@ -138,7 +145,8 @@ def test_check_if_submission_can_handle_multiple_comments(session): 'verification_token': email_verification.verification_token, } - submission = SubmissionService().create(email_verification.verification_token, submission_request) + submission = SubmissionService().create( + email_verification.verification_token, submission_request) submission_json = submission.submission_json # Assert that the function returns True since there is a comment in a text field that starts with 'simpletextfield2' diff --git a/met-web/src/components/engagement/form/ActionContext.tsx b/met-web/src/components/engagement/form/ActionContext.tsx index 3b1b428db..e9777420b 100644 --- a/met-web/src/components/engagement/form/ActionContext.tsx +++ b/met-web/src/components/engagement/form/ActionContext.tsx @@ -160,7 +160,6 @@ export const ActionProvider = ({ children }: { children: JSX.Element }) => { setSaving(true); try { const result = await postEngagementMetadata(engagement); - dispatch(openNotification({ severity: 'success', text: 'Engagement Metadata Created Successfully' })); setSaving(false); return Promise.resolve(result); } catch (error) { @@ -272,7 +271,6 @@ export const ActionProvider = ({ children }: { children: JSX.Element }) => { engagement_id: Number(engagementId), }); setEngagementMetadata(updatedEngagementMetadata); - dispatch(openNotification({ severity: 'success', text: 'Engagement metadata saved successfully' })); return Promise.resolve(updatedEngagementMetadata); } catch (error) { dispatch(openNotification({ severity: 'error', text: 'Error saving engagement metadata' })); diff --git a/met-web/src/components/engagement/form/EngagementFormTabs/EngagementForm.tsx b/met-web/src/components/engagement/form/EngagementFormTabs/EngagementForm.tsx index a1b654e33..67c809dbd 100644 --- a/met-web/src/components/engagement/form/EngagementFormTabs/EngagementForm.tsx +++ b/met-web/src/components/engagement/form/EngagementFormTabs/EngagementForm.tsx @@ -19,10 +19,8 @@ const EngagementForm = () => { handleCreateEngagementRequest, handleUpdateEngagementRequest, handleCreateEngagementMetadataRequest, - handleUpdateEngagementMetadataRequest, isSaving, savedEngagement, - engagementId, handleAddBannerImage, } = useContext(ActionContext); @@ -171,11 +169,6 @@ const EngagementForm = () => { status_block: surveyBlockList, }); - await handleUpdateEngagementMetadataRequest({ - ...engagementFormData, - engagement_id: Number(engagementId), - }); - navigate(`/engagements/${engagement.id}/form`); return savedEngagement;