Skip to content

Commit

Permalink
Save engagement notification message (#2126)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
djnunez-aot authored Sep 8, 2023
1 parent c463c12 commit d59de15
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 38 deletions.
62 changes: 41 additions & 21 deletions met-api/tests/unit/api/test_submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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

Expand All @@ -92,59 +94,73 @@ 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
submission_approved = factory_submission_model(
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),
Expand Down Expand Up @@ -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)
24 changes: 16 additions & 8 deletions met-api/tests/unit/services/test_submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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


Expand All @@ -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


Expand All @@ -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
Expand All @@ -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
Expand All @@ -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'
Expand Down
2 changes: 0 additions & 2 deletions met-web/src/components/engagement/form/ActionContext.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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' }));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,8 @@ const EngagementForm = () => {
handleCreateEngagementRequest,
handleUpdateEngagementRequest,
handleCreateEngagementMetadataRequest,
handleUpdateEngagementMetadataRequest,
isSaving,
savedEngagement,
engagementId,
handleAddBannerImage,
} = useContext(ActionContext);

Expand Down Expand Up @@ -171,11 +169,6 @@ const EngagementForm = () => {
status_block: surveyBlockList,
});

await handleUpdateEngagementMetadataRequest({
...engagementFormData,
engagement_id: Number(engagementId),
});

navigate(`/engagements/${engagement.id}/form`);

return savedEngagement;
Expand Down

0 comments on commit d59de15

Please sign in to comment.