Skip to content

Commit 6b1ac25

Browse files
Add tests for internal notes update in grants recap
Add two tests to verify the internal notes functionality: - test_save_review_grants_updates_internal_notes: Tests that notes can be added, updated, and cleared - test_save_review_grants_does_not_update_unchanged_internal_notes: Tests that unchanged notes don't trigger unnecessary DB writes Co-authored-by: Ester Beltrami <[email protected]>
1 parent 257df96 commit 6b1ac25

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

backend/reviews/tests/test_admin.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,3 +723,105 @@ def test_save_review_grants_two_times_does_not_create_duplicate_log_entries(rf,
723723
object_id=grant_1.id,
724724
change_message="[Review Session] Pending status changed from 'None' to 'approved'.",
725725
).exists()
726+
727+
728+
def test_save_review_grants_updates_internal_notes(rf, mocker):
729+
mocker.patch("reviews.admin.messages")
730+
731+
user = UserFactory(is_staff=True, is_superuser=True)
732+
conference = ConferenceFactory()
733+
734+
# Create review session for grants
735+
review_session = ReviewSessionFactory(
736+
conference=conference,
737+
session_type=ReviewSession.SessionType.GRANTS,
738+
status=ReviewSession.Status.COMPLETED,
739+
)
740+
AvailableScoreOptionFactory(review_session=review_session, numeric_value=0)
741+
AvailableScoreOptionFactory(review_session=review_session, numeric_value=1)
742+
743+
# Create grants with different initial internal_notes
744+
grant_1 = GrantFactory(
745+
conference=conference, status=Grant.Status.pending, internal_notes=""
746+
)
747+
grant_2 = GrantFactory(
748+
conference=conference,
749+
status=Grant.Status.pending,
750+
internal_notes="Existing notes",
751+
)
752+
grant_3 = GrantFactory(
753+
conference=conference,
754+
status=Grant.Status.pending,
755+
internal_notes="Notes to clear",
756+
)
757+
758+
# Build POST data with notes updates
759+
post_data = {
760+
f"decision-{grant_1.id}": Grant.Status.pending,
761+
f"notes-{grant_1.id}": "New notes for grant 1",
762+
f"decision-{grant_2.id}": Grant.Status.pending,
763+
f"notes-{grant_2.id}": "Updated notes for grant 2",
764+
f"decision-{grant_3.id}": Grant.Status.pending,
765+
f"notes-{grant_3.id}": "", # Clear notes
766+
}
767+
768+
request = rf.post("/", data=post_data)
769+
request.user = user
770+
771+
admin = ReviewSessionAdmin(ReviewSession, AdminSite())
772+
response = admin._review_grants_recap_view(request, review_session)
773+
774+
# Should redirect after successful save
775+
assert response.status_code == 302
776+
777+
# Refresh grants from database
778+
grant_1.refresh_from_db()
779+
grant_2.refresh_from_db()
780+
grant_3.refresh_from_db()
781+
782+
# Verify internal notes were updated
783+
assert grant_1.internal_notes == "New notes for grant 1"
784+
assert grant_2.internal_notes == "Updated notes for grant 2"
785+
assert grant_3.internal_notes == ""
786+
787+
788+
def test_save_review_grants_does_not_update_unchanged_internal_notes(rf, mocker):
789+
mocker.patch("reviews.admin.messages")
790+
791+
user = UserFactory(is_staff=True, is_superuser=True)
792+
conference = ConferenceFactory()
793+
794+
# Create review session for grants
795+
review_session = ReviewSessionFactory(
796+
conference=conference,
797+
session_type=ReviewSession.SessionType.GRANTS,
798+
status=ReviewSession.Status.COMPLETED,
799+
)
800+
AvailableScoreOptionFactory(review_session=review_session, numeric_value=0)
801+
AvailableScoreOptionFactory(review_session=review_session, numeric_value=1)
802+
803+
# Create grant with existing notes
804+
grant_1 = GrantFactory(
805+
conference=conference,
806+
status=Grant.Status.pending,
807+
internal_notes="Existing notes",
808+
)
809+
810+
# Submit the same notes (no change)
811+
post_data = {
812+
f"decision-{grant_1.id}": Grant.Status.pending,
813+
f"notes-{grant_1.id}": "Existing notes",
814+
}
815+
816+
request = rf.post("/", data=post_data)
817+
request.user = user
818+
819+
admin = ReviewSessionAdmin(ReviewSession, AdminSite())
820+
response = admin._review_grants_recap_view(request, review_session)
821+
822+
assert response.status_code == 302
823+
824+
grant_1.refresh_from_db()
825+
826+
# Notes should remain unchanged
827+
assert grant_1.internal_notes == "Existing notes"

0 commit comments

Comments
 (0)